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

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

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

Transcripción

1 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 Standards Organization (ISO) Structured Query Language ( SQL ) La versión original fue la desarrollada en el San Jose Research Laboratory de IBM a partir del proyecto System R a principios de Por qué SQL? SQL es un lenguaje de alto nivel, con el cual los programadores pueden evitar especificar muchos detalles de la manipulación de datos que serían necesarios en lenguajes como C++ por ejemplo. SQL: Evolución 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) Lo que hace a SQL viable es que sus consultas se optimizan de manera adecuada produciendo una ejecución de consultas más eficiente. Primeras implementaciones: ORACLE (finales 70) y poco después INGRES

2 SQL: Evolución Año Nombre SQL-86 SQL-89 SQL-92 SQL:1999 SQL:2003 SQL:2006 SQL-87 FIPS SQL2, FIPS SQL3 Alias First published by ANSI. Ratified by ISO in Minor revision, adopted as FIPS Comentarios Major revision (ISO 9075), Entry Level SQL-92 adopted as FIPS Added regular expression matching, recursive queries, triggers, support for procedural and control-of-flow statements, non-scalar types, and some objectoriented features. Introduced XML-related features, window functions, standardized sequences, and columns with auto-generated values (including identity-columns). ISO/IEC :2006 defines ways in which SQL can be used in conjunction with XML. It defines ways of importing and storing XML data in an SQL database, manipulating it within the database and publishing both XML and conventional SQL-data in XML form. In addition, it provides facilities that permit applications to integrate into their SQL code the use of XQuery, the XML Query Language published by the World Wide Web Consortium (W3C), to concurrently access ordinary SQL-data and XML documents. The SQL standard is not freely available. SQL:2003 and SQL:2006 may be purchased from ISO or ANSI. A late draft of SQL:2003 is freely available as a zip archive, however, from Whitemarsh Information Systems Corporation. The zip archive contains a number of PDF files that define the parts of the SQL: specification. SQL: Características 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 Entry SQL Intermediate SQL Full SQL 102 Abordaremos Principalmente SQL92 Temas a tratar... 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) Procedimientos y funciones Seguridad y Control de Acceso 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

3 EMPLEADO NOMBRE APELLIDO NSSE NSS RFC OFICINA_DEPTO TRABAJA_EN FAMILIAR NSSE NOMBRE_FAMILIAR PROECTO NOMBREP NUMP FECHAN DIRECCION DEPARTAMENTO NOMBRED NUMEROD NUMEROD SEXO HORAS OFICINA NUMEROP FECHAN LUGARP PARENTESCO SEXO NSSDIRE SALARIO NUMEROD NSSJEFE FECHAINICDIRE Base Datos ejemplo: COMPAÑÍA 105 ND 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 consulta selecciona las filas de <lista tablas> que satisfacen <condición> y proyecta el resultado sobre las columnas de <lista columnas> 106 La orden SELECT... 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 107 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; 108

4 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; 109 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; 110 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% ; 111 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 112

5 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 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; 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; 113 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; 114 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; 115 orden de presentación SQL permite presentar las filas resultado de una consulta de forma ordenada: Cláusula ORDER B 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, nombrep FROM Departamento, Empleado, Trabaja_en, Proyecto WHERE numerod=nd AND nss=nsse AND nump=numerop 116 ORDER B nombred DESC, apellido ASC, nombre ASC;

6 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; 117 Tablas como conjuntos 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 trabajad 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 118 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); conjuntos explícitos Operador AN (o SOME) v <op> AN 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 = AN (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); 119 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); 120

7 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 PROECTO 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 121 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 122 FROM Trabaja_en WHERE nsse= ); comparar conjuntos Operador AN o SOME (otro uso del mismo operador) t <op> AN 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 de departamento 5 SELECT nombre, apellido FROM Empleado WHERE salario < ALL ( SELECT salario FROM Empleado WHERE nd=5 ); Mejor con DISTINCT en la subconsulta? 123 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 ); 124

8 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 ; 125 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); 126 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 Nulos Null Ausencia o desconocimiento de información Comparar NULL con cualquier cosa da FALSE * 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 ); 127 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; 128

