Você está na página 1de 44

SQL

SQL. Orgenes y Evolucin

16:05:37

scar Marbn Gallego Marb

SQL: Estndar oficial

16:05:37

scar Marbn Gallego Marb

Funciones de SQL
DDL Data Definition Language
Creacin de estructuras de la base de datos Integridad de los datos

DML Data Manipulation Language


Recuperacin de datos Manipulacin de datos

DCL Data Control Language


Control de acceso Comparticin de datos
16:05:37 scar Marbn Gallego Marb 4

Roles de SQL
1/30/2006

Herramientas de programacin
1/30/2006 Subtitle

Formularios

Informes

Herramientas de consulta

Programa de aplicacin

Cliente de la Base de Datos

SQL

SQL

SQL

SQL

SQL

Motor de base de datos

Sistemas Informticos

Base de Datos Gateway

Otros SGBD

Base datos
16:05:37 scar Marbn Gallego Marb 5

Invocacin de SQL
Invocacin directa o interactiva
La sentencia es invocada desde el terminal Los datos devueltos se presentan en pantalla El resultado puede ser
Un valor Una lista de valores Una tabla Vaco

Invocacin desde programa


La sentencia se invoca como parte de la ejecucin del programa Los datos devueltos se recogen en una rea de entrada del programa
16:05:37 scar Marbn Gallego Marb 6

Ventajas de SQL
Independencia de los fabricantes Portabilidad a cualquier tipo de plataforma SQL est estandarizado Basado en el modelo relacional Lenguaje de alto nivel Consultas interactivas ad-hoc Utilizacin en Lenguaje de programacin Mltiples vistas de los datos Lenguaje de base de datos Definicin dinmica de datos Arquitectura cliente/servidor

16:05:37

scar Marbn Gallego Marb

Tipos de datos
CHARACTER (n) CHARACTER VARYING(n) BIT(n) BIT VARYING(n) INTEGER SMALLINT NUMERIC(p,q) DECIMAL(p, q) FLOAT(p) Date: YYYY-MM-DD Time: HH:MM:SS Time(i): i+1 posiciones para fracciones de segundo. Time with time zone: desplazamiento con respecto a la hora universal. Timestamp: incluye da y hora. Interval: un intervalo que se puede usar para incrementar o decrementar valores.

16:05:37

scar Marbn Gallego Marb

Creacin de dominios
Los dominios se pueden utilizar como tipos de datos Permite cambiar el tipo simultneamente a varios atributos CREATE DOMAIN dominio [AS] tipo-datos [DEFAULT valor_defecto] [CHECK condicion]

CREATE DOMAIN ciudades AS CHAR(15) DEFAULT ???

16:05:37

scar Marbn Gallego Marb

Operadores
Comparacin
=, <>, <, >, <=, >=, IS NULL

Lgicos
AND, OR, NOT

Intervalos
BETWEEN AND
BETWEEN 90 AND 95

Cadenas de texto
LIKE
nombre LIKE %mou%

Conjuntos
IN
color IN (Color, PAL-Color)
16:05:37 scar Marbn Gallego Marb 10

Creacin de tablas
Se utiliza el comando CREATE TABLE Se especifican los atributos de la relacin y sus tipos Se especifica la clave primaria Se especifica las restricciones de integridad Se especifica la integridad referencial
16:05:37 scar Marbn Gallego Marb 11

CREATE TABLE nombre_tabla ( nombre_columna tipo_columna restricciones_columna, , restricciones_tabla )

Al crear la tabla se puede indicar el esquema en el que se crea


nombre_esquema.nombre_tabla

Restricciones de columna
UNIQUE NOT NULL DEFAULT <valor_por_defecto> CHECK (condicion) PRIMARY KEY REFERENCES nombre_tabla(nombre_atributo) accion_referencial
16:05:37 scar Marbn Gallego Marb 12

Restricciones de tabla
UNIQUE (nombre_atributo, ) PRIMARY KEY (nombre_atributo, )
FOREIGN KEY (nombre_atributo, ) REFERENCES nombre_tabla(nombre_atributo) accion_referencial

CHECK (condicion) Acciones referenciales


ON UPDATE accin ON DELETE accin RESTRICT
CASCADE SET NULL SET DEFAULT valor

Si no se especifica nada, se considera RESTRICT


16:05:37 scar Marbn Gallego Marb 13

