2.4 Manipulación de datos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "2.4 Manipulación de datos"

Transcripción

1 2.4 Manipulación de datos El lenguaje relacional SQL-92 Structured Query Language (lenguaje estructurado de consulta) Primer lenguaje de BD de alto nivel. Años 70. Diseñado e implementado en el IBM s Research Laboratory (San José - California), para el SGBD Relacional experimental System R Definición de un lenguaje estándar para SGBDR ANSI (American National Standards Institute) + ISO (International Standardization Organization) SQL1 (ANSI 1986), extendido en 1989 (SQL-89) SQL-92 (SQL2), y SQL:1999 (extensiones de Orientación a Objetos, disparadores, ) SQL:2003 (incluye XML y otros conceptos recientes) Primeras implementaciones: ORACLE (finales 70) y poco después INGRES 97 Lenguaje de bases de datos completo (no sólo «de consulta») Definición y Manipulación de Datos (LDD + LMD) Definición y destrucción de Vistas (LDV) Creación y destrucción de índices (aunque en SQL-92 «ya no existen») Incorporación de SQL dentro de código escrito con un Lenguaje de Programación de propósito general (Pascal, C, etc.) Los proveedores de SGBDR comerciales (Oracle) implementan variaciones de SQL Algunas incluyen características que no están estandarizadas (triggers /reglas activas incluidos en la versión SQL:1999) Niveles de compatibilidad con el estándar de SQL EntrySQL Intermediate SQL Full SQL 98

2 Lo que vamos a estudiar... Consultas o Selección de datos Modificación de datos Vistas Definición y Alteración de datos Esquemas, Dominios, Tablas Restricciones de Integridad Generales (Asertos) Seguridad y Control de Acceso 99 Consultas básicas (4) SQL-92 vs. Modelo Relacional Formal No utiliza los términos formales relación, atributo, tupla, sino tabla, columna, fila Permite que las tablas tengan 2 o más filas idénticas en todos los valores de sus columnas En general, tabla SQL conjunto de filas, sino que Tabla SQL = Multiconjunto de filas (saco, bag) Es posible forzar que las tablas SQL sean conjuntos de filas: - con restricciones de clave o - mediante opción DISTINCT en una SELECT (*se verá*) Las columnas de una tabla están ordenadas, y es posible indicar un orden de visualización de las filas Una clave ajena puede referenciar a una clave candidata 100

3 Esquema de base de datos COMPAÑÍA EMPLEADO NOMBRE APELLIDO NSS NIF FECHAN DIRECCION SEXO SALARIO NSSJEFE ND DEPARTAMENTO NOMBRED NUMEROD NSSDIRE FECHAINICDIRE OFICINA_DEPTO NUMEROD OFICINA PROYECTO NOMBREP NUMEROP LUGARP NUMEROD TRABAJA_EN NSSE NUMP HORAS FAMILIAR NSSE NOMBRE_FAMILIAR SEXO FECHAN PARENTESCO 101 Consultas básicas Orden SELECT: Instrucción básica de obtención de información donde: <lista columnas> <lista tablas> <condición> SELECT <lista columnas> FROM <lista tablas> WHERE <condición> columnas cuyos valores va a obtener la consulta tablas necesarias para realizar la consulta expresión booleana para identificar filas que obtendrá la consulta (expresión de reunión y/o de selección) Fecha de nacimiento y dirección del empleado llamado José Silva SELECT fechan, direccion FROM Empleado WHERE nombre = José AND apellido = Silva ; La consultaselecciona las filas de <lista tablas> que satisfacen <condición> y proyecta el resultado sobre las columnas de <lista columnas> 102

4 Consultas básicas (2) La ordenselect... FROM... WHERE... No es igual a la operación restricción σ del Álgebra Relacional SELECT de SQL tiene muchas más opciones y matices En caso de una única tabla T en <lista tablas> SELECT <lista columnas> FROM T WHERE <condición> es equivalente a... Π <lista columnas> (σ <condición> ( T )) * Nombre, apellido y dirección de los empleados del departamento de Investigación SELECT nombre, apellido, direccion FROM Empleado, Departamento reunión o join de tablas WHERE nombred= Investigación condición de selección AND numerod=nd; condición de reunión entre tablas 103 Consultas básicas (3) Cualquier nº de condiciones selección/reunión en SELECT * Para cada proyecto ubicado en Santiago, obtener el nº del proyecto, nº del departamento que lo controla y el apellido, dirección y fecha de nacimiento del gerente de ese departamento SELECT numerop, numd, apellido, direccion, fechan FROM Proyecto, Departamento, Empleado WHERE numd=numerod AND nssdire=nss AND lugarp= Santiago ; Una SELECT puede obtener filas repetidas * Salario de los empleados de los departamentos de Administración y de Investigación SELECT salario FROM Empleado, Departamento WHERE (nombred = Administración OR nombred = Investigación ) AND numerod=nd; 104

5 Consultas básicas (5): uso de * Obtención de los valores de todas las columnas de las filas seleccionadas No es necesario listar todos los nombres tras cláusula SELECT Uso del símbolo * (todas las columnas) SELECT * FROM Empleado WHERE nd=5; SELECT * FROM Departamento WHERE nombred= Investigación ; SELECT * FROM Empleado, Departamento WHERE nombred= Investigación AND nd=númerod; 105 Consultas básicas (6): omisión de WHERE Selección incondicional Equivale a una condición TRUE para todas las filas selección de todas las filas de... una tabla (si la cláusula FROM sólo contiene una tabla), o el producto cartesiano entre varias tablas (si FROM incluye más de una) * Seleccionar todos los nss de empleados SELECT nss FROM Empleado; * Obtener todas las combinaciones de nss de empleados y nombres de departamentos SELECT nss, nombred FROM Empleado, Departamento; 106

6 Consultas básicas (7): cadenas de caracteres Operador LIKE Comparación de cadenas de caracteres Caracteres reservados: % y _ (comodines) *Nombres y apellidos de los empleados cuya dirección esté en Higueras, estado de México SELECT nombre, apellido FROM Empleado WHERE direccion LIKE %Higueras, MX% ; Operador Concatenación de cadenas de caracteres * Nombres completos en una sola columna de empleados con dirección en Higueras (México) SELECT nombre apellido FROM Empleado WHERE direccion LIKE %Higueras, MX% ; 107 Consultas básicas (8): aritmética y tiempo Operaciones aritméticas Aplicación de operadores aritméticos ( + - * / ) sobre valores numéricos * Salarios de los empleados que trabajan en el proyecto ProductoX, tras un aumento del 10% SELECT apellido, nombre, 1.1*salario FROM Empleado, Trabaja_en, Proyecto WHERE nss=nsse AND nump=numerop AND nombrep= ProductoX ; el valor real de los salarios en la tabla EMPLEADO no cambia Operaciones con fechas, horas, marcas de tiempo e intervalos Especificación del valor de un INTERVAL como diferencia de dos valores DATE, TIME o TIMESTAMP Incremento y Decremento de valores de columnas de tipo DATE, TIME, TIMESTAMP en un intervalo compatible con el tipo 108

7 Consultas básicas (9): calificación En SQL los nombres de las columnas deben ser únicos dentro de cada tabla Consulta que referencia a varias columnas de igual nombre, pero de tablas distintas... AMBIGÜEDAD Solución: CALIFICACIÓN El esquema COMPAÑÍA incluye las siguientes tablas: DEPARTAMENTO (nombred, numerod, nssdire, fechainicdire) OFICINA_DEPTO (numerod, oficina) * Código, nombre y lugares de los departamentos de Marketing y de Investigación SELECT Departamento.numerod, nombred, oficina FROM Departamento, Oficina_depto WHERE Departamento.nombred IN ( Marketing, Investigación ) AND Departamento.numerod = Oficina_depto.numerod; 109 Consultas básicas (10): seudónimos Puede utilizarse seudónimos para acortar nombres de tabla dentro de las consultas con calificación: SELECT nombred, D.numerod, oficina FROM Departamento AS D, Oficina_depto L AS es opcional WHERE D.nombred IN ( Marketing, Investigación ) AND D.numerod = L.numerod; Consulta que se refiere dos veces a la misma tabla AMBIGÜEDAD Solución: SEUDÓNIMOS * Obtener nombre y apellido de cada empleado y de su supervisor inmediato SELECT E.nombre, E.apellido, S.nombre, S.apellido FROM Empleado E, Empleado S WHERE E.nssjefe=S.nss; 110

8 Consultas básicas (11): renombrar columnas En el resultado de evaluar la consulta * Nombres de cada empleado y su supervisor, cambiando al mismo tiempo los nombres de las columnas resultantes a nom_empleado y nom_supervisor SELECT E.nombre AS nom_empleado, S.nombre AS nom_supervisor FROM Empleado E, Empleado S WHERE E.nssjefe = S.nss; Nueva cabecera para la tabla resultado Seudónimos de columnas (y/o tablas) en cláusula FROM SELECT nom, num, oficina FROM Departamento D(nom, num, dire, inidire), Oficina_depto WHERE nom IN ( Marketing, Investigación ) AND num = numerod; 111 Consultas básicas (y 12): orden de presentación SQL permitepresentar las filas resultado de una consulta de forma ordenada: Cláusula ORDER BY Ordenación según valores de una o varias columnas Ascendente ASC (por defecto) o Descendente DESC Suele ser una operación muy costosa las filas no se ordenan en disco: se ven ordenadas, pero no lo están *Nombre y apellido de los empleados, y proyectos en los que trabajan, en orden descendente por departamentos y, dentro de cada departamento, en orden alfabético ascendente por apellido y nombre SELECT nombred, apellido, nombre, nombre FROM Departamento, Empleado, Trabaja_en, Proyecto WHERE numerod=nd AND nss=nsse AND nump=numerop ORDER BY nombred DESC, apellido ASC, nombre ASC; 112