9 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á*) 129 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!! 130 Funciones agregadas 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 ); Agrupación Cláusula GROUP B 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 B nd ; una columna de agrupación 131 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 132

10 Agrupación Cláusula HAVING Siempre junto a GROUP B 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 B numerop, nombrep HAVING COUNT(*) > 2 ; 133 Agrupación WHERE... se aplica a filas individuales HAVING... se aplica a grupos de filas * Nº de empleados cuyos salarios superan los $15,000 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>15000 GROUP B nombred HAVING COUNT(*) > 5 ; (* pista: orden de ejecución *) (* Consulta correcta *) SELECT nombred, COUNT(*) FROM Departamento, Empleado WHERE númerod=nd AND salario>15000 AND nd IN (SELECT nd FROM Empleado GROUP B nd HAVING COUNT(*) > 5) GROUP B nombred ; 134 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 WHERE nombred= Investigacion AND nd=numerod; reunión de tablas 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) WHERE nombred= Investigacion ; tabla reunida 135 Tablas reunidas: 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 ; 136

11 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> 137 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 ; 138 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) 139 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> obtener FROM <lista tablas> WHERE <condición para filas> GROUP B <lista columnas agrupación> HAVING <condición para grupos> ORDER B <lista columnas ordenación> columnas o funciones que se van a tablas necesarias (incluso las reunidas) condiciones para selección de filas especificación del agrupamiento de filas condición para selección de grupos de filas orden de presentación del resultado 140

12 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 B 4) HAVING 5) SELECT 6) ORDER B 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 141 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 142 y mínimo ordenamiento implícito SQL-92: 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 ) ; SQL-92: Inserción de datos 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 ) ;

13 SQL-92: Inserción de datos 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! 145 SQL-92: Inserción de datos 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 B 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á*) 146 SQL-92: 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 ; DELETE FROM Empleado WHERE apellido= Bojórquez ; DELETE FROM Empleado WHERE nss= ; DELETE FROM Empleado WHERE nd IN ( SELECT numerod FROM Departamento WHERE nombre= Investigación ) ; todas las filas 0 filas 1 fila 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) 147 SQL-92: 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 148

14 SQL-92: Actualización de datos 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... ; 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 contenido en dicho esquema Elementos del esquema: Tablas, Vistas, Dominios, Autorizaciones, Restricciones, etc SQL-92: Catálogo de BD 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 151 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 ); 152

15 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... 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) ); 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 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 ); 154 LDD: definición de tablas: 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 VARING(n) n:máx nº bits. Por omisión n=1 155 LDD: definición de tablas: tipos de datos Temporales DATE (10 posiciones) = EAR, MONTH, DA (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 EAR/MONTH ó DA/TIME para indicar su naturaleza 156

16 LDD: definición de tablas: tipos de datos: 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 ) ) ; 157 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 158 LDD: definición de tablas Especificación de restricciones de tabla Cláusula PRIMAR KE (<lista_columnas>) Columnas que componen la clave primaria Cláusula UNIQUE (<lista_columnas>) Columnas que forman una clave alternativa Cláusula FOREIGN KE (<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 159 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, PRIMAR KE ( nss ), UNIQUE ( nif ), CHECK ( nssjefe <> nss ), CHECK ( sexo IN ( H, M ) ), FOREIGN KE (nssjefe) REFERENCES Empleado(nss), FOREIGN KE (nd) REFERENCES Departamento(numerod) ); 160

17 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 PRIMAR KE ( nss ), CONSTRAINT nif_unico UNIQUE ( nif ), CONSTRAINT jefe_ok CHECK ( nssjefe <> nss ),... ); 161 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 KE CREATE TABLE Empleado ( nombre VARCHAR(15) NOT NULL, nss CHAR(12) PRIMAR KE, 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 ),... ); 162 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 CONSTRAINT dep_emp FOREIGN KE (nssjefe) REFERENCES Empleado(nss) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KE (nd) REFERENCES Departamento(numerod) ON DELETE NO ACTION ON UPDATE CASCADE 163 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; 164

