SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

40
SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla

Transcript of SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Page 1: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

SQL

MC Beatriz Beltrán Martínez

Benemérita Universidad Autónoma de Puebla

Page 2: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Antecedentes• IBM desarrolló la versión original (Laboratorio de

Investigación de San José).• Originalmente se llamó Sequel, a principios de

1970.• En 1986, ANSI e ISO publicaron una norma SQL.

– SQL-86– SQL corporativo– SQL-89– SQL-92– SQL:1999

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 2

Page 3: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Componentes• Se tienen los siguientes componentes:

– Lenguaje de Definición de Datos (DDL): Proporciona órdenes para la definición de esquemas de relación, borrado de relaciones, creación de índices y modificación de esquemas.

– Lenguaje Interactivo de Manipulación de Datos (DML): Incluye un lenguaje de consultas basado en el álgebra y cálculo relacional. Incluye el borrado, insertado y modificación de tuplas.

– Definición de vista: Instrucciones básicas para definir vistas.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 3

Page 4: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Componentes– Control de transacciones: Se tienen órdenes

para la especificación del comienzo y final de transacciones.

– SQL dinámico y SQL incorporado: Define cómo se pueden incorporar las instrucciones SQL en lenguajes de propósito general.

– Integridad: El DDL incluye órdenes para especificar restricciones de integridad que deba satisfacer la DB.

– Autorización: Se tienen órdenes para especificar los derechos de acceso para las relaciones y vistas.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 4

Page 5: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples

•Comando para mostrar la versión de MySQL:– Select version();

•Comando para mostrar fecha actual:– Select current_date;

•Se puede tener en una sola línea varios comandos, separados por coma (solo se incluye el comando select en el primer comando):

– Select version(), current_date;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 5

Page 6: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• En SQL no se hace diferencia entre mayúsculas y

minúsculas.• Comando para mostrar fecha y hora:

– Select now(); • Se permiten declaraciones en diferentes líneas, con

lo cual quedaría:mysql> select

-> now() -> , -> current_date;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 6

Page 7: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• Comando que muestra usuario actual:

– Select user();• Para cancelar una declaración se tiene:

– \c

• Para mostrar las bases de datos existentes:– Show databases;

• Para usar una base de datos:– Use nombre_db

• En este comando no es necesario el punto y coma.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 7

Page 8: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples

•Comando para crear una base de datos:– Create database [if not exists] nombre_db;

•El crear la base de datos no implica que ya se puede utilizar, para esto se hace uso del comando use.•Lo que se ha creado es una base de datos vacía.•Comando para mostrar las tablas que existen en una base de datos:

– Show tables;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 8

Page 9: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• Comando para crear una tabla:

– Create table [if not exists] nom_tabla (nom_atrib tipo [, ...]);

• Comando para verificar la declaración de la tabla:– Describe nom_tabla;

• Para las fechas se guarda con el formato: yyyy-mm-dd.

• Se puede guardar la información dentro de un archivo de texto.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 9

Page 10: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• El archivo de texto debe tener un registro por cada

línea.• Cada valor de atributo se separa con un tabulador,

en el mismo orden en el que están definidos en la tabla.

• Se pueden usar valores NULOS dentro del archivo de texto haciendo uso del carácter \N.

• Comando para leer el archivo en la tabla:– Load data local infile “nom_arch" into table

nom_tabla;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 10

Page 11: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• NOTA: El uso de archivos no esta disponible en

todas las versiones.

• Comando para agregar un solo registro:– Insert into nom_tabla values (atrib [, ...]);

• Para valores nulos utilizar NULL.• El orden de los atributos deben ser igual a como fue

definida en la tabla.• Tanto las cadenas como las fechas se colocan entre

comillas.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 11

Page 12: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• Para agregar un nuevo atributo dentro de una tabla:

– Alter table nom_tabla add nom_atrib tipo [first | after nom_atrib];

• Si la tabla contiene información, el nuevo atributo se llenará con NULL.

• Para cambiar alguno de estos valores nulos se usa:

– Update nom_tabla set nom_atrib = expresion [, ...] [condicion]

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 12

Page 13: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• Si no se da una condición, el cambio al atributo es a

todas las tuplas.• La condición permite que realice un cambio sobre

una tupla en particular.• Alter permite cambiar la estructura de las

relaciones.• Update permite cambiar los valores de tuplas en

cada atributo.• Para eliminar un atributo:

– Alter table nom_tabla drop nom_atrib;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 13

Page 14: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Consultas simples• Para eliminar una base de datos:

– Drop database nom_bd;• Para eliminar una tabla en particular:

– Drop table nom_tabla;• Para renombrar una tabla:

– Rename table nom_ant to nom_new;• Para eliminar filas de una tabla:

– Delete from nom_tabla where condicion;• Si no se le da una condición borra toda la tabla.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 14

Page 15: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básica

•Una Base de Datos consiste de un conjunto de relaciones a las que a cada una se les asigna un nombre único.

•Se permite el uso de valores nulos, para indicar que no se conoce el valor o que es desconocido.