9 Tablas como conjuntos SQL no elimina filas repetidas del resultado de una consulta, porque... Eliminación de duplicados costosa (ordenar+recorrer+eliminar) El usuario puede desear ver las filas repetidas en el resultado Si se aplica una función agregada a filas, rara vez deben eliminarse las duplicadas Operador DISTINCT: Para eliminar duplicados del resultado de una consulta SQL»Resultado = Relación del Modelo Relacional Formal (conjunto de filas) * Salarios de todos los empleados SELECT salario FROM Empleado; * Salarios distintos de empleados, sin importar cuántos perciban cada cantidad SELECT DISTINCT salario FROM Empleado; 113 Tablas como conjuntos (2) Operaciones de conjuntos UNION( ), INTERSECT( ), EXCEPT ( ) (minus en ORACLE) Resultado: conjunto de filas las filas repetidas se eliminan Las tablas operando han de ser compatibles en tipo: igual nº de columnas, y columnas correspondientes con el mismo dominio * Nombres de los proyectos en que participa el empleado de apellido Silva, ya sea como trabajador o como gerente del departamento que controla el proyecto ( SELECT nombrep FROM Proyecto, Trabaja_en, Empleado WHERE numerop=nump AND nsse=nss AND apellido= Silva ) UNION ( SELECT nombrep FROM Proyecto, Departamento, Empleado WHERE numd=numerod AND nssdire=nss AND apellido= Silva ); Para no eliminar duplicados... UNION ALL, INTERSECT ALL, EXCEPT ALL 114

10 Tablas como conjuntos (3): conjuntos explícitos Un conjunto explícito de valores es una lista de valores encerrada entre paréntesis Puede aparecer en la cláusula WHERE * nss de los empleados que trabajan en los proyectos 1, 2 ó 3 SELECT DISTINCT nsse FROM Trabaja_en WHERE nump IN (1, 2, 3); Operador IN v IN V Indica si el valor v pertenece al conjunto de valores V Devuelve TRUE si algún elemento e de V cumple que v = e * nss de los empleados que trabajan en algún proyecto que no sea el 4 ni el 6 SELECT DISTINCT nsse FROM Trabaja_en WHERE nump NOT IN (4, 6); 115 Tablas como conjuntos (4): conjuntos explícitos Operador ANY (o SOME) v <op> ANY V o v <op> SOME V,, <op> { >,, <,, <>, = } Compara un valor individual v con los elementos de un conjunto V Devuelve TRUE si algún elemento e de V cumple que v <op> e * nss de los empleados que trabajan en alguno de los proyectos 1, 2 ó 3 SELECT DISTINCT nsse FROM Trabaja_en WHERE nump = ANY (1, 2, 3); Operador ALL v <op> ALL V,, <op> { >,, <,, <>, = } Compara un valor v con los elementos de un conjunto V Devuelve TRUE si para todo elemento e de V se cumple v <op> e * nss de los empleados que no trabajan en ninguno de los proyectos 1, 2 y 3 SELECT DISTINCT nsse FROM Trabaja_en WHERE nump <> ALL (1, 2, 3); 116

11 Consultas anidadas Es una consulta SELECT completa, dentro de cláusula WHERE de otra consulta (consulta exterior) Obtiene valores de la BD que se usan en la condición de otra consulta, para obtener otros datos * Números de los proyectos en que participa el empleado de apellido Silva, sea como trabajador o como gerente del departamento que controla el proyecto SELECT DISTINCT numerop FROM PROYECTO WHERE numerop IN ( SELECT nump FROM Trabaja_en, Empleado WHERE nsse=nss AND apellido= Silva ) OR numerop IN ( SELECT numerop FROM Proyecto, Departamento, Empleado WHERE numd=númerod AND nssdire=nss AND apellido= Silva ) ; Es posible tener varios niveles de consultas anidadas 117 Consultas anidadas (2): comparar conjuntos Operador IN (otro uso del mismo operador) t IN S indica si la fila t pertenece al conjunto de filas S (subconsulta) * Nombre y dirección de los empleados que trabajan en algún proyecto. SELECT nombre, dirección FROM Empleado WHERE nss IN ( SELECT nsse FROM TRABAJA_EN ); * Números de seguridad social de aquellos empleados que trabajan en algún proyecto en el que trabaje el empleado José B. Silva, de forma que ambos tengan la misma combinación (proyecto, horas); es decir, todo empleado que trabaje las mismas horas que José B. Silva, en cada proyecto en el que trabajen ambos. El nss de José B. Silva es SELECT DISTINCT nsse FROM Trabaja_en WHERE (númp, horas) IN ( SELECT númp, horas FROM Trabaja_en WHERE nsse= ); 118

12 Consultas anidadas (3): comparar conjuntos Operador ANY o SOME (otro uso del mismo operador) t <op> ANY S o t <op> SOME S,, <op> { >,, <,,, = } Compara una fila t con las filas resultado de una consulta anidada S Devuelve TRUE si alguna fila e de S cumple que t <op> e Operador ALL (otro uso del mismo operador) t <op> ALL S,, <op> { >,, <,,, = } Compara una fila t con filas resultado de una consulta anidada S Devuelve TRUE si para toda fila e de S se cumple que t <op> e * Nombres y apellidos de los empleados cuyo salario es menor que el de todos los empleados del departamento 5 SELECT nombre, apellido FROM Empleado WHERE salario < ALL ( SELECT salario FROM Empleado WHERE nd=5 ); Mejor con DISTINCT en la subconsulta? 119 Consultas anidadas (4): columnas ambiguas Coincidencia de nombres de columnas en las consultas exterior y anidada Ambigüedad * Nombre y apellidos de cada empleado con familiares de igual nombre y sexo que él SELECT nombre, apellido FROM Empleado WHERE nss IN ( SELECT nsse FROM Familiar WHERE nsse=nss AND nombre_familiar=nombre AND sexo=sexo ); cómo evitar esta ambigüedad? Regla: Una columna no calificada se refiere a la tabla declarada en la consulta anidada más interior Si en una consulta anidada es necesario usar columnas de tablas declaradas en una consulta exterior calificar * Nombre y apellidos de cada empleado con familiares de igual nombre y sexo que él SELECT nombre, apellido FROM Empleado E WHERE nss IN ( SELECT nsse FROM Familiar WHERE nss=nsse AND nombre_familiar=nombre AND sexo= E.sexo ); 120

13 Consultas anidadas (5): correlación Una consulta exterior y otra anidada están correlacionadas si una condición de la anidada contiene columnas de una tabla declarada en la consulta exterior SELECT nombre, apellido FROM Empleado WHERE nss IN ( SELECT nsse FROM Familiar WHERE nss=nsse AND sexo= F ); La consulta anidada se evalúa una vez para cada fila (o combinación de filas) de la consulta exterior Evalúa la consulta anidada para cada fila de EMPLEADO, Si el valor de nss de la fila EMPLEADO está en el resultado de la consulta anidada, selecciona la fila EMPLEADO para el resultado final Una consulta anidada que use el operador = o IN siempre puede expresarse como una reunión (join) SELECT E.nombre, E.apellido FROM Empleado, Familiar D WHERE nss=nsse AND D.sexo= F ; 121 Consultas anidadas (6): EXISTS Operador EXISTS (S): comprobación de tablas vacías Devuelve TRUE si la tabla S contiene al menos una fila Devuelve FALSE si S es una tabla vacía (sin filas) S suele ser una consulta anidada correlacionada * Nombre y apellido de cada empleado con familiares de igual nombre y sexo que él SELECT E.nombre, E.apellido FROM Empleado E WHERE EXISTS ( SELECT * FROM Familiar WHERE nsse=nss AND nombre_familiar=nombre AND sexo=e.sexo ); * Nombres de empleados sin familiares SELECT nombre, apellido FROM Empleado E WHERE NOT EXISTS (SELECT * FROM Familiar WHERE nsse=nss); 122

14 Consultas anidadas (y 7): UNIQUE Operador UNIQUE (S): Comprobación de filas duplicadas Devuelve TRUE si NO hay filas repetidas en S S suele ser una consulta anidada correlacionada * Nombres y apellidos de los empleados que trabajan en un único proyecto SELECT nombre, apellido FROM Empleado WHERE UNIQUE ( SELECT nsse FROM Trabaja_en WHERE nsse = nss ); * Nombres, apellidos y salario de los empleados con un solo familiar SELECT nombre, apellido, salario FROM Empleado WHERE UNIQUE ( SELECT * FROM Familiar WHERE nsse = nss ); 123 Nulos Null Ausencia o desconocimiento de información Comparar NULL con cualquier cosa da FALSE Operador IS NULL,, IS NOT NULL v IS NULL es TRUE si v es NULL v IS NOT NULL es TRUE si v es un valor no NULL * Nombres de empleados sin supervisores SELECT nombre, apellido FROM Empleado WHERE nssjefe IS NULL; 124

15 Funciones agregadas Función COUNT( ) Cuenta el número de filas o de valores especificados en una consulta Funciones SUM( ), MAX( ), MIN( ), AVG( ) Suma, máximo, mínimo y media aritmética (promedio) Aplicadas a un multiconjunto (saco, bag) de valores numéricos Pueden aparecer en cláusula SELECT * Suma de los salarios y salario máximo, mínimo y medio de los empleados SELECT SUM(salario), MAX(salario), MIN(salario), AVG(salario) FROM EMPLEADO; * Suma de los salarios y salario máximo, mínimo y medio de empleados del depto. de Investigación SELECT SUM(salario), MAX(salario), MIN(salario), AVG(salario) FROM Empleado, Departamento WHERE nd=númerod AND nombred= Investigación ; También pueden aparecer en cláusula HAVING (*se verá*) 125 FUNCIONES AGREGADAS Funciones agregadas (2): uso de * y de DISTINCT Uso de * * Número total de empleados de la compañía SELECT COUNT(*) FROM Empleado ( cuenta filas) * Contar el número de empleados de la compañía que tienen un jefe SELECT COUNT(nssjefe) FROM Empleado; ( cuenta filas con nssjefe no NULL) * Número de empleados en el departamento de Investigación SELECT COUNT(*) FROM Empleado, Departamento WHERE nd=númerod AND nombred= Investigación ; Uso de DISTINCT * Contar el nº de valores distintos de salario que pueden cobrar los empleados SELECT COUNT(salario) FROM Empleado; Error: NO se eliminan duplicados, así que COUNT(salario) COUNT(*) SELECT COUNT(DISTINCT salario) FROM Empleado; OK!! 126