18 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 nombres que AS SELECT nombre, apellido, nombrep, horas hereda la vista FROM Empleado, Proyecto, Trabaja_en WHERE nss = nsse AND nump = numerop ; 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 B nombred ; 165 LDD: definición de vistas Un estado de la vista EMPLEADO_EN_PROECTO Empleado_en_Proyecto nombre apellido nombrep José Silva ProductoX Ramón Nieto ProductoZ José Silva Producto Josefa Barceló ProductoX Federico Vizcarra Producto Federico Vizcarra ProductoZ Josefa Barceló Producto horas 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 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 ; 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 167 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 ; 168

19 SQL-92: LMD Manipulación de Datos LMD: consultas 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 ; 169 SQL-92: LMD Manipulación de Datos LMD: 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, PROECTO y TRABAJA_EN), como se muestra en la siguiente diapositiva 170 SQL-92: LMD Manipulación de Datos SQL-92: LMD Manipulación de Datos LMD: 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 PROECTO, pasa a relacionar tal empleado con la fila ProductoZ de PROECTO UPDATE Proyecto SET nombrep = ProductoZ WHERE nombrep = ProductoX ; Produce igual efecto que pero modifica nombrep en PROECTO: al calcular la vista, mostrará ProductoZ para todos los que antes aparecían con ProductoX 171 LMD: 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 172

20 SQL-92: LMD Manipulación de Datos LMD: 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 - Hubiera varias 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 SQL-92: LMD Manipulación de Datos LMD: 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 LDD: Verificación 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 ; 175 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á 176 (y la recalculará en una consulta futura)

2.4 Manipulación de datos

2.4 Manipulación de datos 2.4 Manipulación de datos 2.4.3. 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

Más detalles

SINTAXIS DE SQL-92. ::= CREATE SCHEMA [ ... ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig Motores de Bases de Datos MySQL (Oracle) SQL Server (Microsoft) PostgreSQL Oracle (Oracle) DB2 (IBM) Informix (IBM) Instalación

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

ADMINISTRACION DE BASES DE DATOS EN ORACLE

ADMINISTRACION DE BASES DE DATOS EN ORACLE SQL LENGUAJE ESTRUCTURADO DE CONSULTA El nacimiento del lenguaje SQL data de 1970 cuando E. F. Codd publica su libro: "Un modelo de datos relacional para grandes bancos de datos compartidos". Ese libro

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

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

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

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

2.5.- El lenguaje estándar SQL

2.5.- El lenguaje estándar SQL 25- El lenguaje estándar SQL El SQL es un lenguaje estándar de definición y manipulación (y consulta) de bases de datos relacionales El SQL estándar incluye: Características del Álgebra Relacional Características

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

LENGUAJE SQL. Bárbula, Febrero de 2007. Historia y Definición

LENGUAJE SQL. Bárbula, Febrero de 2007. Historia y Definición LENGUAJE Integrantes: Ceci Vanessa Paredes Oswaldo Rodríguez Aury Bárbula, Febrero de 2007 : Es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos. funciona con

Más detalles

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: Bases de Datos Introducción a ORACLE Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: o Tradicionales como INTEGER, VARCHAR2, DATE,..., etc. o Nuevos y complejos:

Más detalles

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc). LENGUAJE SQL Un manejador de base de datos debe de contener lenguajes que permitan definir el modelos de los datos, este mismo es que permite crear la estructura de la base de datos. Lenguaje de Definicion

Más detalles

Grupo Kybele, http://www.kybele.es/ Pág. 1

Grupo Kybele, http://www.kybele.es/ Pág. 1 Bases de Datos APUNTES PARA EL MANEJO DE SQL*Plus Para cualquier consulta a la sintaxis de las órdenes SQL o SQL*PLUS puede consultarse cualquier libro de ORACLE, o los manuales gratuitos en pdf o en línea

Más detalles

Crear BD en. Isis Bonet Cruz, PhD

Crear BD en. Isis Bonet Cruz, PhD Crear BD en Isis Bonet Cruz, PhD SQL Server Microsoft SQL Server es un sistema de administración y análisis de bases de datos relacionales de Microsoft para soluciones de comercio electrónico, línea de

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

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

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

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

Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas)

Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas) Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. En este

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

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA.

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA. BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA. La creación y manipulación de tablas Tipos de datos en SQL Operadores y condiciones lógicas La sentencia CREATE TABLE Estructura general Uso simplificado

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

