Upload
others
View
31
Download
0
Embed Size (px)
Citation preview
Introducción a SQL 08/11/2013
IISSI 1
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Introducción a SQL(DML)
Grupo de Ingeniería del Software y Bases de Datos
Departamento de Lenguajes y Sistemas Informáticos
Universidad de Sevilla
noviembre 2013
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Introducción a SQL
• Objetivos de este tema
– Ser capaz de usar el SQL DML para manipular
modelos relaciones (Crear, Modificar y Borrar
Datos).
– Ser capaz de usar el SQL DML para consultar
modelos relacionales.
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 1
Introducción a SQL 08/11/2013
IISSI 2
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Inserción de datos en una tabla
• Sirve para añadir tuplas en la base de datos
– Sintaxis:
• INSERT INTO <nombre_tabla> (<columna1>,
<columna2>, ...)
VALUES (<valor1>, <valor2>, ...)
• Si se introducen todos los valores de la tupla, la sintaxis
puede ser: INSERT INTO <nombre_tabla> VALUES
(<valor1>, <valor2>, ...)
– Ejemplo
• INSERT INTO Empleado (idEmpleado, nombre,
dirección,…) VALUES (1,”Mario González”, “Avd
República Argentina 4”, …);
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 2
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Inserción de datos en una tabla
• Se pueden añadir las filas resultantes de a
evaluación de una consulta
– Sintaxis:
• INSERT INTO <nombre_tabla> (<columna1>,
<columna2>, ...)
SELECT (<columna1>, <columna2>, ...) FROM [WHERE
<condición>]
– Ejemplo:
• INSERT INTO EmpResponsables(idempleado, idSucursal,
salario) SELECT idEmpleado, idSucursal, salario FROM
empleado e, sucursal s WHERE
s.responsable=e.idEmpleado;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 3
Introducción a SQL 08/11/2013
IISSI 3
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Borrado de datos en una tabla
• Para destruir una tabla (estructura y datos):
DROP TABLE <nombre_tabla>;
• Para eliminar algunas filas de una tabla:
DELETE
FROM <tabla>
[WHERE <condición>];
• Para eliminar todo el contenido de una tabla,
pero no su estructura:
TRUNCATE TABLE <nombre_tabla>;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 4
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Borrado de datos en una tabla
• DELETE elimina las filas completas de una
tabla que cumplan la clausula establecida
en el WHERE
– Sintaxis:
DELETE FROM TABLE WHERE <condición>;
– Ejemplo: elimina los Empleados de Sevilla
DELETE FROM empleados WHERE provincia = ‘Sevilla’;
– Ejemplo: Borrar los inmuebles de los empleados
de la sucursal 8
DELETE FROM inmuebles WHERE idEmpleado IN
(SELECT idEmpleado FROM empleado
WHERE idSucursal=8);
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 5
Introducción a SQL 08/11/2013
IISSI 4
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Modificación de datos en una tabla
• UPDATE modifica valores de columnas en
una o más filas de una sola tabla.
– La Cláusula SET especifica columnas que
modificar y nuevos valores
– La Cláusula WHERE selecciona las filas a
actualizar. Si no hay WHERE, se aplica la
modificación a todas las filas.
– Sintaxis:
UPDATE <nombre_tabla>
SET col1 = [valor1], col2 = [valor2], …
WHERE <condición>
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 6
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Modificación de datos en una tabla
– Ejemplo: Incrementa un 10% el sueldo de los
empleados que cobren menos de 1000 euros
UPDATE empleado SET sueldo = sueldo*1,1
WHERE sueldo <1000;
– Ejemplo: Incrementa un 10% a los responsables
de las sucursales
UPDATE empleado SET sueldo= sueldo*1,1
WHERE idEmpleado IN
(SELECT idEmpleado FROM empleado, sucursal
WHERE
empleado.idEmpleado=sucursal.responsable);
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 7
Introducción a SQL 08/11/2013
IISSI 5
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Consultas Básicas
• Sintaxis:
– SELECT <lista de columnas> FROM <lista de
tablas> WHERE <condición>;
• Ejemplos:
– SELECT nombre, salario FROM empleado
WHERE empleado.salario > 1000
AND departamento=‘Comercial‘;
– SELECT * FROM empleado WHERE ....;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 8
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Producto Cartesiano
– El producto cartesina devuelve una nueva relación con todas las posibles combinaciones entre las tuplas de las relaciones involucradas.
SELECT * FROM A, B;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 9
a xa xa xa xa ya ya ya yb xb xb xb xb yb yb yb yc xc xc xc xc yc yc yc y
aaaabbbbcccc
xxxxyyyy� �
� �
Introducción a SQL 08/11/2013
IISSI 6
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Producto Cartesiano
• El producto Cartesiano puede ir combinado con condicionales donde se relacionen los atributos de ambas tablas.
• Inmuebles de más de 1000 euros con el nombre del empleado que lo gestionaSELECT inmueble.idInmueble, empleado.nombre FROM inmueble, empleado WHERE inmueble.idEmpleado = empleado.idEmpleado AND inmueble.precio>1000;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 10
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Natural join
• Si los campos por los que se hace una comparación de igualdad en el producto cartesiano tienen el mismo nombre, se puede hacer el join natural:
– SELECT inmueble.idInmueble, empleado.nombre FROM (inmueble natural join natural join natural join natural join empleado)
– Es equivalente a:
SELECT inmueble.idInmueble, empleado.nombre FROM inmueble, empleado WHEREinmueble.idEmpleado=empleado.idEmpleado
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 11
Introducción a SQL 08/11/2013
IISSI 7
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Renombrado
• Se puede renombrar tanto los atributos
obtenidos en la proyección, como las tablas
involucradas en la consulta.
– SELECT E.nombre AS AS AS AS nom_empleadonom_empleadonom_empleadonom_empleado , , , ,
S.nombre AS AS AS AS nom_supervisornom_supervisornom_supervisornom_supervisor
FROM Empleado E, Empleado S
WHERE E.nssjefe = S.nss;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 12
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operaciones aritméticas
• En las consultas se pueden aplicar
operaciones aritméticas sobre las columnas
de la relación que se obtiene.
• Ejemplo:::: Obtener una nueva relación con los
salarios de los empleados que trabajan en la
sucursal de la Avenida de las Ciencias 10,
tras recibir un aumento del 10%.
– SELECT nombre, 1.1*1.1*1.1*1.1*sueldosueldosueldosueldo
FROM Empleado, Sucursal
WHERE sucursal.dirección=
’Avenida de las ciencias 10’
AND sucursal.idSucursal = empleado.idSucursal;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 13
Introducción a SQL 08/11/2013
IISSI 8
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Tuplas repetidas
• Es sabido que las relaciones en una base de datos relacional no pueden tener tuplasrepetidas.
• Pero una consulta que obtenga un subconjunto de los atributos de una relación, puede mostrar información repetida.
• SQL no no no no eliminaeliminaeliminaelimina porporporpor defectodefectodefectodefecto filasfilasfilasfilas repetidasrepetidasrepetidasrepetidas del resultado de una consulta, porque...– Eliminación de duplicados costosacostosacostosacostosa
(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 duplicadasnoviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 14
nifnifnifnif nssnssnssnss nombrenombrenombrenombre edadedadedadedad sueldosueldosueldosueldo
12.345.678-Z 123.456.789 Abel Abad 21 24.000
23.456.789-D 234.567.890 Braulio Brío 32 36.000
34.567.890-V 345.678.901 Carlos Cepa 32 36.000
45.678.901-G 456.789.012 David Díaz 54 15.000
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Tuplas repetidas
• Para eliminar explícitamente estas tuplas de salida se utiliza el operador DISTINCT.
• Ejemplos: Salarios de todos los empleados– SELECT edad, sueldo FROM Empleado;
* Pueden salir tuplas duplicadas
– SELECT DISTINCT edad, sueldo FROM Empleado;* No saldrán tuplas duplicadas
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 15
edadedadedadedad sueldosueldosueldosueldo
21 24.000
32 36.000
32 36.000
54 15.000
edadedadedadedad sueldosueldosueldosueldo
21 24.000
32 36.000
54 15.000
Introducción a SQL 08/11/2013
IISSI 9
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Ordenación de tuplas
• Es sabido que en el modelo relacional la posición de las tuplas en las tablas no es relevante, ya que una relación corresponde a la idea matemática de conjunto
• SQL permite presentar las filas resultado de una presentar las filas resultado de una presentar las filas resultado de una presentar las filas resultado de una consulta consulta consulta consulta de forma ordenada ordenada ordenada ordenada enenenen funciónfunciónfunciónfunción de de de de laslaslaslasnecesidadesnecesidadesnecesidadesnecesidades de cada momento mediante de cada momento mediante de cada momento mediante de cada momento mediante lalalalacláusula ORDER BY:cláusula ORDER BY:cláusula ORDER BY:cláusula ORDER BY:
– Ordenación según valores de una o varias columnassegún valores de una o varias columnassegún valores de una o varias columnassegún valores de una o varias columnas
– Ascendente ASC (por Ascendente ASC (por Ascendente ASC (por Ascendente ASC (por defectodefectodefectodefecto) o Descendente DESC) o Descendente DESC) o Descendente DESC) o Descendente DESC
– Las filas no se ordenan en disco: se ven ordenadas, se ven ordenadas, se ven ordenadas, se ven ordenadas, pero no lo están en la tabla.pero no lo están en la tabla.pero no lo están en la tabla.pero no lo están en la tabla.
• Ejemplo: Nombre de los empleados ordenados por su sueldo
– SELECT empleados.nombre FROM empleados ORDER BY sueldo;noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 16
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Funciones de Agregación
• SQL permite hacer operaciones de
agregación sobre las relaciones.
– Función COUNT( ): Función COUNT( ): Función COUNT( ): Función COUNT( ): Cuenta el número de filas o de
valores especificados en una consulta
– FFFFunciones SUM( ), MAX( ), MIN( ), AVG( ): unciones SUM( ), MAX( ), MIN( ), AVG( ): unciones SUM( ), MAX( ), MIN( ), AVG( ): unciones SUM( ), MAX( ), MIN( ), AVG( ):
Suma, máximo, mínimo y media aritmética
(promedio)
• Ejemplo: Calcular la suma de los sueldos, el máximo,
el mínimo, la media y contar todos los empleados.
– SELECT SUM(sueldo), MAX(sueldo),
MIN(sueldo), AVG(sueldo), COUNT(*)
FROM empleados;noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 17
Introducción a SQL 08/11/2013
IISSI 10
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Funciones de Agregación con Agrupación
• Se utilizan cuando se quieren aplicar funciones agregadas a subgrupos
de tuplas de una relación con el mismo valor.
• Se definen los “atributos de agrupación” y se pueden aplicar las
funciones a cada uno de los grupos formados.
• Ejemplo: Mostrar para cada sucursal, el número de trabajadores y su
sueldo medio.
– SELECT sucursal, COUNT(*), AVG(sueldo) sucursal, COUNT(*), AVG(sueldo) sucursal, COUNT(*), AVG(sueldo) sucursal, COUNT(*), AVG(sueldo) FROM Empleado GROUP GROUP GROUP GROUP
BY sucursal; BY sucursal; BY sucursal; BY sucursal;
IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado SucursalSucursalSucursalSucursal SueldoSueldoSueldoSueldo …………
1 A 1000
2 A 1500
3 B 1200
4 C 900
5 C 2100
IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado SueldoSueldoSueldoSueldo …………
1 1000 …
2 1500 …
A
IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado SueldoSueldoSueldoSueldo …………
4 900 …
5 2100 …
C
IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado SueldoSueldoSueldoSueldo …………
3 1200 …
B
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 18
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Funciones de Agregación con Condiciones
• Es posible especificar una condición sobre el
grupo de tuplas asociado a cada valor de los
atributos de agrupación con la cláusula
HAVING. Sólo los grupos que cumplan la
condición formarán parte de la relación de
salida de la consulta.
• Ejemplo: Mostrar para cada sucursal, el número de
trabajadores y su sueldo medio siempre que la
sucursal tenga al menos dos trabajadores.
– SELECT sucursal, COUNT(*), AVG(sueldo) sucursal, COUNT(*), AVG(sueldo) sucursal, COUNT(*), AVG(sueldo) sucursal, COUNT(*), AVG(sueldo)
FROM Empleado
GROUP BY sucursal HAVING COUNT(*)>1;GROUP BY sucursal HAVING COUNT(*)>1;GROUP BY sucursal HAVING COUNT(*)>1;GROUP BY sucursal HAVING COUNT(*)>1;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 19
Introducción a SQL 08/11/2013
IISSI 11
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operacines de Conjuntos
• Como las relaciones corresponden a la idea matemática de conjunto, se pueden utiliza lasoperaciones de UNION UNION UNION UNION (U), INTERSECT INTERSECT INTERSECT INTERSECT (∩), EXCEPT EXCEPT EXCEPT EXCEPT (—) (minus en ORACLE).
– Como resultado se obtiene un nuevo conjunto de filas donde laslaslaslas filasfilasfilasfilasrepetidasrepetidasrepetidasrepetidas se se se se eliminaneliminaneliminaneliminan
– Las tablas operando han de ser compatibles en compatibles en compatibles en compatibles en tipotipotipotipo::::• igual nº de nº de nº de nº de columnascolumnascolumnascolumnas, y• columnas “correspondientes” con el mismo dominiodominiodominiodominio
• Ejemplo: Identificador de las propiedades donde está involucradoel empleado con DNI ´78945612D´, tanto como responsable comogerente de la sucursal.
( SELECT inmueble.idPropiedadFROM Inmueble
WHERE inmueble.idEmpleado=´78945612D´)UNIONUNIONUNIONUNION
( SELECT inmueble.idPropiedadFROM inmueble, empleado, sucursal
WHERE sucursal.responsable = ´78945612D´ and sucursal.idSucursal=empleado.idSucursal and empleado.idempleado=inmueble.idempleado);
• Para NO eliminar duplicados de manera explícita se utiliza la clausula ALLALLALLALL.
– UNION ALLALLALLALL, INTERSECT ALLALLALLALL, EXCEPT ALLALLALLALLnoviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 20
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Más Operadores en la cláusula WHERE
• La cláusula WHERE puede estar formada por:
– Una combinación de comparaciones booleanas
con los operadores AND, OR y NOT
– Operador EXISTS
– Operador IN
– Operadores ALL, ANY o SOME
– Between
– Unique
– Top (no soportado en Oracle 9i, donde hay que utilizar el atributo
‘rownum’ que tienen las tablas)
– Is null
– Like
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 21
Introducción a SQL 08/11/2013
IISSI 12
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operador EXISTS
• EXISTS(S), comprueba si la tabla S está
vacía
– Devuelve TRUE si la tabla S contiene al
menos una fila y FALSE en caso contrario
– S suele ser una consulta anidada
correlacionada
• Ejemplos:
– Nombre de empleados que llevan al menos
un piso
• SELECT nombre from empleados e WHERE
EXISTS (SELECT * FROM inmuebles
WHERE
inmuebles.idEmpleado=e.idEmpleado);
– Nombre de empleados que NO llevan ningún
pisonoviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 22
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operador IN
• El operador de comparación IN permite comparar un valor individual v (generalmente un nombre de atributo) con un conjunto de valores V (generalmente una consulta anidada). – Devuelve TRUE si v es uno de los elementos de V.
– Ejemplo: Nombre de empleados que llevan al menos un piso
• SELECT nombre FROM empleados WHERE idEmpleado IN
(SELECT idEmpleado FROM inmuebles);
• También es posible utilizar IN con un conjunto explícito de valores– Ejemplo: Nombre de los empleados que trabajan
en las sucursales 1, 2 ó 3.• SELECT nombre FROM empleado
WHERE idSucursal IN (1,2,3);
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 23
Introducción a SQL 08/11/2013
IISSI 13
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores ANY/SOME, ALL
• Operador ANYANYANYANY (SOME)• Sintaxis:
� t <op> [ANY|SOME] S, donde <op> puede ser{>, ≥, <, ≤, ≠, = }
– Compara una fila t con las filas resultado de la consulta anidada S
– Devuelve TRUE si alguna fila e de S cumple que t <op> e
• OperadorOperadorOperadorOperador ALL ALL ALL ALL (otro uso del mismo operador)– Sintaxis:
� t <op> ALL S, <op> puede ser { >, ≥, <, ≤, ≠, = }
– Compara una fila t t t t con filas resultado de unaconsulta anidada SSSS
– Devuelve TRUE si paraparaparapara todatodatodatoda fila e e e e de S S S S se cumple quet <op> et <op> et <op> et <op> e
– Ejemplo: Nombres de los empleados cuyo salario es menor queel de todos los empleados de la sucursal 3.
• SELECT nombre FROM EmpleadoWHERE sueldosueldosueldosueldo < ALL < ALL < ALL < ALL (SELECT sueldosueldosueldosueldo
FROM Empleado WHERE idSucursal=3 );
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 24
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores BETWEEN y UNIQUE
• BETWEEN permite describir rangos de
valores en las condicionales de SELECT
– Ejemplo: Empleados que cobran entre 1000 y
2000 euros
• SELECT * FROM empleado WHERE
empleado.sueldo BETWEEN 1000 and 2000;
• UNIQUE comprueba si existen tuplas
duplicadas
– Ejemplo: Nombre de los empleados que son
responsables de una única sucursal
• SELECT * FROM empleado WHERE UNIQUE
(SELECT idSucursal from sucursal WHERE
empleado.idempleado=sucursal.responsable);
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 25
Introducción a SQL 08/11/2013
IISSI 14
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores TOP y NULOS
• TOP limita el número de filas que
devuelve la evaluación de la consulta
– SELECT TOP N <lista de atributos>
• Suele ir combinado con una consulta que
devuelve las tuplas ordenadas por algún atributo.
• NULOS
– Se utiliza para saber si un campo está vacío,
porque al comparar cualquier objeto con
NULL da FALSE.
• V is NULL, V is NOT NULL
• Ejemplo: Empleados que no pertenecen a
ninguna sucursal
– SELECT nombre from empleado
WHERE idSucursal IS NULL
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 26
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operador LIKE para comparara subcadenas
• Para comparar cadenas de caracteres se utiliza el operador de comparación LIKE.
• Las cadenas parciales se especifican mediante los caracteres reservados ´%´(lista de caracteres) y ´_´(sólo un carácter).
• Ejemplo: Lista de las sucursales cuya dirección es avenida de las ciencias
• SELECT * FROM sucursales WHERE dirección LIKELIKELIKELIKE ‘Avenida de las ciencias’;
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 27
Introducción a SQL 08/11/2013
IISSI 15
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores de Conjunto: INNER JOIN y OUTER JOIN
• Es otra forma de permite combinar registros
de dos o más tablas.
• INNER JOIN INNER JOIN INNER JOIN INNER JOIN devuelve los registros cuyos valores están
en ambas tablas
– SELECT * FROM TableA INNER JOININNER JOININNER JOININNER JOIN
TableB ON ON ON ON TableA.name = TableB.name
– Ejemplo: Empleados con los inmuebles que tienen
asignados
• SELECT * FROM empleados INNER JOIN INNER JOIN INNER JOIN INNER JOIN inmuebles
ONONONON inmuebles.idEmpleado = empleado.idEmpleado
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 28
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores de Conjunto: INNER JOIN y OUTER JOIN
• Es otra forma de permite combinar registros
de dos o más tablas.
• FULL JOINFULL JOINFULL JOINFULL JOIN devuelve los registros de ambas tablas,
aunque no existan valores iguales entre ellas
– SELECT * FROM TableA FULL JOINFULL JOINFULL JOINFULL JOIN TableB ON
TableA.name = TableB.name
– Ejemplo: Todos los empleados y todos los inmuebles
que tienen asignados
• SELECT * FROM empleados FULL JOINFULL JOINFULL JOINFULL JOIN inmuebles ONONONON
inmuebles.idEmpleado = empleado.idEmpleado
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 29
Introducción a SQL 08/11/2013
IISSI 16
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores de Conjunto: INNER JOIN y OUTER JOIN
• Es otra forma de permite combinar registros
de dos o más tablas.
• LEFT JOINLEFT JOINLEFT JOINLEFT JOIN devuelve los registros de ambas tablas,
aunque no existan valores iguales entre ellas
– SELECT * FROM TableA LEFT JOINLEFT JOINLEFT JOINLEFT JOIN TableB ON
TableA.name = TableB.name
– Ejemplo: Todos los empleados y si tienen
inmuebles asignados también la información de
ellos
• SELECT * FROM empleados LEFT LEFT LEFT LEFT JOINJOINJOINJOIN inmuebles ONONONON
inmuebles.idEmpleado = empleado.idEmpleado
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 30
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Operadores de Conjunto: INNER JOIN y OUTER JOIN
IdInmuebleIdInmuebleIdInmuebleIdInmueble IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado
1 A
2 C
IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado NombreNombreNombreNombre
A Eva
B Patricia
IdInmuebleIdInmuebleIdInmuebleIdInmueble IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado NombreNombreNombreNombre
1 A Eva
2 C NULL
NULL B Patricia
IdInmuebleIdInmuebleIdInmuebleIdInmueble IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado NombreNombreNombreNombre
1 A Eva
IdInmuebleIdInmuebleIdInmuebleIdInmueble IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado NombreNombreNombreNombre
1 A Eva
2 C NULL
IdInmuebleIdInmuebleIdInmuebleIdInmueble IdEmpleadoIdEmpleadoIdEmpleadoIdEmpleado NombreNombreNombreNombre
1 A Eva
NULL B Patricia
FULL
INNER
RIGHT
LEFT
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 31
Introducción a SQL 08/11/2013
IISSI 17
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Resumen Consultas JOIN
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 32
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Consultas de Agregados Complejas
• Es posible utilizar operadores complejos del
tipo de ALL junto a consultas anidadas en
las condiciones sobre agrupaciones
• Ejemplo: Sucursal con mayor número de
empleados
• Utilizando ALL:
– SELECT E.idSucursal, count(*)
FROM empleado E
GROUP BY idSucursal
HAVING count(*) >=
ALL (SELECT count(*)
FROM empleado
GROUP BY idSucursal)
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 33
Introducción a SQL 08/11/2013
IISSI 18
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Consultas de Agregados Complejas
• Utilizando SELECT Anidado:
– SELECT E.idSucursal, count(*)
FROM empleado E
GROUP BY idSucursal
HAVING count(*) >=
ALL (SELECT max(maximo)
FROM (SELECT count(*) as maximo
FROM empleado
GROUP BY idSucursal ) )
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 34
1. Introducción
2. Inserción
3. Borrado
4. Modificación
5. Consultas básicas
6. Consultas avanzadas
7. Orden de evaluación de cláusulas
© D
iseño d
e A
mador
Durá
n T
oro
, 2011
Orden de evaluación de las cláusulas.Orden de evaluación de las cláusulas.Orden de evaluación de las cláusulas.Orden de evaluación de las cláusulas.
1)1)1)1) FROM (es decir, la reunión o FROM (es decir, la reunión o FROM (es decir, la reunión o FROM (es decir, la reunión o joinjoinjoinjoin de tablas, de tablas, de tablas, de tablas,
si se especifica más de una)si se especifica más de una)si se especifica más de una)si se especifica más de una)
2)2)2)2) WHEREWHEREWHEREWHERE
3)3)3)3) GROUP BYGROUP BYGROUP BYGROUP BY
4)4)4)4) HAVINGHAVINGHAVINGHAVING
5)5)5)5) SELECTSELECTSELECTSELECT
6)6)6)6) ORDER BYORDER BYORDER BYORDER BY
noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 35