Ejemplo
Pelicula Actor nombre direccion sexo fecha nacimiento protagoniza titulo ao numero (FK) duracion color nombre (FK) se rueda Estudio nombre direccion

produce

Productora numero nombre direccion presupuesto

Pelcula(titulo, ao, duracin, en_color, nombre_estudio, numero) Protagoniza(titulo_pelicula, ao_pelcula, nombre_actor) Actor(nombre, direccin, sexo, fecha_nacimiento) Productora(numero, nombre, direccion, valor) Estudio(nombre, direccin)
16:05:37 scar Marbn Gallego Marb 14

16:05:37

scar Marbn Gallego Marb

15

Borrado de tablas
DROP TABLE nombre_tabla [CASCADE CONSTRAINT]

Si se utiliza CASCADE CONSTRAINT se elimina la tabla y todas sus restricciones Si no se utiliza CASCADE CONSTRAINT, si la tabla tiene restricciones asociadas no se elimina, hasta que no se eliminen las restricciones Al eliminar una tabla de la base de datos, tambin se eliminan los datos que tuviera almacenados
16:05:37 scar Marbn Gallego Marb 16

Modificar una tabla


ALTER TABLE nombre_tabla accion_modificacin
Acciones de modificacin
Aadir atributos
ADD nuevo_atributo tipo restricciones
Las restricciones slo pueden ser NOT NULL, CHECK y DEFAULT Un atributo NOT NULL slo se puede aadir a una tabla si esta vaca

Borrar atributos
DROP (nombre_atributo, ) DROP COLUMN nombre atributo [CASCADE CONSTRAINT]

Modificar atributos
MODIFY nombre_atributo nuevo_tipo restricciones
Se puede cambiar el tipo o disminuir el tamao de un atributo si todas las tuplas tienen ese campo vaco Un atributo existente se puede hacer NOT NULL si todas las tuplas tienen valor en ese atributo Si no se especifica algo en la modificacin, permanece como estaba
16:05:37 scar Marbn Gallego Marb 17

Ejemplo
Borrado de tabla
DROP TABLE pelicula CASCADE CONSTRAINT DROP TABLE pelicula

Modificacin de tabla
ALTER TABLE pelicula ADD fecha_estreno DATE

16:05:37

scar Marbn Gallego Marb

18

Insercin de datos
INSERT INTO nombre_tabla(lista_atributos) VALUES (lista_valores)

Introduce informacin en la tabla y atributos indicados El orden y el tipo de los atributos debe coincidir con el orden y tipo de los valores Los valores se puede obtener mediante una consulta Si un atributo no se indica, toma valor NULL
16:05:37 scar Marbn Gallego Marb 19

INSERT INTO nombre_tabla VALUES (lista_valores)

Si se omite la lista de atributos, los valores se almacenan de acuerdo al orden de definicin de los mismos en el CREATE TABLE Los tipos de la lista de valores deben coincidir con los tipos de definicin en el CREATE TABLE

16:05:37

scar Marbn Gallego Marb

20

Ejemplo
Todos los valores de la tupla

Algunos valores de la tupla Valores desde consulta

16:05:37

scar Marbn Gallego Marb

21

Modificacin de datos
UPDATE nombre_tabla SET nombre_atributo = nuevo_valor, WHERE condicin
Actualiza en la tabla indicada los valores del atributo siempre y cuando se cumpla la condicin especificada Los valores se pueden obtener mediante una subconsulta o mediante formulas matemticas Si no hay condicin, se actualizan todas las filas de la tabla

Ejemplo

16:05:37

scar Marbn Gallego Marb

22

Borrado de datos
DELETE nombre_tabla WHERE condicin Borra de la tabla las tuplas que cumplen cierta condicin Si no hay condicin se borran todas las filas de la tabla A diferencia de DROP TABLE no borra la estructura de la tabla

Ejemplo

16:05:37

scar Marbn Gallego Marb

23

Consulta de datos
SELECT lista_atributos FROM lista_tablas WHERE condicin GROUP BY lista_atributos HAVING condicion ORDER BY lista_atributos Consulta valores de una o varias tablas de acuerdo a las condiciones impuestas en la sentencia Las nicas partes obligatorias son SELECT y FROM, el resto son opcionales
Si aparecen deben ir en el orden que aparecen en la sentencia HAVING slo puede aparecer si hay GROUP BY
16:05:37 scar Marbn Gallego Marb 24