•La estructura básica de una expresión consiste de tres cláusulas: select, from y where.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 15

Page 16: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básica• La cláusula select corresponde a la operación

proyección. Se usa para seleccionar atributos en particular.

• La cláusula from corresponde a la operación producto cartesiano, y lista las relaciones que deben ser analizadas en la evaluación.

• La cláusula where corresponde al predicado selección. Es un predicado que engloba a los atributos de las relaciones que aparecen en la cláusula from.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 16

Page 17: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básica• Una consulta típica en SQL es:

Select A1, A2, ..., An

From r1, r2, ..., rm

Where P– Cada Ai representa un atributo– Cada ri una relación– P es un predicado

• Su equivalente: A1, A2, ..., An(P(r1 r2 ... rm))

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 17

Page 18: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básica• Si se omite la cláusula where, el predicado P es

cierto.

• Se pueden tener tuplas repetidas.

• SQL forma el producto cartesiano de las relaciones incluidas en from, se lleva a cabo la selección (where) y entonces se proyecta el resultado sobre los atributos mostrados en select.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 18

Page 19: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básicaSelect• Para eliminar duplicados:

– Distinct• Para especificar explícitamente que no se eliminen

las tuplas repetidas:– All

• El símbolo “*” se puede utilizar para denotar todos los atributos.

• Select puede contener expresiones aritméticas con las operadores básicos operando sobre constantes o atributos de tuplas.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 19

Page 20: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básicaWhere• Puede tener un predicado simple usando los

operadores de comparación:– <, <=, >, >=, =, <>

• Se puede tener un predicado con conectores:– Not, and, or

• Se incluye un operador de comparación, que significa que un valor sea menor o igual que un valor y mayor igual que otro valor o negándolo, usando:– Between valor1 and valor2;– Not Between valor1 and valor2;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 20

Page 21: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básicaFrom• Se define el producto cartesiano.• Para realizar una reunión natural, se define en

términos del producto cartesiano, una selección y una proyección.

• Se hace uso de para evitar ambigüedad:– Nombre_relación.Nombre_atributo

• Cuando no hay ambigüedad, se puede usar o no la forma anterior.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 21

Page 22: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básica• Supóngase que existe un error en un atributo en

particular de alguna tupla, se puede hacer de dos formas:– Editar el archivo, corrigiéndolo después

eliminando todas tuplas y finalmente cargando de nueva cuenta la tabla con el archivo.

– Corregir el atributo erróneo, haciendo uso del comando update.

• En el primero, se puede realizar siempre y cuando no se hayan introducido nuevos valores mediante el uso de insert into.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 22

Page 23: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Estructura básica• Al hacer uso del comando update, se debe utilizar

con una restricción, de otra forma se cambiaran todos los valores del atributo que se da en todas las tuplas.

• Primera forma:mysql> delete from nom_tabla;mysql> load data local infile “nom_arch" into table nom_tabla;

• Segunda forma:mysql> update nom_tabla set atrib = valor where condicion;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 23

Page 24: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Renombrar• Se tiene un mecanismo para renombrar:

– Nombre_antiguo as Nombre_nuevo• La cláusulas as puede aparecer tanto en select

como en from.• La cláusula as, es útil en la definición de variable de

tupla. Una variable de tupla se debe asociar con una relación concreta.

• Las variables de tuplas se definen en la cláusula from, mediante el uso de as.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 24

Page 25: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Cadenas• Las cadenas se encierran entre comillas simples o

dobles.

• Si una comilla es parte de la cadena se usa con dos caracteres de comilla:

– ‘El carácter ‘’ se puede ver en la cadena’

• La operación más utilizada sobre cadena es el encaje de patrones, y se usa

– Where atrib like patroncadena.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 25

Page 26: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Cadenas• Para la utilización de patrones se usan los

caracteres especiales:– Tanto por ciento (%): Encaja con cualquier

subcadena.– Subrayado (_): Encaja con cualquier carácter.

• El usar el subrayado n-veces encaja con una cadena de n-caracteres.

• Se permite la especificación de un carácter de escape.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 26

Page 27: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Cadenas• El carácter de escape se utiliza antes del carácter

especial patrón para indicar que ese carácter va a ser tratado como carácter normal.

• El carácter escape para la comparación like se define utilizando la palabra clave escape.

• Se usa la barra invertida (\) como carácter de escape.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 27

Page 28: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Cadenas• Para su uso se tiene:

– like ‘ab\%cd%’ escape ’\’ : Encaja con todas las cadenas que empiezan con ab%cd

– like ‘ab\\cd%’ escape ’\’ : Encaja con todas las cadenas que empiezan con ab\cd

• Se permite también las discordancias, utilizando el operador:– Where atrib not like patroncadena.

• La concatenación se lleva a cabo con el uso de: “||”.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 28

Page 29: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Orden• Se pueden tener distintos órdenes sobre el que se

presentan las tuplas de una relación, mediante el uso de la cláusula:

– Order by atrib [asc | desc];

• De manera predeterminada se listan en forma ascendente, lo cual se puede cambiar:

