Escolar Documentos
Profissional Documentos
Cultura Documentos
16:05:37
16:05:37
Funciones de SQL
DDL Data Definition Language
Creacin de estructuras de la base de datos Integridad de los datos
Roles de SQL
1/30/2006
Herramientas de programacin
1/30/2006 Subtitle
Formularios
Informes
Herramientas de consulta
Programa de aplicacin
SQL
SQL
SQL
SQL
SQL
Sistemas Informticos
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
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
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
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]
16:05:37
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
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
Ejemplo
Pelicula Actor nombre direccion sexo fecha nacimiento protagoniza titulo ao numero (FK) duracion color nombre (FK) se rueda Estudio nombre direccion
produce
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
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
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
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
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
20
Ejemplo
Todos los valores de la tupla
16:05:37
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
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
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 *
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
Matemticos: +, -, *, /
WHERE codigo = (numero * 10)
16:05:37
28
Ejemplo
16:05:37
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
30
Unin natural
16:05:37
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
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
33
Agregados
COUNT(atributo)
Devuelve el nmero de tuplas o valores especificados en una consulta para el atributo indicado Se puede utilizar como atributo *
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
16:05:37
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
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
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
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
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
16:05:37
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
16:05:37
44