16 Funciones agregadas (y 3) y correlación Es posible que una consulta anidada y correlacionada con otra exterior, incluya una función agregada * Nombres de los empleados con 2 o más familiares SELECT apellido, nombre FROM Empleado WHERE 2 ( SELECT COUNT(*) FROM Familiar WHERE nss=nsse ); 127 Agrupación Cláusula GROUP BY Para formar subgrupos de filas dentro de una tabla Los grupos se forman según el valor de las columnas de agrupación Las filas de cada grupo tendrán el mismo valor en las columnas de agrupación Aplicación de funciones agregadas a grupos de filas * Para cada departamento, obtener su número, cuántos empleados tiene dicho departamento y el salario medio de los empleados del mismo SELECT nd, COUNT(*), AVG(salario) FROM Empleado GROUP BY nd ; una columna de agrupación Las columnas de agrupación deben aparecer en la cláusula SELECT, antes de cualquier función agregada, para que su valor (único para cada grupo) aparezca junto al resultado de aplicar la función al grupo 128

17 Agrupación (2) Cláusula HAVING Siempre junto a GROUP BY Condición que deben cumplir los grupos de filas asociados a cada valor de las columnas de agrupación Un grupo que no cumple la condición, no es seleccionado para el resultado * Para cada proyecto en el que trabajen más de dos empleados, obtener el número y nombre del proyecto, y el nº de empleados que trabajan en él SELECT numerop, nombrep, COUNT(*) FROM Proyecto, Trabaja_en WHERE numerop=nump GROUP BY numerop, nombrep HAVING COUNT(*) > 2 ; 129 Agrupación (y 3) WHERE... se aplica a filas individuales HAVING... se aplica a grupos de filas * Nº de empleados cuyos salarios superan los en cada departamento, pero sólo en el caso de departamentos en los que trabajen más de 5 empleados (* Consulta incorrecta por qué? *) SELECT nombred, COUNT(*) FROM Departamento, Empleado WHERE númerod=nd AND salario>1800 GROUP BY nombred HAVING COUNT(*) > 5 ; (* pista: orden de ejecución *) (* Consulta correcta *) SELECT nombred, COUNT(*) FROM Departamento, Empleado WHERE númerod=nd AND salario>1800 AND nd IN (SELECT nd FROM Empleado GROUP BY nd HAVING COUNT(*) > 5) GROUP BY nombred ; 130

18 Tablas reunidas Reunión especificada en la cláusula FROM de una consulta Hasta ahora la hemos especificado en cláusulas FROM y WHERE * Nombres y dirección de empleados del departamento de Investigación SELECT nombre, apellido, direccion FROM Empleado, Departamento reunión de tablas WHERE nombred= Investigacion AND nd=numerod; condición de reunión Consultas más comprensibles: separa condiciones de reunión y de selección * Nombres y dirección de empleados del departamento de Investigación SELECT nombre, apellido, direccion FROM (Empleado JOIN Departamento ON nd=numerod) tabla reunida WHERE nombred= Investigacion ; 131 Tablas reunidas (2):anidamiento Es posible anidar varias especificaciones de reunión de tablas * Para cada proyecto ubicado en Santiago, obtener el nº de proyecto, el nº del departamento que lo controla y el apellido, dirección y fecha de nacimiento del gerente de ese departamento SELECT númerop, númd, apellido, dirección, fechan FROM ( ( Proyecto JOIN Departamento ON númd=númerod ) JOIN Empleado ON nssdire=nss ) WHERE lugarp= Santiago ; 132

19 Reunión Interna de tablas (inner join) Es el tipo de reunión por defecto SELECT... FROM ( R1 JOIN R2 ON <condición_reunión> ) WHERE... Si existe una fila t1 en R1 y otra fila t2 en R2, tales que cumplen la condición de reunión, la tabla resultado (reunida) incluirá la fila obtenida al combinar t1 y t2 SELECT E.nombre AS nom_empleado, S.nombre AS nom_supervisor FROM (Empleado E JOIN Empleado S ON E.nssjefe = S.nss); Son excluidas las filas EMPLEADO con NULL en nssjefe También puede especificarse como R1 INNER JOIN R2 ON <condición_reunión> 133 Reunión Natural de tablas (natural join) Sin condición de reunión explícita SELECT... FROM ( R1 NATURAL JOIN R2 ) WHERE... Equi-reunión implícita para cada par de columnas con igual nombre en una y otra tabla Sólo se incluye una de estas columnas en el resultado Si no coinciden los nombres de las columnas, es necesario RENOMBRAR una de ellas mediante AS en la cláusula FROM SELECT nombre, apellido, direccion FROM ( Empleado NATURAL JOIN (Departamento AS DEP(nombred, nd, dire, fech)) ) WHERE nombred= Investigacion ; 134

20 Reunión Externa de tablas (outer join) Útil si en una reunión se necesita obtener las filas con valor NULL en las columnas de reunión, o sin correspondencia en la otra tabla Tipos de reunión externa: LEFT [OUTER] JOIN Reunión externa izquierda RIGHT [OUTER] JOIN Reunión externa derecha FULL [OUTER] JOIN Reunión externa completa o total SELECT E.nombre AS nom_empleado, S.nombre AS nom_supervisor FROM (Empleado E LEFT OUTER JOIN Empleado S ON E.nssjefe=S.nss); Obtiene también los empleados sin supervisor (con NULL en nssjefe) 135 Evaluación de consultas En una consulta SQL hay un máximo de 6 cláusulas Sólo son obligatorias SELECT y FROM Orden de especificación de las cláusulas: SELECT <lista columnas> FROM <lista tablas> WHERE <condición para filas> columnas o funciones que se van a obtener tablas necesarias (incluso las reunidas) condiciones para selección de filas GROUP BY <lista columnas agrupación> especificación del agrupamiento de filas HAVING <condición para grupos> condición para selección de grupos de filas ORDER BY <lista columnas ordenación> orden de presentación del resultado 136

21 Evaluación de consultas (2) Orden de evaluación de las cláusulas: 1) FROM (es decir, la reunión o join de tablas, si se especifica más de una) 2) WHERE 3) GROUP BY 4) HAVING 5) SELECT 6) ORDER BY Diversas formas de especificar una misma consulta Ejemplo: es posible expresar una consulta utilizando... a) condiciones de reunión en cláusula WHERE, o b) tablas reunidas en la cláusula FROM, o c) consultas anidadas y el operador de comparación IN... Flexibilidad 137 Evaluación de consultas (y 3) Ventajas e inconvenientes de esta flexibilidad: el usuario elige la técnica o enfoque más cómodo Confusión del usuario: qué técnica uso? Algunas técnicas son más eficientes que otras el usuario debe determinar cuál En condiciones ideales... Usuario: se preocupa sólo de especificar la consulta correctamente SGBD: se ocupa de ejecutar la consulta de manera eficiente Pero en la práctica no suele ser así... conviene saber qué tipos de consulta son más y menos costosos Recomendación (optimización de consultas): Consultas con mínimo anidamiento correlacionado y mínimo ordenamiento implícito 138