En la clusula SELECT se indican los atributos que se quieren obtener como respuesta a la consulta La clusula FROM indica la tabla o tablas que son necesarias para obtener la informacin En la clusula WHERE se indican las condiciones que deben cumplir las tuplas obtenidas como resultado de la consulta GROUP BY se utiliza para formar grupos de datos en funcin de algn atributo HAVING establece condiciones sobre los grupos que se formen ORDER BY indica si muestra el resultado ordenado en funcin de algn atributo
16:05:37 scar Marbn Gallego Marb 25

SELECT
Lista de atributos separados por comas
SELECT at1, at2, , atn

Se indican solamente aquellos atributos que queremos que aparezcan en el resultado Si utiliza * si queremos todos los atributos de las tablas involucradas
SELECT *

Pueden aparecen filas duplicas


Para evitarlos se puede utilizar DISTINCT
SELECT DISTINCT lista_atributos Slo se obtienen como resultado filas no duplicadas para la combinacin de los atributos que aparecen en el SELECT

Los nombres de los atributos se pueden cambiar en el resultado de la consulta (alias de atributo)
SELECT nombre_atributo [AS] nuevo_nombre
16:05:37 scar Marbn Gallego Marb 26

FROM
Lista de tablas que se utilizan en la consulta separadas por comas
FROM tab1, tab2, , tabn

Realiza el producto cartesiano (X) de las mismas Las condiciones (WHERE, GROUP BY) se imponen sobre el producto cartesiano Los atributos que aparecen en el SELECT se toman del producto cartesiano Dentro de la consulta una tabla se puede renombrar (alias de tabla)
FROM nombre_tabla nuevo_nombre_tabla,
16:05:37 scar Marbn Gallego Marb 27

WHERE
Indica las condiciones que deben cumplir las filas obtenidas como resultado
Si no aparece se recuperan todas las filas del producto cartesiano de las tablas que hay en el FROM

La condicin es una expresin booleana


Slo se obtienen aquellas filas que cumplen la condicin

Operadores para construir condiciones


Comparacin: =, <>, >, <, >=, <=
WHERE codigo = 7 WHERE codigo < 7

Lgicos: AND, OR, NOT


Se utilizan para construir expresiones que involucran ms de una condicin (AND, OR) o para invertir el resultado de una condicin (NOT)
WHERE codigo = 7 AND color = rojo rojo WHERE NOT (color = rojo) rojo

Matemticos: +, -, *, /
WHERE codigo = (numero * 10)

Otros: BETWEEN AND, IN, LIKE


WHERE codigo BETWEEN 90 AND 95 WHERE nombre LIKE %mou% WHERE color IN (Color, PAL-Color)

16:05:37

scar Marbn Gallego Marb

28

Ejemplo

Peliculas de Disney del ao 1990

16:05:37

scar Marbn Gallego Marb

29

SELECT * FROM peliculas WHERE ao BETWEEN 90 AND 95; SELECT * FROM actor WHERE nombre LIKE %mou%; SELECT * FROM pelicula WHERE color IN (Color, PAL-Color);

16:05:37

scar Marbn Gallego Marb

30

Unin natural (Join )


No se realiza automticamente Hay que escribir la condicin en la consulta Si no se pone la condicin de join, se obtiene el producto cartesiano (X) Escritura de join
Las tablas tienen estar relacionadas mediante claves extranjeras (atributos comunes) Igualar los atributos comunes de las tablas participante en la consulta

Unin natural

16:05:37

scar Marbn Gallego Marb

31

Ambigedades
Cuando el mismo nombre de atributo aparece en ms de una tabla
Hay que distinguir a que atributo se refiere Se cualifica el atributo con el nombre de la tabla
nombre_tabla.nombre_atributo
SELECT empleado.nombre, DNI FROM empleado, departamento WHERE empleado.codigo=departamento.codigo and departamento.nombre=nominas

16:05:37

scar Marbn Gallego Marb

32

Cuando la misma relacin se la usa ms de una vez en la consulta En ese caso se utilizan alias para las tablas
SELECT E.nombre, S. nombre FROM empleado E , empleado S WHERE E.supervisorn= S.nss

16:05:37

scar Marbn Gallego Marb

33

Agregados
COUNT(atributo)
Devuelve el nmero de tuplas o valores especificados en una consulta para el atributo indicado Se puede utilizar como atributo *