– Desc de forma descendente

– Asc de forma ascendente

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 29

Page 30: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Otras operaciones• La operación unión del álgebra relacional se lleva a

cabo por medio de la cláusula:– Sentencia union [all] sentencia;

• La operación intersección del álgebra relacional no esta implementada, pero se puede realizar:– Select tabla1.atrib from tabla1 join tabla2 where

tabla1.atrib = tabla2.atrib;• La operación diferencia no esta implementada.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 30

Page 31: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Funciones de agregación• Las funciones de agregación toman una colección

de valores como entrada y producen un único valor como salida, entre las funciones que se tienen:– Media: Avg (nom_atrib)– Mínimo: Min (nom_atrib)– Máximo: Max (nom_atrib)– Total: Sum (nom_atrib)– Cuenta: Count (nom_atrib)

• El atributo al que se le aplica la función se puede renombrar usando as.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 31

Page 32: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Funciones de agregación• La entrada sum y avg deben ser numéricas.• Los demás operadores puede operar sobre

colecciones de datos de tipo no numérico.• Las funciones de agregación se pueden aplicar a

grupos de conjuntos al final de la sentencia, haciendo uso de:– Group by nom_atrib;

• Cuando se requieren establecer condiciones a grupos de tuplas, se hace uso de:– Having condicion;

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 32

Page 33: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Funciones de agregación• En una misma consulta se puede tener la cláusula

where y having al mismo tiempo, donde primero se aplica el predicado de la cláusula where.

• Las tuplas que satisfacen la cláusula where, se colocan en grupos según group by, y finalmente se aplica la cláusula having a cada grupo.

• Los grupos que no satisfacen el predicado de la cláusula having son eliminados.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 33

Page 34: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Valores nulos• Se permite el uso de valores nulos para indicar falta

de información.

• Se puede preguntar por aquellos valores sean nulos, en la sentencia where:

– Is null

• Y para preguntar por la ausencia de un valor nulo se usa:

– Is not null

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 34

Page 35: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Valores nulos• En comparaciones se tiene:

– Se trata como desconocido, el resultado de cualquier comparación que implique un valor nulo.

• En comparaciones booleanas se trata:– Cierto y desconocido : desconocido.– Falso y desconocido : falso.– Desconocido y/o desconocido : desconocido.– Cierto o desconocido : cierto.– Falso o desconocido : desconocido.– No desconocido : desconocido.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 35

Page 36: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Fechas• Se puede calcular mediante una fecha distintos

datos.– Select nom_atrib, [nom_atrib, ...] (year (curdate

()) – year (nom_atrib_date)) – ((right (curdate (), 5) < (right (nom_atrib_date, 5))) [as nombre] from tabla;

• La función year(), devuelve la parte del año dentro de una fecha.

• La función right() quita los primeros n caracteres de más a la derecha.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 36

Page 37: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Fechas• También puede obtenerse el mes dentro de una

fecha mediante la función:– Month()

• Finalmente se puede obtener el día dentro de la fecha, mediante:– Dayofmonth()

• Incluso estas funciones pueden ser utilizadas dentro sentencias de tipo de restricción (where).

• La función date_add (fecha, interval tiempo tipo) agrega un intervalo de tiempo.

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 37

Page 38: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Tipos de Datos

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 38

Tipo de Datos Longitud Descripción

BINARY 1 bytePara consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario. 

BIT 1 byte Valores Si/No ó True/False 

BYTE 1 byte Un valor entero entre 0 y 255.

COUNTER 4 bytesUn número incrementado automáticamente (de tipo Long)

CURRENCY 8 bytesUn entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807.

DATETIME 8 bytes Un valor de fecha u hora entre los años 100 y 9999.

SINGLE 4 bytes

Un valor en punto flotante de precisión simple con un rango de -3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10-45 a 3.402823*1038 para valores positivos, y 0.

Page 39: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Tipos de Datos

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 39

Tipo de Datos Longitud Descripción

DOUBLE 8 bytes

Un valor en punto flotante de doble precisión con un rango de -1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, y 0.

SHORT 2 bytes Un entero corto entre -32,768 y 32,767.

LONG 4 bytes Un entero largo entre -2,147,483,648 y 2,147,483,647.

LONGTEXT1 byte por carácter

De cero a un máximo de 1.2 gigabytes.

LONGBINARYSegún se necesite

De cero 1 gigabyte.  Utilizado para objetos OLE.

TEXT1 byte por caracter

De cero a 255 caracteres. 

Page 40: SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.

Ejemplo

MC Beatriz Beltrán Martínez FCC - BUAP Verano 2015 40

Nombre-sucursal

Ciudad-sucursal

Activos

Numero-cuenta

Nombre-sucursal

Saldo

Nombre-cliente

Numero-cuenta

Nombre-cliente

Calle-cliente

Ciudad-clienteNombre-cliente

Numero-prestamo

Numero-prestamo

Nombre-sucursal

importe

sucursal cuentaimpositor

cliente

prestatarioprestamo