22 Inserción de datos Orden INSERT Añade una fila completa a una tabla Incluye nombre de la tabla y lista de valores para las columnas, escritos en igual orden al especificado en la orden CREATE TABLE INSERT INTO Empleado VALUES ( 'Ricardo', C, 'Martínez', ' ', , '30-DIC-52', 'Olmo 98, Cedros, MX', M, 37000, ' ', 4 ) ; Si se desea poner los valores de las columnas en cualquier orden, hay que especificar los nombres de las columnas en dicho orden INSERT INTO Empleado ( nombre, apellido, nss, nif, nd, salario, nssjefe, direccion, fechan, sexo ) VALUES ( 'Ricardo', C, 'Martínez', ' ', , 4, 37000, ' ', 'Olmo 98, Cedros, MX', '30-DIC-52', M ) ; 139 Inserción (2) Inserción de varias filas en una sola orden INSERT Filas separadas por comas Cada fila se encierra entre paréntesis Especificación explícita de algunas columnas (y no todas) Omisión de columnas cuyo valor se desconoce Cada columna no especificada tomará el... valor por omisión: valor tomado de su cláusula DEFAULT, o NULL: si la columna permite nulos y no se definió cláusula DEFAULT para la misma * Inserción de un empleado del que sólo se conoce su nombre, apellidos, nss y nif INSERT INTO Empleado (nombre, apellido, nss, nif) VALUES ( 'Rubén', 'Ripoll', ' , R ) ; 140

23 Inserción (3): Restricciones de Integridad Si SGBD con implementación total de SQL-92 -El SGBD maneja e impone toda RI definida en esquema de BD (LDD) Si SGBD con implementación de algunas RI - Menor complejidad, mayor eficiencia - SGBD implementa comprobaciones para imponer RI que sí maneja INSERT INTO Empleado (nombre, apellido, nd) VALUES ( 'Roberto', 'Huertas', 2 ) ; Inserción rechazada: no se incluye valor para nss, que debe ser NOT NULL - Programador debe asegurar la no violación de las RI no manejadas por el SGBD Supongamos que no existe departamento con numerod=8 INSERT INTO Empleado (nombre, apellido, nss, nif, nd) VALUES ( 'Roberto', 'Huertas', ' ', H, 8 ) ; Si el SGBD sí maneja la Integridad Referencial Inserción rechazada Si el SGBD NO soporta la Integridad Referencial Inserción permitida el programador debe asegurar que esto no pase! 141 Inserción (y 4): filas resultado de una consulta Carga de una tabla con información sinóptica de la BD Sea una tabla INFO_DEPTOS vacía. En ella queremos almacenar los nombres de cada departamento, su nº de empleados y el salario conjunto de los empleados del mismo. INFO_DEPTOS ( nombre_depto, num_emps, sal_total) INSERT INTO Info_deptos ( nombre_depto, num_emps, sal_total ) SELECT nombred, COUNT(*), SUM(salario) FROM Departamento, Empleado WHERE númerod=nd GROUP BY nombred ; Es posible hacer SELECT... FROM Info_deptos... INFO_DEPTOS puede contener información no actualizada Si se modifica información en EMPLEADO y/o DEPARTAMENTO, los cambios no se reflejarán en la tabla INFO_DEPTOS Una vista sí contiene siempre los datos más actuales (*se verá*) 142

24 Eliminación de datos Orden DELETE Elimina filas completas de una tabla Sólo una tabla en cláusula FROM Cláusula WHERE para seleccionar las filas que eliminar Si no hay WHERE, se eliminan todas las filas La tabla permanece, pero queda vacía DELETE FROM Empleado ; todas las filas DELETE FROM Empleado WHERE apellido= Bojórquez ; 0 filas DELETE FROM Empleado WHERE nss= ; 1 fila DELETE FROM Empleado WHERE nd IN ( SELECT numerod FROM Departamento WHERE nombre= Investigación ) ; 4 filas Propagación de eliminaciones Según acciones de mantenimiento de la Integridad Referencial especificadas con LDD en los CREATE TABLE (esquema de BD) 143 Actualización de datos Orden UPDATE Modifica valores de columnas en una o más filas de una tabla Se modifican filas de una sola tabla a la vez Cláusula SET especifica columnas que modificar y nuevos valores Cláusula WHERE para seleccionar filas que actualizar Si no hay WHERE, se aplica la modificación a todas las filas * Para el proyecto 10, cambiar el lugar a Belén y el nº de depto controlador al 5 UPDATE Proyecto SET lugarp = Belen, númd = 5 WHERE numerop=10 ; Propagación de modificaciones Si cambia un valor de clave candidata, este cambio se propaga a valores de clave ajena de filas de otras tablas, si así se especificó en las acciones de mantenimiento de la Integridad Referencial en la definición de la tabla con CREATE TABLE 144

25 Actualización (y 2) Modificación de varias filas a la vez con UPDATE * Conceder a todo empleado del departamento de Investigación un aumento salarial del 10% UPDATE Empleado SET salario = salario*1.1 WHERE nd IN (SELECT númerod FROM Departamento WHERE nombred= Investigación ) ; NULL o DEFAULT como nuevo valor de una columna UPDATE Empleado SET salario = DEFAULT; UPDATE Empleado SET nssjefe = NULL WHERE... ; 145 LDD: Definición de datos Esquema de Base de Datos Relacional - Agrupa tablas y otros elementos, de una misma aplicación -1 as versiones de SQL: todas las tablas dentro de un esquema único y global a todas las aplicaciones que accedían a la BD Orden CREATE SCHEMA: definición/creación de esquemas CREATE SCHEMA <nombre de esquema> AUTHORIZATION <identificador de autorización> <nombre de esquema> identifica el esquema <identificador de autorización> usuario/cuenta propietaria del esquema CREATE SCHEMA Compañía AUTHORIZATION JSILVA ; A continuación puede especificarse las definiciones de los elementos contenidos en dicho esquema Elementos del esquema: Tablas, Vistas, Dominios, Autorizaciones, Restricciones, etc. 146

26 Catálogo de base de datos relacional Conjunto nombrado de esquemas de BD en un entorno SQL Contiene un esquema especial, INFORMATION_SCHEMA, que almacena datos sobre la definición de todos los elementos de todos los esquemas existentes en el catálogo El Diccionario de Datos (Data Dictionary) de ORACLE se corresponde con el INFORMATION_SCHEMA del estándar SQL-92 - Es posible compartir elementos (dominios, etc.) entre diferentes esquemas del mismo catálogo - Sólo pueden definirse restricciones de integridad referencial entre tablas que existan en esquemas dentro del mismo catálogo Concepto incorporado en la versión SQL-92 del estándar 147 LDD: definición de tablas Orden CREATE TABLE Define (crea) una tabla: nombre, columnas y restricciones Nombre único dentro del esquema Para cada Columna... nombre, tipo de datos (dominio) restricciones de columna Restricciones de tabla... de clave candidata, de integridad de entidad, de integridad referencial, o restricciones de otro tipo CREATE TABLE Empleado ( nombre... apellido... nss... nif... fechan... direccion... sexo... salario... nssjefe... nd ); 148

27 LDD: definición de tablas Indicación del esquema al que pertenece una tabla Esquema Explícito CREATE TABLE Compañia.Empleado... Esquema Implícito en el contexto CREATE TABLE Empleado... Ordenamiento de columnas y filas Columnas ordenadas tal como aparecen en CREATE TABLE Las filas no están ordenadas Las tablas creadas con CREATE TABLE son tablas BASE El SGBD las almacena físicamente en algún fichero de la BD 149 LDD: definición de tablas Especificación del tipo de datos de una columna 1. Especificar directamente el tipo de datos tras nombre de la columna CREATE TABLE Empleado ( nombre VARCHAR(15) ); 2. Definir un dominio y usar su nombre como tipo de datos Facilita cambio del tipo de datos usado por muchas columnas Esquema más comprensible CREATE DOMAIN Nombres VARCHAR(15);... CREATE TABLE Empleado ( nombre NOMBRES ); 150

28 LDD: tipos de datos Numéricos Enteros y Reales INTEGER (también INT), SMALLINT, FLOAT, REAL, DOUBLE PRECISION Con formato DECIMAL(p,e) ( también DEC(p,e) ó NUMERIC(p,e) ) p: precisión, e: escala. El valor por omisión de la escala es e = 0 Cadena de caracteres Longitud fija CHAR(n) ( n: nº caracteres ) Longitud variable VARCHAR(n) ( n: máximo nº caracteres ) Cadena de Bits Longitud fija BIT(n) (n: nº bits) Longitud variable BIT VARYING(n) n:máx nº bits. Por omisión n=1 151 LDD: tipos de datos Temporales DATE (10 posiciones) = YEAR, MONTH, DAY (yyyy-mm-dd) TIME (8 posiciones) = HOUR, MINUTE, SECOND (hh:mm:ss) Sólo permitidas fechas y horas válidas TIMESTAMP (marca de tiempo) DATE, TIME, fracciones de segundo y desplazamiento respecto al huso horario estándar (WITH TIME ZONE) INTERVAL Período de tiempo, para incrementar/decrementar el valor actual de una fecha, hora o marca de tiempo Se califica con YEAR/MONTH ó DAY/TIME para indicar su naturaleza 152

29 LDD: definición de dominios de datos CREATE DOMAIN <nombre dominio> <tipo de datos> [ DEFAULT <valor defecto> ] [ <lista de definición de restricciones de dominio> ] ; - <tipo de datos>: uno de los proporcionados por el SGBD (built-in) - <valor defecto>: (opcional) - Especifica el valor por omisión para columnas definidas de este dominio - Será asignado a cada columna con dicho dominio, si no tiene ya su propia cláusula DEFAULT - <lista de definición de restricciones de dominio>: (opcional) - Restric. Integridad que se aplican a toda columna definida sobre el dominio - Cada RI puede tener un nombre: cláusula CONSTRAINT <nombre_ri> * Ejemplo: enumeración de posibles valores componentes del dominio CREATE DOMAIN Color VARCHAR(8) DEFAULT sincolor CONSTRAINT color_valido CHECK (VALUE IN ( rojo, amarillo, azul, verde, sincolor ) ) ; 153 LDD: definición de tablas Especificación de restricciones de columna Cláusula NULL o NOT NULL Opción de nulo: indica si una columna puede contener o no NULL CREATE TABLE Empleado (... nombre VARCHAR(15) NOT NULL,... ); Por omisión, se asume NULL La restricción NOT NULL es obligatoria para columnas componentes de una clave primaria Cláusula DEFAULT <valor> Valor por omisión (o por defecto) CREATE TABLE Empleado (... salario DECIMAL(5,2) DEFAULT 1000 NULL,... ); Si una columna no tiene DEFAULT, su valor por defecto es... El de su dominio, si su tipo es un dominio que incluye DEFAULT NULL en cualquier otro caso, siempre que la columna permita NULL 154

30 LDD: definición de tablas Especificación de restricciones de tabla Cláusula PRIMARY KEY (<lista_columnas>) Columnas que componen la clave primaria Cláusula UNIQUE (<lista_columnas>) Columnas que forman una clave alternativa Cláusula FOREIGN KEY (<lista_columnas>) REFERENCES <tabla>(<lista_columnas>) Columnas clave externa (Integridad Referencial) SQL-92 permite que una clave externa se refiera a una clave primaria o una clave alternativa Cláusula CHECK (<expresión>) Condición sobre los valores de las columnas que debe cumplir toda fila de la tabla 155 LDD: definición de tablas CREATE TABLE Empleado ( nombre VARCHAR(15) NOT NULL, apellido VARCHAR(15) NOT NULL, nss CHAR(12) NOT NULL, nif CHAR(9) NOT NULL, fechan DATE NULL, direccion VARCHAR(30), sexo CHAR(1), salario DECIMAL(5,2) DEFAULT 1000 NULL, nssjefe CHAR(12), nd NUMERIC(2) NOT NULL, PRIMARY KEY ( nss ), UNIQUE ( nif ), CHECK ( nssjefe <> nss ), CHECK ( sexo IN ( H, M ) ), FOREIGN KEY (nssjefe) REFERENCES Empleado(nss), FOREIGN KEY (nd) REFERENCES Departamento(numerod) ); 156

31 LDD: definición de tablas Especificación de restricciones de tabla (cont.) -Dar nombre a una restricción es opcional, pero muy conveniente CONSTRAINT <nombre_ri> <restricción> - El nombre de restricción debe ser único dentro del mismo esquema - Identifica una restricción, por si después debe ser eliminada o sustituida por otra CREATE TABLE Empleado (..., CONSTRAINT pk_empleado PRIMARY KEY ( nss ), CONSTRAINT nif_unico UNIQUE ( nif ), CONSTRAINT jefe_ok CHECK ( nssjefe <> nss ),... ); 157 LDD: definición de tablas Especificación de restricciones de tabla (cont.) - Si la restricción afecta sólo a una columna, puede especificarse en la definición de dicha columna (en la misma línea) - Por ejemplo, si una clave externa no es compuesta, no se necesita la cláusula FOREIGN KEY CREATE TABLE Empleado ( nombre VARCHAR(15) NOT NULL, nss CHAR(12) PRIMARY KEY, nif CHAR(9) NOT NULL UNIQUE, nssjefe CHAR(12) NULL REFERENCES Empleado(nss), nd NUMERIC(2) NOT NULL REFERENCES Departamento(numerod),..., CONSTRAINT jefe_ok CHECK ( nssjefe <> nss ),... ); 158

32 LDD: definición de tablas Acciones de mantenimiento de la integridad referencial Cláusulas ON DELETE <acción> y ON UPDATE <acción> <acción> { NO ACTION, CASCADE, SET NULL, SET DEFAULT } CREATE TABLE Empleado (..., CONSTRAINT jefe_emp FOREIGN KEY (nssjefe) REFERENCES Empleado(nss) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT dep_emp FOREIGN KEY (nd) REFERENCES Departamento(numerod) ON DELETE NO ACTION ON UPDATE CASCADE ); 159 LDD: definición de vistas Una vista es una tabla derivada de otras tablas Son tablas virtuales, pues no necesariamente existen en forma física Sentencia de definición o creación de una vista CREATE VIEW <nombre_vista> [ (<lista_nombres_columnas>) ] AS <consulta_de_definición> La consulta de definición determina el contenido de la vista contiene las tablas base: tablas o vistas de las que se deriva la vista (también llamadas tablas de definición) CREATE VIEW Familiar_de_Empleado (empleado, familiar, parentesco) AS SELECT nombre, nombre_familiar, parentesco FROM Empleado, Familiar WHERE nss = nsse; 160

33 LDD: definición de vistas Por defecto, la vista hereda los nombres de las columnas... - seleccionadas desde las tablas base - siempre que ninguna columna sea el resultado de una operación aritmética o función de agregados CREATE VIEW Empleado_en_Proyecto AS SELECT nombre, apellido, nombrep, horas FROM Empleado, Proyecto, Trabaja_en WHERE nss = nsse AND nump = numerop ; nombres que hereda la vista Definición de nuevos nombres para columnas de la vista CREATE VIEW Info_Depto (nombre_depto, num_de_emps, sal_total) AS SELECT nombred, COUNT(*), SUM(salario) FROM Departamento, Empleado WHERE numerod = nd GROUP BY nombred ; 161 LDD: definición de vistas Un estado de la vista EMPLEADO_EN_PROYECTO Empleado_en_Proyecto nombre apellido nombrep horas José Silva ProductoX 32.5 Ramón Nieto ProductoZ 40.0 José Silva ProductoY 07.5 Josefa Barceló ProductoX 20.0 Federico Vizcarra ProductoY 10.0 Federico Vizcarra ProductoZ 10.0 Josefa Barceló ProductoY

34 LDD: definición de vistas Las vistas pueden utilizarse como mecanismo de... - Simplificación de consultas - Seguridad (*se verá en el tema de seguridad*) - Adaptación de la información a las necesidades de cada usuario o grupo de usuarios Característica fundamental de las vistas Actualización Permanente - El responsable de esta característica es el SGBD La vista no se crea cuando se define, sino cuando se consulta Una vista no contiene información, sino que deja ver información almacenada en sus tablas base 163 LDD: definición de vistas El SGBD traduce cualquier sentencia SQL sobre la vista a una expresión equivalente sobre sus tablas base: reemplaza el nombre de la vista por su consulta de definición y ejecuta CREATE VIEW Veterano AS SELECT nombre, nif, nss, fechan, nd FROM Empleado WHERE fechan< 01/01/1970 ; Sentencia de usuario SELECT * FROM VETERANO WHERE nombre LIKE G% ; INSERT INTO VETERANO VALUES ( Eva, E, , 14/11/1947, 4); UPDATE VETERANO SET nd=1 WHERE nd=2; DELETE FROM VETERANO WHERE nif = E ; Traducción SELECT nombre, nif, nss, fechan, nd FROM EMPLEADO WHERE fechan < 01/01/1970 AND nombre LIKE G% ; INSERT INTO EMPLEADO (nombre, nif, nss, fechan, nd) VALUES ( Eva E, , 14/11/1947, 4); UPDATE EMPLEADO SET nd=1 WHERE fechan < 01/01/1970 AND nd=2; DELETE FROM EMPLEADO WHERE fechan < 01/01/1970 AND nif = E ; 164

35 LDD: consulta a través de vistas Las vistas no tienen ninguna limitación en operaciones de consulta El usuario no distingue si el elemento al que accede es una tabla base o una vista * Nombres de los empleados y de sus hijos/as SELECT empleado, familiar FROM Familiar_de_empleado WHERE parentesco LIKE Hij_ ; * Datos del departamento Investigación SELECT * FROM Info_Depto WHERE nombre_depto= Investigación ; * Nombres y apellidos de los empleados que trabajan en el proyecto 'ProductoX' SELECT nombre, apellido, nombrep FROM Empleado_en_Proyecto WHERE nombrep= ProductoX ; 165 LDD: modificación a través de vistas La actualización de datos a través de vistas tiene algunas limitaciones - Por un lado, actualizar a través de una vista definida sobre varias tablas base suele dar problemas, pues puede haber ambigüedad UPDATE Empleado_en_Proyecto SET nombrep = ProductoZ WHERE apellido= Silva AND nombre= José AND nombrep= ProductoX ; Esta modificación puede traducirse a dos actualizaciones distintas de las tablas base de la vista (EMPLEADO, PROYECTO y TRABAJA_EN), como se muestra en la siguiente diapositiva 166

36 LDD: modificación a través de vistas UPDATE Trabaja_en SET nump = (SELECT numerop FROM Proyecto WHERE nombrep = ProductoZ ) WHERE nsse = (SELECT nss FROM Empleado WHERE apellido = Silva AND nombre = José ) AND númp = (SELECT numerop FROM Proyecto WHERE nombrep = ProductoX ) ; Modifica los vínculos en TRABAJA_EN: cada fila que relacionaba las filas de José Silva en EMPLEADO y de ProductoX en PROYECTO, pasa a relacionar tal empleado con la fila ProductoZ de PROYECTO UPDATE Proyecto SET nombrep = ProductoZ WHERE nombrep = ProductoX ; Produce igual efecto que pero modifica nombrep en PROYECTO: al calcular la vista, mostrará ProductoZ para todos los que antes aparecían con ProductoX 167 LDD: modificación a través de vistas - Por otro lado, algunas actualizaciones a través de vistas carecen de sentido UPDATE Info_depto SET sal_total = WHERE nombred= Investigación ; sal_total se define como la suma de salarios individuales de los empleados y muchas actualizaciones de las tablas base satisfarían esta actualización Así que no se garantiza que toda vista sea actualizable 168

37 LDD: modificación a través de vistas Una vista sería actualizable si... - Implicara una única actualización posible de las tablas base, o bien -Hubieravarias actualizaciones posibles, pero existiera un procedimiento específico de actualización de tablas base, tal que... El usuario pudiera elegir el procedimiento, especificándolo en la definición de la vista, o bien El SGBD pudiera elegir el procedimiento, según la actualización más probable 169 LDD: modificación a través de vistas En general... - Una vista con una sola tabla base SÍ es actualizable si sus columnas contienen la clave primaria u otra clave candidata de la tabla base Pues se establece una correspondencia entre cada fila de la vista y una única fila de la tabla base - Una vista definida sobre varias tablas mediante reuniones NO es actualizable - Una vista definida mediante agrupación y funciones agregadas NO es actualizable 170

38 LDD: modificación a través de vistas Opción de verificación de vistas CREATE VIEW Emp_Precario AS SELECT nombre, apellido, nss, nif, salario, nd FROM Empleado WHERE salario < 900 ; * Qué pasaría al ejecutar estas sentencias? INSERT INTO Emp_Precario VALUES ( Dimas, Pi', , D, 1025, 1); UPDATE Emp_Precario SET salario = 950 WHERE nif= E ; Cláusula WITH CHECK OPTION - En la definición de toda vista actualizable que se vaya a utilizar para la modificación de datos - Indica al SGBD que debe comprobar cada INSERT y UPDATE sobre la vista, y rechazarlo si su realización implicara que la fila nueva o modificada no cumpliera la condición de definición CREATE VIEW Emp_Precario AS SELECT nombre, apellido, nss, salario, nd FROM Empleado WHERE salario < 900 WITH CHECK OPTION ; 171 LDD: implementación de vistas 1. Estrategia de actualización de consultas de definición - Cada consulta sobre la vista se traduce a una consulta sobre las tablas base - La vista se rellena de filas a partir de la ejecución de la consulta - Poco eficiente cuando la <consulta_de_definición> es compleja, con tiempo de ejecución apreciable, y se aplican muchas consultas sobre la vista en poco tiempo 2. Estrategia de materialización de vistas - 1ª consulta sobre la vista creación de tabla temporal física - Se conserva la tabla para posteriores consultas sobre la vista - Necesaria estrategia para actualización incremental de la tabla temporal tras cualquier modificación sobre las tablas base actualización permanente - Si no se hace referencia a la vista tras un tiempo, el sistema la eliminará (y la recalculará en una consulta futura) 172

39 LDD: Modificación de la estructura (alteración) de los elementos del esquema de base de datos Alteración de tablas: ALTER TABLE <nombre_tabla>... ; Adición y Eliminación de Columnas Modificación de la Definición de Columnas Adición y Eliminación de Restricciones de Tabla Alteración de dominios: ALTER DOMAIN <nombre_dominio>... ; Eliminación y Adición de valor por defecto Eliminación y Adición de Restricciones de Dominio 173 LDD: alteración de tablas Adición de una columna a una tabla ya existente ALTER TABLE <nombre_tabla> ADD <definición_columna> ; No está permitido NOT NULL en la definición de una nueva columna (si es necesaria esta restricción, podrá establecerse después) * Añadir una columna a EMPLEADO para contener el puesto de trabajo ALTER TABLE Empleado ADD puesto VARCHAR(12); Todas las filas de EMPLEADO tendrán puesto a NULL Para introducir un valor para la columna, en cada fila existente: Especificar la cláusula DEFAULT al añadir la columna: ALTER TABLE Empleado ADD puesto VARCHAR(12) DEFAULT aprendiz ; Utilizar después una orden UPDATE 174

40 LDD: alteración de tablas Eliminación de una columna de una tabla ALTER TABLE <nombre_tabla> DROP <nombre_columna> <opción>; <opción> puede ser... CASCADE: elimina la columna y toda restricción o vista que le hace referencia RESTRICT: sólo elimina la columna si ninguna vista ni restricción le referencia * Eliminación de la columna dirección de la tabla EMPLEADO ALTER TABLE Empleado DROP direccion CASCADE; ALTER TABLE Departamento DROP numerod <opción>; Si <opción> = RESTRICT: no elimina la columna numerod, pues existe una columna EMPLEADO.nd que le hace referencia Si <opción> = CASCADE: elimina la columna y la restricción de integridad referencial que vincula EMPLEADO.nd con DEPARTAMENTO. La columna EMPLEADO.nd no es eliminada, pero deja de ser clave ajena 175 LDD: alteración de tablas Modificación de la definición de una columna ALTER TABLE <nombre_tabla> ALTER <nombre_columna> <acción> ; <acción> indica la modificación que se desea realizar... Eliminación de la cláusula DEFAULT existente ALTER TABLE Departamento ALTER nssdire DROP DEFAULT; Definición de un nuevo valor por omisión ALTER TABLE Departamento ALTER nssdire SET DEFAULT ; 176

41 LDD: alteración de tablas Modificación de una restricción de tabla La restricción que se desea modificar debe tener un nombre Eliminación de una restricción de tabla ALTER TABLE <nombre_tabla> DROP CONSTRAINT <nombre_ri> <opción>; ALTER TABLE Empleado DROP CONSTRAINT jefe_emp CASCADE; Adición de una restricción de tabla ALTER TABLE <nombre_tabla> ADD CONSTRAINT <nombre_ri> <definición_ri>; ALTER TABLE Empleado ADD CONSTRAINT salario_ok CHECK (salario > 0); ALTER TABLE Empleado ADD CONSTRAINT puesto_ok CHECK (puesto IS NOT NULL); 177 LDD: alteración de dominios Orden ALTER DOMAIN <nombre_dominio> <acción>; <acción> indica la modificación que se desea realizar... Eliminación y Reemplazo del valor por omisión ALTER DOMAIN <nombre_dominio> DROP DEFAULT; ALTER DOMAIN <nombre_dominio> SET DEFAULT <valor>; Eliminación y Definición de nuevas restricciones de dominio ALTER DOMAIN <nombre_dominio> DROP CONSTRAINT <nombre_ri_dominio>; ALTER DOMAIN <nombre_dominio> ADD [ CONSTRAINT <nombre_ri_dominio> ] <restricción>; 178

42 LDD: eliminación de elementos del esquema Eliminación de una vista. Orden DROP VIEW Destruye una tabla derivada, junto con su definición en el INFORMATION_SCHEMA del catálogo DROP VIEW <nombre_vista> ; Eliminación de un dominio. Orden DROP DOMAIN Destruye un dominio de datos, junto con su definición en el INFORMATION_SCHEMA del catálogo DROP DOMAIN <nombre_dominio> <opción> ; <opción> puede ser... RESTRICT: destruye el dominio si no hay ninguna columna definida sobre él CASCADE: se elimina el dominio y toda columna definida sobre él pasa a tener el tipo de datos sobre el que se había definido el dominio (este aspecto es ampliado en el tema Integridad en sistemas de bases de datos relacionales ) 179 LDD: eliminación de elementos del esquema Eliminación de una tabla. Orden DROP TABLE Destruye una tabla base, junto con su definición en el INFORMATION_SCHEMA del catálogo DROP TABLE <nombre_tabla> <opción>; <opción> puede ser... RESTRICT: Destruye la tabla sólo si no se le hace referencia desde ninguna otra tabla (clave ajena), ni es tabla base de una vista CASCADE: Elimina la tabla junto con restricciones y vistas que la referencian Eliminación de un esquema. Orden DROP SCHEMA Destruye un esquema de BD, junto con su definición en el INFORMATION_SCHEMA del catálogo DROP SCHEMA <nombre_esquema> <opción>; <opción> puede ser... RESTRICT: Destruye el esquema sólo si no contiene ningún elemento CASCADE: Elimina el esquema y las tablas, dominios y demás elementos contenidos en el esquema 180

43 2.5. Integridad en Sistemas de Bases de Datos Relacionales Tipos de restricciones Reglas de integridad: consideraciones generales y componentes Reglas de integridad en SQL-92 Reglas de integridad de dominio Reglas de integridad de tabla Reglas de integridad generales y Disparadores Comprobación de restricciones Reglas de integridad Integridad: consistencia o corrección de datos en la base de datos Las reglas de integridad (RI) no son específicas para cada usuario Consideraciones generales 1. Nos interesan las reglas de integridad específicas de una BD (reglas del negocio), además de RI Entidad, RI Referencial Veremos las RI definidas sobre tablas base - Por estar restringidas a contener datos correctos (reflejar la realidad) La regla los títulos de las películas son únicos se aplica a la tabla base PELICULA, y también a cualquier vista definida sobre ésta - Podemos definir RI sobre una vista (tabla derivada)? Sería deseable La vista heredaría toda RI de sus tablas base y podría añadir nuevas (ejemplo: clave primaria o alternativa nueva para la vista) Sólo consideraremos RI sobre tablas base (por simplicidad) 182

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ] SINTAXIS DE SQL-92 Introducción: Se presenta brevemente un resumen de la sintaxis de SQL según el estándar ISO 9075 (SQL- 92), dividido en tres partes: - Lenguaje de Definición de Daots (LDD), - Lenguaje

Más detalles

SQL: Origen. Structured Query Language ( SQL ) Por qué SQL? SQL: Evolución

SQL: Origen. Structured Query Language ( SQL ) Por qué SQL? SQL: Evolución SQL: Origen El SQL ha sido adoptado como un estándar oficial en los Estados Unidos de América por el American National Standards Institute (ANSI), y como un estándar internacional por la International

Más detalles

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011 Structured Query Language () Fundamentos de Bases de Datos InCo - Un poco de historia Lenguajes de consulta relacionales: SEQUEL (IBM-1970) QUEL (Ingres-1970) QBE (IBM-1970) es el lenguaje comercial más

Más detalles

SQL. Orígenes y Evolución

SQL. Orígenes y Evolución SQL 1 SQL. Orígenes y Evolución 2 SQL: Estándar oficial 3 Funciones de SQL DDL Data Definition Language Creación n de estructuras de la base de datos Integridad de los datos DML Data Manipulation Language

Más detalles

Bases de Datos 2. Teórico

Bases de Datos 2. Teórico Bases de Datos 2 Teórico Structured Query Language (SQL) Características de SQL Standard Opera sobre conjuntos de tuplas: incluso para las operaciones de inserción, borrado y actualización. No elimina

Más detalles

Bases de Datos: Structured Query Language (SQL)

Bases de Datos: Structured Query Language (SQL) Structured Query Language (SQL): Introducción Bases de Datos: Structured Query Language (SQL) Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales * Definición de datos en SQL * Consulta de datos en SQL - Estructura básica de una sentencia

Más detalles

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS Hasta ahora hemos visto consultas que obtienen los datos de una sola tabla,

Más detalles

Práctica 3. Consultas SQL

Práctica 3. Consultas SQL Práctica 3. Consultas SQL 1. Enunciado En este ejercicio se realizarán consultas SQL que respondan a las preguntas que se plantearán sin utilizar QBE. Dada una base de datos denominada Empresa y definida

Más detalles

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 1 SQL Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 2 Structured Query Language Lenguaje de consulta para bases de datos comerciales. Originalmente llamado

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

Tema 4. SQL. Juan Ignacio Rodríguez de León

Tema 4. SQL. Juan Ignacio Rodríguez de León Tema 4. SQL Juan Ignacio Rodríguez de León Resumen Este tema se centra exclusivamente en el estudio del lenguaje de consultas SQL (Structured Query Language). SQL usa una combinación de álgebra relacional

Más detalles

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Práctica preliminar Crear la siguiente base de datos de prácticas

Más detalles

Temario. Índices simples Árboles B Hashing

Temario. Índices simples Árboles B Hashing Temario Introducción y fundamentos Introducción a SQL Modelo Entidad / Relación Modelo relacional Diseño relacional: formas normales Consultas Cálculo relacional Álgebra relacional Implementación de bases

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Base de datos I Facultad de Ingeniería. Escuela de computación.

Base de datos I Facultad de Ingeniería. Escuela de computación. Base de datos I Facultad de Ingeniería. Escuela de computación. Introducción Este manual ha sido elaborado para orientar al estudiante de Bases de datos I en el desarrollo de sus prácticas de laboratorios,

Más detalles

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite

Más detalles

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL) OBJETIVOS: Enseñar al alumno las sentencias que forman el lenguaje de definición de datos de SQL, es decir, el subconjunto de órdenes que nos permitirán crear o editar esquemas de bases de datos. MATERIAL:

Más detalles

Restricciones de Integridad

Restricciones de Integridad Restricciones de Integridad Amparo López Gaona México, D.F. Semestre 2000-I Restricciones de Integridad Las principales restricciones de integridad que pueden indicarse son: La clave primaria. Claves candidatas.

Más detalles

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar / S Q Lenguaje de Consulta Estructurado L Wael Najjar / Wael Stephenson Najjar / Prieto Stephenson Prieto Contenido Parte I El Lenguaje de Consulta Estructurado. Lo que se puede hacer. Lenguaje Estandarizado.

Más detalles

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programación de sitios web Act 11: Reconocimiento de la unidad 3

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programación de sitios web Act 11: Reconocimiento de la unidad 3 GESTORES DE BASES DE DATOS Existen varios tipos de Sistemas gestores de bases de datos SGBD, según el modelo de datos que utilizan. Son estos: bases jerárquica, en red, relacional, y bases de datos orientadas

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 9. Reglas de Integridad 1.- Introducción. 2.- Claves Primarias. 3.- Regla de Integridad de Entidades. 4.- Claves Ajenas. 5.- Regla de Integridad

Más detalles

SQL (DML) Carlos A. Olarte (carlosolarte@puj.edu.co) Gestión y Modelación de SQL Datos (DML)