Acceso a bases de datos MySQL con PHP

Acceso a bases de datos MySQL con PHP GESTIÓN Y ADMINISTRACIÓN WEB Acceso a bases de datos MySQL con PHP Ing. CIP Fabián Silva Alvarado fsilvasys@hotmail.com DEFINICIÓN DE BASE DE DATOS Base de Datos es un conjunto de datos relacionados entre

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

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA ÍNDICE CAPÍTULO 1. CARACTERÍSTICAS, NOVEDADES Y ENTORNO DE TRABAJO...17 1.1 NOVEDADES EN SQL SERVER 2008 R2...17 1.2 INSTALACIÓN DE MICROSOFT SQL SERVER 2008 R2...18 1.3 VERSIONES DE MICROSOFT SQL SERVER

Más detalles

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional PROGRAMAS DE ESTUDIO FORMATO 7 NOMBRE DE LA ASIGNATURA INTRODUCCIÓN A SQL CICLO, AREA O MODULO Área de Formación Profesional CLAVE DE LA ASIGNATURA IT222 OBJETIVOS GENERALES DE LA ASIGNATURA Al final del

Más detalles

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos: CONTENIDO. 1. INTRODUCCIÓN 2. TIPOS DE SENTENCIAS SQL 3. TIPOS DE DATOS 4. SQL PLUS 5. CONSULTAS DE DATOS 6. RESTRICCIÓN Y CLASIFICACIÓN DE LOS DATOS 7. FUNCIONES A NIVEL DE FILA 8. VISUALIZACIÓN DE DATOS

Más detalles

Qué es una subconsulta?.

Qué es una subconsulta?. Tema 5. SUBCONSULTAS. Autora: Maria Teresa Miñana Qué es una subconsulta?. Una subconsulta en SQL consiste en utilizar los resultados de una consulta dentro de otra, que se considera la principal. Esta

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

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

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios Protección Integridad y Seguridad Las Restricciones de Integridad aseguran que las modificaciones realizadas por usuarios autorizados no provocan perdidas de Consistencia Semántica El Control de Acceso

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

SERVICIO NACIONAL DE APRENDIZAJE SENA

SERVICIO NACIONAL DE APRENDIZAJE SENA SERVICIO NACIONAL DE APRENDIZAJE SENA GUÍA DE APRENDIZAJE SISTEMA INTEGRADO DE GESTIÓN Proceso Gestión de la Formación Profesional Integral Procedimiento Ejecución de la Formación Profesional Integral

Más detalles

Álvaro Herrera alvherre@dcc.uchile.cl Modelamiento Avanzado de Datos con PostgreSQL

Álvaro Herrera alvherre@dcc.uchile.cl Modelamiento Avanzado de Datos con PostgreSQL Modelamiento Avanzado de Datos con PostgreSQL Álvaro Herrera alvherre@dcc.uchile.cl Quinto Encuentro Nacional de Linux, Chile Contenidos Restricciones Check OUTER JOIN Operaciones de Conjuntos Agrupamiento

Más detalles

SQL: Lenguaje de acceso a bases de datos

SQL: Lenguaje de acceso a bases de datos SQL: Lenguaje de acceso a bases de datos Israel Herraiz Universidad Politécnica de Madrid Israel Herraiz, UPM SQL: Lenguaje de acceso a bases de datos 1/88 Contenidos 1 Introducción a las bases de datos

Más detalles

Pequeños apuntes de SQL *

Pequeños apuntes de SQL * Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo 1 SQL Pequeños apuntes de SQL * En estas hojas se exponen de manera concisa algunos aspectos adicionales del SQL, así como ejemplos

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

Consulta y manipulación de datos. El lenguaje SQL

Consulta y manipulación de datos. El lenguaje SQL Bloque 2 Consulta y manipulación de datos. El lenguaje SQL Como ya hemos visto en el bloque anterior, una base de datos relacional consiste en un conjunto de tablas, a cada una de las cuales se le asigna

Más detalles

Tema 3 Modelo relacional

Tema 3 Modelo relacional Contenido: Bases de Datos y Sistemas de Información Ing. Informática GRUPO A Tema 3 Modelo relacional 3.1 Terminología del modelo relacional 3.2 Paso del modelo ER al modelo relacional 3.3 Creación de