SUM(atributo), MAX(atributo), MIN(atributo), AVG(atributo)


Se aplican a valores numricos y devuelven la suma, el mximo, mnimo y media de los atributos indicados

Se pueden utilizar en la clusula SELECT o en el HAVING En el SELECT no pueden aparecer otros atributos a menos que se incluyan en el GROUP BY
16:05:37 scar Marbn Gallego Marb 34

Ejemplo

Cuntas pelculas he protagonizado?

16:05:37

scar Marbn Gallego Marb

35

SELECT SUM (sueldo), MAX (sueldo), MIN(sueldo) AVG(sueldo) FROM empleado SELECT COUNT (*) FROM empleado SELECT COUNT(DISTINCT sueldo) FROM empleado

16:05:37

scar Marbn Gallego Marb

36

Subconsultas
En general se admiten varios niveles de anidacin Para evitar la ambigedad los atributos sin cualificar siempre se referirn a las relaciones declaradas en la consulta ms interna Para evitar problemas es aconsejable cualificar los atributos y utilizar alias para las relaciones

Subconsulta

16:05:37

scar Marbn Gallego Marb

37

Operadores de subconsultas
EXISTS (subconsulta)
Se utiliza para comprobar si el resultado de una consulta anidada es vacio Devuelve true si la tabla no es vaca, en otro caso devuelve falso

NOT EXISTS (subconsulta)


Se utiliza para comprobar si el resultado de una consulta anidada no es vacio Devuelve true si la tabla es vaca, en otro caso devuelve falso

atributo operador_comparacin ALL (subconsulta)


Se utilizara para comparar, mediante alguno de los operadores de comparacin, si el valor de un atributo es mayor, menor, igual, que todos los valores de un determinado conjunto de valores La subconsulta debe devolver una lista de valores

atributo operador_comparacin ANY (subconsulta)


Es similar al operador ALL, lo nico que lo diferencia es que el valor del atributo nicamente tiene que ser igual, menor, mayor, que al menos uno de los valores del conjunto La subconsulta debe devolver una lista de valores
16:05:37 scar Marbn Gallego Marb 38

SELECT nombre FROM Empleados WHERE sueldo> ALL (SELECT sueldo FROM empleado WHERE dno=`5`) SELECT nombre FROM empleado WHERE NOT EXIST (SELECT * FROM dependientes WHERE ssn=essn)

16:05:37

scar Marbn Gallego Marb

39

GROUP BY
Se utiliza para formar agrupaciones de tuplas en funcin de los valores de uno o varios atributos Se utiliza con agregados No es necesario utilizar WHERE Como resultado en el SELECT, slo pueden aparecer agregados o los atributos que aparecen en GROUP BY
... GROUP BY at1, at2, , atn,
16:05:37 scar Marbn Gallego Marb 40

Ejemplo

SELECT dpton, COUNT(*), AVG(sueldo) FROM empleado GROUP BY dpton

16:05:37

scar Marbn Gallego Marb

41

HAVING
Se utiliza siempre con GROUP BY Impone condiciones sobre los grupos formados previamente en GROUP BY Las condiciones son similares a las utilizadas en WHERE, pero se pueden utilizar agregados Mientras que WHERE impone condiciones a las tuplas, HAVING impone condiciones los grupos
SELECT dpton, COUNT(*), AVG(sueldo) FROM empleado GROUP BY dpton HAVING COUNT(*)>2
16:05:37 scar Marbn Gallego Marb 42

ORDER BY
Permite que el usuario ordene el resultado de una consulta por los valores de uno o mas atributos El orden puede ser ascendente (ASC) o descendente (DESC)
ORDER BY at1 orden, at2 orden, , atn orden
SELECT * FROM empleado ORDER BY nombre ASC, codigo DESC;
16:05:37 scar Marbn Gallego Marb 43

Los operadores de conjuntos


UNION, INTERSECT, MINUS (consulta1) operador_conjunto (consulta2)
(SELECT dni FROM alumnos) MINUS (SELECT alumnos.dni FROM alumnos, alumnos al WHERE (al. edad < alumnos.edad) ) (SELECT asi# FROM asigna WHERE credt+credpr >6) INTERSECT (SELECT codas FROM matricula WHERE curso=1998-1999)

16:05:37

scar Marbn Gallego Marb

44

Você também pode gostar