SQL (DML) Carlos A. Olarte (carlosolarte@puj.edu.co) Gestión y Modelación de SQL Datos (DML) SQL (DML) Carlos A. Olarte (carlosolarte@puj.edu.co) Gestión y Modelación de Datos Outline 1 Actualización, Inserción y Modificación 2 Consultas (Queries) 3 Renombramiento 4 Ordenamiento 5 Reuniones 6

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

Bases de Datos Relacionales

Bases de Datos Relacionales 2da. Parte Bases de Datos Relacionales Objetivos de la Clase SQL. Tipos de sentencias SQL Describir los tipos de dato que se pueden utilizar al especificar la definición de columnas. Sentencias SQL Select.

Más detalles

TEMA 20: CONCEPTOS BÁSICOS DE SQL

TEMA 20: CONCEPTOS BÁSICOS DE SQL TEMA 20: CONCEPTOS BÁSICOS DE SQL OBJETIVOS DEL TEMA Introducción al lenguaje de consultas SQL. Para iniciar esta parte del curso se va a utilizar el programa SQLITE que es sencillo, multiplataforma y

Más detalles

BASE DE DATOS RELACIONALES

BASE DE DATOS RELACIONALES BASE DE DATOS RELACIONALES Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya

Más detalles

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en

Más detalles

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS AUTORÍA JOSEFA PÉREZ DOMÍNGUEZ TEMÁTICA NUEVAS TECNOLOGIAS ETAPA CICLOS FORMATIVOS DE GRADO SUPERIOR DE INFORMÁTICA Resumen En esta publicación se