Más detalles

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera)

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera) SQL Lenguaje de Consulta Estructurado Curso básico de SQL (Leire Urcola Carrera) Indice de contenidos Introducción Consultas de Selección Criterios de Selección Agrupamiento de Registros y funciones agregadas

Más detalles

SQL: Lenguaje de acceso a bases de datos

SQL: Lenguaje de acceso a bases de datos SQL: Lenguaje de acceso a bases de datos Israel Herraiz Universidad Politécnica de Madrid Israel Herraiz, UPM SQL: Lenguaje de acceso a bases de datos 1/92 Contenidos 1 Introducción a las bases 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

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

CONSULTAS SIMPLES SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS SIMPLES SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS SIMPLES Vamos a empezar por la instrucción que más se utiliza en SQL, la sentencia SELECT. La

Más detalles

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127 I. DATOS INFORMATIVOS Carrera Especialidad Curso Código Ciclo : Tercero Requisitos Duración Horas Semana : 06 horas Versión : v.0110 II. SUMILLA : COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería

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

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

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas LENGUAJE SQL Que es SQL? SQL es un estándar un lenguaje estructurado para consultas SQL te permite acceder y manejar bases de datos SQL es un Estándar (ANSI American National Standards Institute) Que puede

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

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

SENTENCIAS Y CONSULTAS EN SQL SERVER

SENTENCIAS Y CONSULTAS EN SQL SERVER SENTENCIAS Y CONSULTAS EN SQL SERVER En esta sección nos preocuparemos por conocer, las consultas en SQL que describiremos aquí. Para eso haremos un pequeño de las palabras claves que se utilizan en SQL,

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

Lenguaje SQL. SQL Structured Query Languaje. Capacidades del Lenguaje. Estructura Básica de una consulta SQL

Lenguaje SQL. SQL Structured Query Languaje. Capacidades del Lenguaje. Estructura Básica de una consulta SQL Introducción a SQL Structured Query Languaje Elementos de Bases de Datos Bases de Datos Universidad Nacional del Sur - 2015 Lenguaje SQL SQL: Structured Query Language SQL es un lenguaje de manipulación

Más detalles

ÍNDICE PRIMERA PARTE... 17

ÍNDICE PRIMERA PARTE... 17 ÍNDICE PREFACIO... xv PRIMERA PARTE... 17 CAPÍTULO 1. BASES DE DATOS... 19 BASE DE DATOS RELACIONAL... 20 ESTRUCTURA MÍNIMA DE ALMACENAMIENTO... 21 EJEMPLO DE TABLA... 22 RESUMEN... 23 CAPÍTULO 2. CONSULTAS

Más detalles

Tutorial de SQL - El comando SELECT

Tutorial de SQL - El comando SELECT Tutorial de SQL - El comando SELECT El objetivo de este documento es guiar su aprendizaje del comando SELECT de SQL. La idea es que, estando conectado a sql*plus, lea este material mientras ejercita simultáneamente

Más detalles

PRÁCTICA B2. Definición y modificación de datos en SQL

PRÁCTICA B2. Definición y modificación de datos en SQL 3º Ingeniero Técnico en Informática de Sistemas Facultad de Informática Asignatura: Fundamentos de Bases de Datos Curso: 2007/08 PRÁCTICA B2. Definición y modificación de datos en SQL Objetivos Construir

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

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

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

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

TEMA. Sistema de Gestión de Bases de Datos. Sistemas Avanzados de Recuperación de Información (SARI) 2008-2009

TEMA. Sistema de Gestión de Bases de Datos. Sistemas Avanzados de Recuperación de Información (SARI) 2008-2009 TEMA Sistema de Gestión de Bases de Datos Sistemas Avanzados de Recuperación de Información (SARI) 2008-2009 Jorge Morato Lara Sonia Sánchez- Índice 1. Tema - Recuperación de la Información en Internet

Más detalles

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción:

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción: Guía de MySQL Contenidos: 1.- Introducción: 2.- Creación de una base de datos. CREATE DATABASE. 3.- Creación de una tabla y mostrar sus campos (CREATE TABLE - SHOW TABLES - describe - DROP TABLE) 4.- Instrucción

