introducción a sql (dml)

18
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 © Diseño de Amador Durán Toro, 2011 © Diseño de Amador Durán Toro, 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 © Diseño de Amador Durán Toro, 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

Upload: others

Post on 26-Jul-2022

29 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a SQL (DML)

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

Page 2: Introducción a SQL (DML)

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

Page 3: Introducción a SQL (DML)

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

Page 4: Introducción a SQL (DML)

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

Page 5: Introducción a SQL (DML)

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� �

� �

Page 6: Introducción a SQL (DML)

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

Page 7: Introducción a SQL (DML)

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

Page 8: Introducción a SQL (DML)

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

Page 9: Introducción a SQL (DML)

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

Page 10: Introducción a SQL (DML)

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

Page 11: Introducción a SQL (DML)

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

Page 12: Introducción a SQL (DML)

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

Page 13: Introducción a SQL (DML)

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

Page 14: Introducción a SQL (DML)

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

Page 15: Introducción a SQL (DML)

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

Page 16: Introducción a SQL (DML)

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

Page 17: Introducción a SQL (DML)

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

Page 18: Introducción a SQL (DML)

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