Más detalles

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES EL LENGUAJE SQL. INSTRUCCIONES DE DEFINICIÓN DE. INSTRUCCIONES DE INSERCIÓN, MODIFICACIÓN Y BORRADO.. CREACIÓN Y UTILIZACIÓN DE VISTAS... PROCEDIMIENTOS. EL LENGUAJE SQL 1 EL LENGUAJE SQL 2 SQL ES UN LENGUAJE

Más detalles

Lenguaje para descripción de datos

Lenguaje para descripción de datos Amparo López Gaona tación Fac. Ciencias, UNAM Mayo 2012 Definición de Datos El lenguaje para definición de datos permite especificar: Esquema de cada relación. El dominio de cada atributo. Restricciones

Más detalles

6- Combinación de tablas

6- Combinación de tablas Objetivos: 6- Combinación de tablas Utiliza sentencias para unir los datos de diferentes tablas. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Script de bases de datos. Introducción

Más detalles

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES) EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES) Por qué son importantes las Bases de Datos? Las Bases de Datos son el método preferido para el almacenamiento estructurado de datos.

Más detalles

Unidad. Lenguaje SQL. (Structured Query Language)

Unidad. Lenguaje SQL. (Structured Query Language) Unidad Lenguaje SQL (Structured Query Language) 1 SQL Definición DDL Consulta y Actualización DML Create Alter Drop Select Insert Update Delete 2 SQL DDL CREATE TABLE nombre_tabla (nombre_columna tipo_dato/dominio

Más detalles

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta Operaciones en el Modelo Relacional Bases de Datos Ingeniería a Técnica T en Informática de Sistemas El interés de los usuarios de las bases de datos se suele centrar en realizar consultas (contestar a

Más detalles

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional El Modelo Relacional es un modelo de datos que nos permite describir la estructura de una base de datos a nivel lógico. En 1969, Edgar Frank Ted Codd (1923-2003) introduce el modelo relacional con una

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 8. Elementos Básicos 1.- Ejemplo Introductorio. 2.- Dominios. 3.- Relaciones. 4.- Bases de Datos Relacionales. (Capítulo 11 del Date) EJEMPLO

Más detalles

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl Resumen demandas de almacenamiento y procesamiento de datos. Es el conjunto de estas dos capacidades

Más detalles

Conceptos Avanzados de Bases de datos

Conceptos Avanzados de Bases de datos Página 1 Conceptos Avanzados de Bases de datos (1) Introducción a las Bases de Datos (2) Lenguaje Estándar de Consultas SQL Definición formal SQL Página 2 Es un conjunto exhaustivo (en su modelización

Más detalles

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas OPTIMIZACIÓN DE CONSULTAS EN SQL Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas Análisis de Consultas y Transacciones Para elaborar el diseño físico de la base de datos debemos

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación

Más detalles

Base de Datos Práctica 1.

Base de Datos Práctica 1. Base de Datos Práctica 1. Objetivo: Introducción al Mysql, aprender a identificar los errores más comunes en la creación de las bases de datos para su solución, conocer los diferentes tipos de datos y

Más detalles

select nombre from profesores where categoria='aso6';

select nombre from profesores where categoria='aso6'; 1 de 10 17/05/2013 14:00 Lecciones SQL > T11 Conjuntos Operaciones de conjuntos y MySQL Un operador sobre conjuntos combina el resultado de dos sentencias select en un único resultado. Dependiendo del

Más detalles

5- Uso de sentencias avanzadas

5- Uso de sentencias avanzadas Objetivos: 5- Uso de sentencias avanzadas Elaborar sentencias de manejo de datos. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Introducción: Después de trabajar con las sentencias

Más detalles

T12 Vistas y tablas temporales

T12 Vistas y tablas temporales 1 de 9 17/05/2013 14:01 Lecciones SQL > T12 Vistas y tablas temporales En esta sesión vamos a mostrar dos tipos de objetos de uso habitual en cualquier SGBD: las vistas y las tablas temporales. Mientras

Más detalles

Algebra Relacional Jos e Ram on Param a Gab ıa

Algebra Relacional Jos e Ram on Param a Gab ıa Álgebra Relacional Ramón Paramá Gabía Capítulo 4 Algebra relacional Ya hemos visto la estructura y las restricciones del modelo relacional, ahora pasamos a abordar la parte del modelo relacional que nos

Más detalles

- Bases de Datos - - Diseño Físico - Luis D. García

- Bases de Datos - - Diseño Físico - Luis D. García - Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo

Más detalles

DML en SQL. Consultas sencillas usando el DML de SQL

DML en SQL. Consultas sencillas usando el DML de SQL DML en SQL Consultas sencillas usando el DML de SQL Base Datos de Películas Para rellenar la base se ha utilizado información proveniente de The internet Movie- Database http://www.imdb.com/list Todos

Más detalles

SQL Server 2000. FEMEPA SQL Server 2000

SQL Server 2000. FEMEPA SQL Server 2000 FEMEPA Partes del SQL El lenguaje SQL está compuesto de varios sub-lenguajes, entre los cuales destacan los tres siguientes: DML. Lenguaje de definición de datos. Todas las sentencias de manipulación de

Más detalles

Integridad en sistemas de bases de datos relacionales

Integridad en sistemas de bases de datos relacionales Integridad en sistemas de bases de datos relacionales Competencias específicas a adquirir Asegurar la integridad de los datos mediante la aplicación de los mecanismos soportados por los SGBDs. Identificar

Más detalles

Bases de Datos - 2006. SQL - Ejemplos

Bases de Datos - 2006. SQL - Ejemplos Bases de Datos - 2006 SQL - Ejemplos Consideramos la siguiente base de datos relacional: persona(dni,primer-nombre,apellido) biblioteca(nombre-biblioteca,calle,número) libro(título,isbn,editorial,edición)

Más detalles

Restricciones (constraints) FOREIGN KEY

Restricciones (constraints) FOREIGN KEY INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP 1 Restricciones (constraints) FOREIGN KEY InnoDB también soporta restricciones de claves foráneas. La sintaxis para definir una restricción de clave foránea

Más detalles

BASES DE DATOS - SQL. Javier Enciso

BASES DE DATOS - SQL. Javier Enciso BASES DE DATOS - SQL Javier Enciso AGENDA Conceptos Básicos de Bases de Datos Manejo de Bases de Datos y Tablas SQL Inserción, Actualización y Borrado Consultas usando SELECT AGENDA Conceptos Básicos de

Más detalles

MÓDULO 1: ORGANIZACIÓN Y ESTRUCTURA DE LA INFORMACIÓN. Tema 3: Interrogación y explotación de datos. Leire Aldaz, Begoña Eguía y Leire Urcola

MÓDULO 1: ORGANIZACIÓN Y ESTRUCTURA DE LA INFORMACIÓN. Tema 3: Interrogación y explotación de datos. Leire Aldaz, Begoña Eguía y Leire Urcola MÓDULO 1: ORGANIZACIÓN Y ESTRUCTURA DE LA INFORMACIÓN Leire Aldaz, Begoña Eguía y Leire Urcola Índice del tema Introducción al lenguajes SQL Consultas en lenguaje SQL y QBE Predicados y funciones INTRODUCCIÓN

Más detalles

CONSULTAS DE RESUMEN SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS DE RESUMEN SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes

Más detalles

Teórico 9 Del MER al MR

Teórico 9 Del MER al MR Teórico 9 Del MER al MR Introducción Veremos cómo traducir un modelo conceptual, en forma de Modelo Entidad-Relación, en un modelo lógico de base de datos, en forma de Modelo Relacional. Para esto, estudiaremos

Más detalles

Diseño de bases de datos

Diseño de bases de datos Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes sn. 41012 Sevilla TlfFax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es Diseño

Más detalles

MANUAL BÁSICO DEL LENGUAJE SQL

MANUAL BÁSICO DEL LENGUAJE SQL MANUAL BÁSICO DEL LENGUAJE SQL ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO INTRODUCCIÓN... 3 1. COMANDOS... 4 1.1 Comandos DLL... 4

Más detalles

Introducción a las bases de datos.

Introducción a las bases de datos. Introducción a las BBDD 1 Centro de Referencia Linux UAM-IBM Introducción a las bases de datos. Carmen B. Navarrete Navarrete carmen_navarrete@telefonica.net Introducción a las BBDD 2 Qué vamos a ver?

Más detalles

Trabajos de Ampliación. Bases de datos NoSQL.

Trabajos de Ampliación. Bases de datos NoSQL. BASES DE DATOS NoSql Son bases de datos pensadas para aplicaciones que hagan un uso intensivo de la misma. Estas bases de datos permiten una mayor flexibilidad y facilidad a la hora de introducir los datos

Más detalles

SQL SQL. Índice. Componentes. Objetivos

SQL SQL. Índice. Componentes. Objetivos Estándar En 1986, ANSI (American National Standard Institute) definión un estándar para (Structured Query Language) que fue posteriormente adoptado en 1987 como estándar internacional por ISO (International

Más detalles

SQL (Structured Query Language)- DML

SQL (Structured Query Language)- DML SQL (Structured Query Language)- DML Data Manipulation Language: Data Definition Language: Control Commands: Authorization Commands: SELECT, UPDATE, INSERT, DELETE CREATE: TABLE, INDEX, VIEW DROP: TABLE,

Más detalles

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala OPERADOR UNION (L30) UNION UNION OPERADOR INTERSECCION (L31) OPERADOR RELACIONAL INTERSECCION, DEVUELVE REGISTROS CON CAMPOS COMUNES. LAS TABLAS INVOLUCREADAS DEBEN TENER

Más detalles

Procedimientos para agrupar y resumir datos

Procedimientos para agrupar y resumir datos Procedimientos para agrupar y resumir datos Contenido Introducción Presentación de los primeros n valores Uso de funciones de agregado 4 Fundamentos de GROUP BY 8 Generación de valores de agregado dentro

Más detalles

ÍNDICE. Introducción... Capítulo 1. Novedades de Access 2013... 1

ÍNDICE. Introducción... Capítulo 1. Novedades de Access 2013... 1 Introducción... XIII Capítulo 1. Novedades de Access 2013... 1 Nuevas posibilidades de cifrado, compactación y reparación de archivos... 1 Trabajo en la nube... 2 Compartir la información... 3 Guardar

Más detalles

EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN

EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN Una compañía de materiales de construcción quiere automatizar su sistema de ventas y facturación. Para ello deciden contratar los servicios de una

Más detalles

Sub consultas avanzadas

Sub consultas avanzadas Sub consultas avanzadas Objetivo Después de completar este capítulo conocerá lo siguiente: Escribir una consulta de múltiples columnas Describir y explicar el comportamiento de las sub consultas cuando

Más detalles

Introducción al álgebra relacional. Con ejemplos en SQL

Introducción al álgebra relacional. Con ejemplos en SQL OpenStax-CNX module: m18351 1 Introducción al álgebra relacional. Con ejemplos en SQL Miguel-Angel Sicilia This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License

Más detalles

CONSULTAS BASICAS EN SQL SERVER

CONSULTAS BASICAS EN SQL SERVER CONSULTAS BASICAS EN SQL SERVER CONSULTAS DE SELECCION Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta

Más detalles

Bases de datos relacionales y el modelo entidad-relación

Bases de datos relacionales y el modelo entidad-relación Bases de datos relacionales y el modelo entidad-relación Qué es una base de datos relacional? El sistema gestor de bases de datos El modelo entidad-relación entidad, atributos y elementos (tablas, columnas

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

EXISTS y NOT EXISTS. Empleados que no trabajan en el proyecto 527.

EXISTS y NOT EXISTS. Empleados que no trabajan en el proyecto 527. EMPLEADO(dni,nombree,direccion, sexo,salario,fecha_nac,dni_super,numerod ) DEPARTAMENTO(numerod,nombred,dni_dir, fecha_ini) PROYECTO(numerop,nombrep,lugar,numerod ) TRABAJA_EN(dni,numerop,horas) 54 EXISTS

Más detalles

UNION, INTERSECCION Y DIFERENCIA. SELECT TABLE Expresión con operador de reunión (SELECT * FROM PROFESOR) UNION (SELECT * FROM ESTUDIANTE)

UNION, INTERSECCION Y DIFERENCIA. SELECT TABLE Expresión con operador de reunión (SELECT * FROM PROFESOR) UNION (SELECT * FROM ESTUDIANTE) UNION, INTERSECCION Y DIFERENCIA Las tablas deben tener el mismo número de columnas y con el mismo tipo Los operandos de estos tres operadores pueden ser: SELECT TABLE Expresión con operador de reunión

Más detalles

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO LENGUAJE DE CONSULTA ESTRUCTURADO - SQL 1. TIPOS DE DATOS 2. COMANDOS DDL 2.1 Créate 2.2 Drop 2.3 Alter 3. COMANDOS DML 3.1 Select 3.2 Insert 3.3 Update 3.4 Delete 4. CLAUSULAS 4.1 From 4.2 Where 4.3 Having

Más detalles

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo: TEMA 7.- EL ESTANDAR SQL. El Sublenguaje de Manipulación. El Sublenguaje de Definición. El Sublenguaje de Control. El Sublenguaje Huésped. 1. El Sublenguaje de Manipulación. (Se verá en la clase de problemas)

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

Tema 4. Lenguajes de consulta comerciales

Tema 4. Lenguajes de consulta comerciales Tema 4. Lenguajes de consulta comerciales 4.1. Introducción En el tema anterior hemos estudiado las operaciones del álgebra relacional y el cálculo relacional, imprescindibles para entender las consultas

Más detalles

3.2 Operaciones aritmético-lógicas en Pascal

3.2 Operaciones aritmético-lógicas en Pascal 3.2 Operaciones aritmético-lógicas en Pascal Operadores Los operadores sirven para combinar los términos de las expresiones. En Pascal, se manejan tres grupos de operadores : 1. ARITMÉTICOS 2. RELACIONALES

Más detalles

Base de datos Lenguaje SQL

Base de datos Lenguaje SQL Base de datos Lenguaje SQL Universidad Nacional Andrés Bello Contenidos 1 2 Ejemplo Ejemplo Distinct Ejemplo - I Ejemplo - II Ejemplo Ejemplo Top - I Ejemplo Top - II Contenidos 1 2 Ejemplo Ejemplo Distinct

Más detalles

Diseño de Bases de Datos Bases de Datos Documentales Grao en Información e Documentación Curso 2013/2014

Diseño de Bases de Datos Bases de Datos Documentales Grao en Información e Documentación Curso 2013/2014 Bases de Datos Documentales Curso 2013/2014 Miguel Ángel Rodríguez Luaces Laboratorio de Bases de Datos Universidade da Coruña El proceso de diseño El último día... Los problemas de no utilizar un SGBD:

Más detalles

Tema 33. El lenguaje SQL

Tema 33. El lenguaje SQL Tema 33. El lenguaje SQL Introducción... 1 Modos de uso... 2 Ejecución de las sentencias SQL... 2 Instrucciones DDL Data Definition Language-... 3 Instrucciones DML Data Manipulation Language-... 4 Instrucciones

Más detalles

6 - Recuperar algunos registros (where)

6 - Recuperar algunos registros (where) 6 - Recuperar algunos registros (where) Hemos aprendido a seleccionar algunos campos de una tabla. También es posible recuperar algunos registros. Existe una cláusula, "where" con la cual podemos especificar

Más detalles

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS EXPLOTACIÓN DE BASES DE DATOS CON ACCESS Por qué son importantes las Bases de Datos? Las Bases de Datos son el método preferido para el almacenamiento estructurado de datos. Desde las grandes aplicaciones

Más detalles

3. El catálogo 26. Laboratorio de Bases de Datos

3. El catálogo 26. Laboratorio de Bases de Datos ÍNDICE Continuación SQL Índice 1. Continuación del SQL como DML (Lenguaje de Manipulación de Datos) 1 1.1. Inserción de datos................................. 1 1.2. Borrado de datos..................................

Más detalles

CURSO DE SQL SERVER 2005

CURSO DE SQL SERVER 2005 CURSO DE SQL SERVER 2005 Una vez finalizado el curso, el alumno estará preparado para: Instalar y configurar SQL Server 2005. Comprender los conceptos más importantes del diseño de bases de datos. Crear

Más detalles

8 SQL SERVER 2008 RA-MA

8 SQL SERVER 2008 RA-MA ÍNDICE Capítulo 1. Características, novedades y entorno de trabajo... 17 1.1 Novedades en SQL Server 2008... 17 1.2 Instalación de Microsoft SQL Server 2008... 19 1.3 Versiones de Microsoft SQL Server

Más detalles

Tema 4. Manipulación de datos con SQL

Tema 4. Manipulación de datos con SQL Tema 4 Manipulación de datos con SQL Índice Tema 4 1. Inserción de registros. Consultas de datos anexados. 2. Modificación de registros. Consultas de actualización. 3. Borrado de registros. Consultas de

Más detalles

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional Tema 7: Modelo Relacional 1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional Dominios, Atributos, Relaciones Representación del esquema relacional Características de

Más detalles

6. Integridad en Sistemas de Bases de Datos Relacionales

6. Integridad en Sistemas de Bases de Datos Relacionales 6. Integridad en Sistemas de Bases de Datos Relacionales Objetivos Apreciar la necesidad de garantizar la integridad o corrección de la información almacenada en una base de datos Distinguir e identificar

Más detalles

El lenguaje SQL es un lenguaje estándar para el acceso y

El lenguaje SQL es un lenguaje estándar para el acceso y 1. INTRODUCCIÓN El lenguaje SQL es un lenguaje estándar para el acceso y manipulación de bases de datos relacionales como SQL Server. Esto quiere decir que aprender SQL es algo indispensable para cualquier

Más detalles

S.Q.L. (Lenguaje de Consulta Estructurada)

S.Q.L. (Lenguaje de Consulta Estructurada) S.Q.L. (Lenguaje de Consulta Estructurada) S.Q.L. - Consultas SQL tiene una instrucción básica para obtener información de una base de datos: la instrucción SELECT (seleccionar). Básicamente la instrucción

Más detalles

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints Crear Una Base De Datos (L12) A TRAVÉS DE LA CONSOLA DE ADMINISTRACIÓN A TRAVÉS DEL ASISTENTE DE BASES DE DATOS (DATABASE WIZARD) A TRAVÉS DE COMANDOS SQL (CREATE DATABASE, CREATE TABLE) Crear Un Grupo

Más detalles

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática Manejo básico de base de datos Unas de las capacidades de Excel es la de trabajar con listas o tablas de información: nombres, direcciones, teléfonos, etc. Excel puede trabajar con tablas de información

Más detalles

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

Bases de Datos 3º Informática de Sistemas

Bases de Datos 3º Informática de Sistemas TEMA 2.- EL SISTEMA GESTOR DE BASES DE DATOS. Concepto y Funciones del SGBD. Lenguajes de los SGBD. Niveles de Abstracción. Arquitectura ANSI/SPARC. Componentes del SGBD. 1. Concepto y Funciones del SGBD.

Más detalles