Más detalles

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com. Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DDL Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy Agenda SQL DDL Lenguaje SQL Sub-lenguajes Dialectos Agenda SQL DDL Esquemas

Más detalles

Manual Práctico de SQL. ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com

Manual Práctico de SQL. ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com ÍNDICE INTRODUCCIÓN 3 PASOS PARA IMPLEMENTAR UNA BD 5 CREAR UNA BD 6 SENTENCIA CREATE 8 LIGADURAS 9 ELIMINACIÓN DE TABLAS 14 SENTENCIA

Más detalles

Taller SQL - SUP. Introducción al Lenguaje SQL. Claúsula Where. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete

Taller SQL - SUP. Introducción al Lenguaje SQL. Claúsula Where. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete Taller SQL - SUP Introducción al Lenguaje SQL. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete Claúsula Where Condiciones de Búsqueda Operadores de Comparación Rangos Listas Patrones

Más detalles

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1) A LAS BASES DE DATOS (L1) VENTAJAS TECNOLOGÍA BASE DE DATOS DISPONIBILIDAD Y VISIBILIDAD ALMACENAMIENTO CONSULTAS INFORMACIÓN RESPALDOS Y RESTAURACIÓN CONCEPTOS DE INTEGRIDAD DE LOS DATOS ELIMINACIÓN REDUNDANCIA

Más detalles

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales.

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales. SQL (Lenguaje de Consulta Estructurado): Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales. ANSI (Instituto

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 10. Álgebra Relacional

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 10. Álgebra Relacional FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 10. Álgebra Relacional 1.- Introducción. 2.- Una Sintaxis para el Álgebra Relacional. 3.- Asignación Relacional. 4.- Operaciones Tradicionales

Más detalles

Guía práctica de SQL

Guía práctica de SQL Guía práctica de SQL Francisco Charte Ojeda Agradecimientos Introducción Qué es SQL? Aplicaciones de SQL Intérpretes de SQL Tipos de RDBMS Cómo usar este libro Convenciones tipográficas 1. El modelo relacional

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

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

PRACTICA DE ADMINISTRACION DE BASES DE DATOS

PRACTICA DE ADMINISTRACION DE BASES DE DATOS Depto. De Organización y Estructura de la Información Curso 2003/2004 Pág. 1 PRACTICA DE ADMINISTRACION DE BASES DE DATOS Una entidad bancaria gestiona datos relativos a operaciones bancarias de sus clientes

Más detalles

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA 1 TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA 1. Definición de SQL. Características 2. Selección del origen de los datos. Cláusula FROM 3. Selección de columnas. Columnas calculadas 4.

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

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

Lenguaje SQL para Novatos

Lenguaje SQL para Novatos Lenguaje SQL para Novatos Conceptos básicos SQL (Structured Query Language) es un lenguaje estructurado para la consulta de los datos organizados en una base de datos. Una consulta es una instrucción que

Más detalles

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas. Vistas. El resultado de una consulta en el caso de SQL siempre es una tabla, ésta se puede hacer permanente dentro de la base de datos. En este caso se dice que esta tabla resultado es una vista o una

Más detalles

Bases de datos: Sistemas de bases de datos:

Bases de datos: Sistemas de bases de datos: Bases de datos: Sistemas de bases de datos: Un sistema de bases de datos es básicamente un sistema para archivar en computador, es decir, es un sistema computarizado cuyo propósito general es mantener

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

APÉNDICE SQL (Structures Query Language)

APÉNDICE SQL (Structures Query Language) SQL 1 / 7 APÉNDICE SQL (Structures Query Language) SQL se ha establecido como lenguaje de bases de datos relacionales estándar, y se pueden distinguir tres partes: DDL (Data Definition Language) permite

Más detalles

SQL Los fundamentos del lenguaje

SQL Los fundamentos del lenguaje Introducción 1. Un poco de historia 11 2. Las normas SQL 12 3. Descripción rápida del modelo relacional 14 3.1 Principales conceptos del modelo relacional 15 3.2 Principales reglas 16 4. Los operadores

Más detalles