Académique Documents
Professionnel Documents
Culture Documents
Datos
CAPA DE DATOS
Sandra Romero
(sandra.romerohh@gmail.com)
Agosto 2015
El Lenguaje
SQL
- Objetivos
- Objetivos
o
o
o
o
o
- Objetivos
Como realizar actualizaciones a la Base de datos
usando INSERT, UPDATE y DELETE
Objetivos de SQL
Idealmente un lenguaje de base de datos
debera permitir a un usuario:
o Crear la base de datos y las estructuras de
relaciones
o Realizar tareas de administracin de datos bsicas,
o Realizar consultas simples y complejas
o Debe realizar estas tareas con mnimo esfuerzo del
usuario
o Su estructura de comandos y sintaxis debe ser fcil
de aprender
o Debe ser portable
Objetivos de SQL
Objetivos de SQL
SQL es un lenguaje relativamente fcil de
aprender:
o Es un lenguaje no procedural: se especifica que informacin se requiere,
mas que, como obtenerla,
o Es un lenguaje esencialmente de formato libre
Objetivos de SQL
VARCHAR(5),
VARCHAR(15),
DECIMAL(7,2));
Objetivos de SQL
Puede ser usado por un rango de usuarios DBAs,
administradores, desarrolladores de aplicaciones,
y otros tipos de usuarios finales.
Existe un estndar ISO para SQL, hacindolo el
lenguaje estndar formal y de hecho para bases
de datos relacionales
Historia de SQL
En 1974, D. Chamberlin (IBM San Jose Laboratory)
defini un lenguaje llamado Structured English
Query Language (SEQUEL).
Una versin revisada, SEQUEL/2, fue definida en
1976 pero el nombre fue posteriormente cambiado
a SQL por razones legales.
Historia de SQL
Al final de los 70, apareca ORACLE y fue
probablemente el primer RDBMS basado en SQL
En 1987, ANSI e ISO publicaron un estndar inicial
para SQL.
En 1989, ISO public un anexo que defini las
caractersticas de mejoras de integridad.
En 1992, ocurri la primera revisin principal del
estndar ISO, referido como SQL2 o SQL/92.
En 1999, SQL:1999 fue liberado con soporte para
administracin de datos orientado a objeto.
Al final de 2003, fue liberado SQL:2003.
Importancia de SQL
SQL pasa a formar parte de la arquitectura de
aplicaciones tales como IBMs Systems
Application Architecture.
Es una opcin estratgica de muchas
organizaciones grandes e influyentes (Ej:
X/OPEN).
SQL es el estndar federal para el tratamiento
de la informacin (FIPS) del cual se requiere la
conformidad para todas las ventas de bases de
datos al gobierno americano.
Importancia de SQL
El SQL se utiliza en otros estndares e incluso
influencia el desarrollo de otros estndares como
herramienta definicional. Los ejemplos incluyen:
o ISOs Information Resource Directory System (IRDS) Standard
o Remote Data Access (RDA) Standard.
Literales
Los literales son constantes usadas en sentencias
SQL.
Todos los literales no numricos deben estar
encerrados en comilla simple (ej. London).
Todos los literales numricos no deben estar
encerrados en comillas (ej. 650.00).
Instruccin SELECT
SELECT [DISTINCT | ALL]
{* | [columnExpression [AS newName]] [,...] }
FROM NombreTabla [alias] [, ...]
[WHERE
condicin]
[GROUP BY
listaColumna]
[HAVING
condicin]
[ORDER BY
listaColumna]
Instruccin SELECT
FROM
WHERE
GROUP BY
Instruccin SELECT
El orden de las clusulas no puede ser cambiado.
Solamente SELECT y FROM son mandatario.
filas
de
una
tabla
SELECT nombre de columnas
FROM nombre de tabla
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Sintaxis de distinct
SELECT DISTINCT campo
FROM tabla;
numPropiedad
IA14
IG4
IG4
IA14
IG36
numPropiedad
IA14
IG4
IG36
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
salarioMensual
25000
10000
15000
7500
20000
7500
numEmpleado
SL21
SG37
SG14
SG5
nombre
Jhon
Peter
David
Susan
apellido
White
Denver
Ford
Sarandon
salario
300000
120000
180000
240000
nombre
Jhon
Susan
apellido
White
Sarandon
cargo
Gerente
Gerente
salario
300000
240000
STR_TO_DATE(a.FechaFinalRealizacion,'%Y-%m-%d')>='2015-05-01
DATE_FORMAT(fechaalta,'%d/%m/%Y')'
IN)
Ejercicios:
Listar todos los Vendedores y Jefes de la
tabla empleados
SELECT numEmpleado, nombre, apellido, cargo
FROM Empleado
WHERE cargo IN (Gerente, Supervisor)
numEmpleado
SL21
SG14
SG5
nombre
Jhon
David
Susan
apellido
White
Ford
Sarandon
cargo
Gerente
Supervisor
Gerente
Ejemplo
5.8
pertenencia
de
conjuntos
(IN/NOT IN)
Tambin hay una versin negada NOT IN.
IN no agrega mucho poder expresivo a SQL.
Tambin podramos escribir:
SELECT numEmpleado, nombre, apellido, cargo
FROM Empleado
WHERE cargo = Gerente
OR cargo = Supervisor);
Funciones de fechas
DATEDIFF(expression1,expression2) :
select datediff('2007-2-6 17:33:25','2007-1-1');
- SELECT DAYNAME('2007-01-04')
Link donde se puede ver el resto de funciones de MYSQL para tratar fechas:
https://www.hscripts.com/es/tutoriales/mysql/fecha-hora-functiones.php
numCliente
Q56
Q76
Q56
numPropiedad
IA14
IG4
IG4
Fecha
Comentario
24-11-1999 muy pequeo
20-10-1999 muy lejos
26-11-1999
Q62
Q56
IA14
IG36
Fecha
Comentario
26-11-1999
numEmpleado
SL21
SG5
SG14
SG37
SA9
SL41
nombre
Jhon
Susan
David
Peter
Mary
Julie
apellido
White
Sarandon
Ford
Denver
Lee
Roberts
salario
300000
240000
180000
120000
90000
90000
Funcin
Descripcin
AVG
COUNT
SUM
MAX
MIN
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
SELECT
MIN(salary) AS myMin,
MAX(salary) AS myMax,
AVG(salary) AS myAvg
FROM Staff;
myMin myMax myProm
90000 300000 170000
Nombre de columnas
Funciones agregadas
constantes
Expresiones involucrando combinaciones de las
anteriores.
Clausula HAVING
La clusula HAVING es diseada para ser utilizada
con la clusula GROUP BY para restringir los grupos
que aparecen en la tabla final.
HAVING es similar a WHERE, pero WHERE filtra filas
individuales mientras que HAVING filtra grupos.
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
CUANTOS HAY
ARMED
Tabla rxlog
Agrupar
todas
las
unidades
departamento y municipio
por
SELECT branchNo,
COUNT(staffNo) AS myCount,
SUM(salary) AS mySum
FROM Staff
GROUP BY branchNo
HAVING COUNT(staffNo) > 1
ORDER BY branchNo;
Subconsultas
Algunas instrucciones SQL pueden tener un SELECT
incrustado dentro de l.
calle
16 Holhead
6 Argvill St.
163 Main Street
2 Manor Rd
10 Dale Rd
ciudad
Aberdeem
London
Glasgow
Glasgow
Bristol
Igualdad
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
Tabla Empleado
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Igualdad
Listar los empleados que trabajan en
la oficina ubicada en 163 Main
Street
SELECT numEmpleado, nombre, apellido, cargo
FROM Empleado
WHERE numOficina = (SELECT numOficina
FROM Oficina
WHERE calle = 163 Main St);
Igualdad
Tabla Oficina
numOficina
B005
B007
B003
B004
B002
calle
16 Holhead
6 Argvill St.
163 Main Street
2 Manor Rd
10 Dale Rd
ciudad
Aberdeem
London
Glasgow
Glasgow
Bristol
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
Tabla Empleado
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
nombre
Peter
David
Susan
apellido
Denver
Ford
Sarandon
cargo
Asistente
Supervisor
Gerente
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
agregada.
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
agregada.
SELECT numEmpleado, nombre, apellido, cargo,
salario - (SELECT AVG(salario)
FROM Empleado) AS Diferencia
FROM Empleado
WHERE salario > (SELECT AVG(salario)
FROM Empleado);
agregada.
No puede escribir WHERE salario > AVG(salario)
En lugar, utilice un subquery para encontrar el
sueldo promedio (170000), y despus utilice un
SELECT externo para encontrar sos empleados
con sueldo mayores que este:
SELECT numEmpleado, nombre, apellido, cargo,
salario - 170000 AS Diferencia
FROM Empleado
WHERE salario > 170000);
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
numEmpleado
SG14
SG5
SL21
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
nombre
David
Susan
John
apellido
Ford
Sarandon
White
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
cargo
Diferencia
Supervisor
10000
Gerente
70000
Gerente
130000
FROM Empleado
WHERE salario > (SELECT AVG(salario) FROM Empleado);
Reglas de Subconsulta
La clusula ORDER BY no se puede utilizar en una
subconsulta (aunque puede ser utilizada en un
SELECT exterior).
La lista SELECT de una subconsulta debe consistir
en un solo nombre o expresin de columna, a
excepcin de las subconsultas que usan EXIST
Por defecto, los nombres de la columna refieren a
nombre de la tabla adentro de la clusula del
subquery. Puede referir a una tabla en el FROM
usando un alias.
Subquery Rules
Cuando una subconsulta es uno de los dos
operandos en una comparacin, la subconsulta
debe aparecer al lado derecho de la
comparacin .
Un subconsulta no se puede
operando en una expresin.
utilizar
como
calle
16 Holhead
6 Argvill St.
163 Main Street
2 Manor Rd
10 Dale Rd
ciudad
Aberdeem
London
Glasgow
Glasgow
Bristol
calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd
5 Novar Dr
ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow
Glasgow
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
Tabla Empleado
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Tabla Propiedad
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
G12 9AX
tipo
hab renta numPropietario
Casa
6
650 C046
Departamento
4
400 C087
Departamento
3
350 C040
Departamento
3
375 C093
Casa
5
600 C087
Departamento
4
450 C093
numEmpleado
SL21
SL21
SA9
SA9
SG5
SL21
(SELECT numEmpleado
FROM Empleado
WHERE numOficina =
(SELECT numOficina
FROM Oficina
WHERE calle = 163 Main St));
numPropiedad
PG21
calle
10 Dale Rd
ciudad
Glasgow
codigoPostal tipo
G12
Casa
hab renta
5
600
ANY y ALL
ANY y ALL pueden ser usadas con subconsultas
que producen una sola columna de nmeros
Si usa ALL, la condicin ser verdadera si es
satisfecha por todos los valores producidos en la
subconsulta
Si usa ANY, la condicin ser verdadera si es
satisfecha por uno o ms valores producidos por
la subconsulta .
Si la subconsulta es vacia, ALL retorna verdadero
y ANY retorna falso
SOME mude ser usado en lugar de ANY.
Ejemplo 5.22
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Ejemplo 5.22
Ejemplo 5.22
nombre
Jhon
David
Susan
apellido
White
Ford
Sarandon
cargo
salario
Gerente
300000
Supervisor
180000
Gerente
240000
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
nombre apellido
Jhon
White
cargo
Gerente
salario
300000
Consultas multi-tablas
Puede utilizar subqueries que proporcione
columnas de resultado que vienen de la misma
tabla.
Si las columnas de resultado vienen de ms de una
tabla debe utilizar un join.
Consultas multi-tablas
Tambin es posible utilizar un alias para una tabla
nombrada en la clusula FROM.
nombre
Jhon
Aline
Mike
Mary
apellido
Kay
Stewart
Ritchie
Tregear
direccion
56 High ST, Londonn SW1 4EH
64 Fern Dr,. Glasgow, G42 OBL
63 Well St, Glasgow, G42
12 Park PI, Glasgow, G4 0QR
telefono
0207-774-5632
0141-324-1825
0141-943-7420
0141-225-7421
tipoPref
maxRent
Departamento
425
Departamento
350
Casa
750
Departamento
600
Tabla Visita
numCliente
CR56
CR76
CR56
CR62
CR56
numPropiedad
PA14
PG4
PG4
PA14
PG36
Fecha
24-11-1999
20-10-1999
26-11-1999
14-11-1999
28-10-1999
Comentario
muy pequeo
muy lejos
no tiene saln
nombre
Aline
Aline
Aline
Mary
Jhon
apellido
Stewart
Stewart
Stewart
Tregear
Kay
numPropiedad
PA14
PG4
PG36
PA14
PG4
Comentario
muy pequeo
no tiene saln
muy lejos
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Tabla Propiedad
numPropiedad
PA14
PL94
PG4
PG36
PG21
PG16
calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd
5 Novar Dr
ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow
Glasgow
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
G12 9AX
tipo
hab renta numPropietario
Casa
6
650 C046
Departamento
4
400 C087
Departamento
3
350 C040
Departamento
3
375 C093
Casa
5
600 C087
Departamento
4
450 C093
numEmpleado
SL21
SL21
SA9
SA9
SG5
SL21
numEmpleado
SG5
SL21
SL21
SL21
SA9
SA9
nombre
Susan
Jhon
Jhon
Jhon
Mary
Mary
apellido
Sarandon
White
White
White
Lee
Lee
numPropiedad
PG21
PA14
PG16
PL94
PG36
PG4
Ejemplo 5.26
Un join de tres tablas
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Tabla Propiedad
numPropiedad
PA14
PL94
PG4
PG36
PG21
PG16
calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd
5 Novar Dr
ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow
Glasgow
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
G12 9AX
tipo
Casa
Departamento
numOficina
B005
Departamento
B007
Departamento
B003
Casa
B004
Departamento
B002
Bristol
G12
Tabla Oficina
Para cada oficina, Listar los nmeros y
nombres de los empleados que
administran propiedades, incluyendo la
ciudad en la cual la oficina est ubicada y
las propiedades que ellos administran.
Ejemplo 5.26
Un join de tres tablas
numEmpleado
SG5
SL21
SL21
SL21
SA9
SA9
nombre
Susan
Jhon
Jhon
Jhon
Mary
Mary
apellido
Sarandon
White
White
White
Lee
Lee
numPropiedad
PG21
PA14
PG16
PL94
PG36
PG4
Tabla Oficina
numOficina
B005
B007
B003
B004
B002
calle
16 Holhead
6 Argvill St.
163 Main Street
2 Manor Rd
10 Dale Rd
ciudad
Aberdeem
London
Glasgow
Glasgow
Bristol
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
Ejemplo 5.26
Un join de tres tablas
Para cada oficina, Listar los nmeros y nombres
de los empleados que administran propiedades,
incluyendo la ciudad en la cual la oficina est
ubicada y las propiedades que ellos administran.
Ejemplo 5.26
ciudad
Glasgow
Aberdeem
Aberdeem
Aberdeem
London
London
numEmpleado
SG5
SL21
SL21
SL21
SA9
SA9
nombre
Susan
Jhon
Jhon
Jhon
Mary
Mary
apellido
Sarandon
White
White
White
Lee
Lee
numPropiedad
PG21
PA14
PG16
PL94
PG36
PG4
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Tabla Propiedad
numPropiedad
PA14
PL94
PG4
PG36
PG21
PG16
calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd
5 Novar Dr
ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow
Glasgow
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
G12 9AX
tipo
hab
Casa
Departamento
Departamento
Departamento
Casa
Departamento
6
4
3
3
5
4
renta
650
400
350
375
600
450
numPropietario
C046
C087
C040
C093
C087
C093
numEmpleado
SL21
SL21
SA9
SA9
SG5
SL41
columnas
numEmpleado
SG5
SL21
SL41
SA9
myCount
1
2
1
2
Calculando un Join
El procedimiento para generar resultados
de un join es:
1. Forme el producto cartesiano de las tablas nombradas en la
clusula FROM.
2. Si hay una clusula WHERE, aplique la condicin de bsqueda
a cada fila de la tabla del producto, conservando esas filas
que satisfagan la condicin
3. Para cada fila restante, determine el valor de cada item en
lista SELECT para producir una sola fila en la tabla resultado.
Calculando un Join
4. Si se ha especificado DISTINCT, eliminar cualquier fila
duplicada de la tabla resultado.
Outer Joins
Si una fila de una de las tablas a unir no
coincide, la fila es omitida de la tabla resultante.
El outer join retiene las filas que no satisfacen la
condicin.
Considere las siguientes tablas:
Tabla Oficina1
numOficina
B003
B004
B002
ciudad
Glasgow
Bristol
London
Tabla Propiedad1
numPropiedad
PA14
PL94
PG4
ciudad
Aberdeem
London
Glasgow
Outer Joins
El (inner) join de estas dos tablas:
SELECT o.*, p.*
Outer Joins
ciudad
Glasgow
London
numOficina
B003
B004
B002
ciudad
Glasgow
Bristol
London
Tabla Propiedad1
numPropiedad
PA14
PL94
PG4
ciudad
Aberdeem
London
Glasgow
numOficina
B003
B004
B002
ciudad
Glasgow
Bristol
London
numPropiedad
PG4
NULL
PL94
ciudad
Glasgow
NULL
London
numOficina
B003
B004
B002
ciudad
Glasgow
Bristol
London
Tabla Propiedad1
numPropiedad
PA14
PL94
PG4
ciudad
Aberdeem
London
Glasgow
numOficina
NULL
B002
B003
ciudad
NULL
London
Glasgow
numPropiedad
PA14
PL94
PG4
ciudad
Aberdeem
London
Glasgow
ciudad
NULL
Glasgow
Bristol
London
numPropiedad
PA14
PG4
NULL
PL94
ciudad
Aberdeem
Glasgow
NULL
London
(SELECT * ...)
Ejemplo 5.31
Consulta usando EXIST
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Tabla Oficina
numOficina
B005
B007
B003
B004
B002
calle
16 Holhead
6 Argvill St.
163 Main Street
2 Manor Rd
10 Dale Rd
ciudad
Aberdeem
London
Glasgow
Glasgow
Bristol
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
Ejemplo 5.31
Ejemplo5.31
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
Tabla Oficina
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
numOficina
B005
B007
B003
B004
B002
calle
16 Holhead
6 Argvill St.
163 Main Street
2 Manor Rd
10 Dale Rd
ciudad
Aberdeem
London
Glasgow
Glasgow
Bristol
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
Ejemplo 5.31
Ejemplo 5.31
Union, Intersect, y
Difference (Except)
Puede utilizar operaciones de conjuntos normales tales
como unin, interseccin, y diferencia para combinar
resultados de dos o ms consultas en una sola tabla
resultado.
La unin de dos tablas, A y B, es una tabla que
contiene todas las filas en A o B o ambos.
La interseccin es una tabla que contiene todas las
filas comunes a A y a B.
Union, Intersect, y
Difference (Except)
El formato de la clusula del operador de conjunto
en cada caso es:
op [ALL] [CORRESPONDING [BY {columna1 [, ...]}]]
Union, Intersect, y
Difference (Except)
Si se especifica ALL el resultado puede incluir filas
duplicadas.
Algunos dialectos no soportan INTERSECT y EXCEPT;
otros usan MINUS en lugar de EXCEPT
Union, Intersect, y
Difference (Except)
calle
16 Holhead
6 Argvill St.
9 Argvill St.
10 Dale Rd
ciudad
Aberdeem
London
London
Glasgow
codigoPostal renta
AB7 5SU
650
NW2
400
NW2
800
G12
600
Tabla Oficina
numOficina
B005
B007
B003
B004
B002
calle
ciudad
16 Holhead Aberdeem
6 Argvill St. London
6 Lawrence StGlasgow
2 Manor Rd Glasgow
10 Dale Rd Bristol
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
ciudad
Aberdeem
London
Glasgow
Bristol
calle
16 Holhead
6 Argvill St.
9 Argvill St.
10 Dale Rd
ciudad
Aberdeem
London
London
Glasgow
codigoPostal renta
AB7 5SU
650
NW2
400
NW2
800
G12
600
Tabla Oficina
numOficina
B005
B007
B003
B004
B002
calle
ciudad
16 Holhead Aberdeem
6 Argvill St. London
6 Lawrence StGlasgow
2 Manor Rd Glasgow
10 Dale Rd Bristol
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
O:
SELECT O.city
FROM Oficina o Propiedad p
WHERE o.ciudad = p.ciudad;
O
(SELECT * FROM Oficina)
EXCEPT CORRESPONDING BY ciudad
(SELECT * FROM Propiedad);
O
SELECT DISTINCT ciudad FROM Oficina o
WHERE NOT EXISTS
(SELECT * FROM Propiedad p
WHERE p. ciudad = b. ciudad );
INSERT
INSERT INTO Nombretabla [ (listaDeColumnas) ]
VALUES (listaDeValores)
INSERT
La listaDeValores debe coincidir con
listaDeColumnas como sigue:
El nmero de tems de cada lista debe ser el
mismo
Debe haber una correspondencia directa en la
posicin de los tems en las dos listas,
El tipo de datos de cada item en listaDeValores
debe ser compatible con el tipo de datos de la
correspondiente columna.
Ejemplo 5.34
INSERT . . . VALUES
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Ejemplo 5.34
INSERT . . . VALUES
Insertar una nueva fila en la tabla Empleado,
entregando los datos para todas las columnas:
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
Asistente,
M,
INSERT SELECT
La segunda forma de la instruccin INSERT
permite que mltiples filas sean copiadas
de una o ms tablas a otra, y tiene el
siguiente formato:
calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd
5 Novar Dr
ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow
Glasgow
codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
G12 9AX
tipo
hab renta numPropietario
Casa
6
650 C046
Departamento
4
400 C087
Departamento
3
350 C040
Departamento
3
375 C093
Casa
5
600 C087
Departamento
4
450 C093
numEmpleado
SL21
SL21
SA9
SA9
SG5
SL21
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido totalProp
White
3
Denver
0
Ford
0
Lee
2
Sarandon
1
Roberts
0
UPDATE
UPDATE NombreTabla
SET columnName1 = dataValue1
[, columnName2 = dataValue2...]
[WHERE searchCondition]
UPDATE
La clusula WHERE es opcional:
o Si se omite, las columnas nombradas sern actualizadas para todas las
filas en tabla;
o Si se especifica, solamente esas filas que satisfacen la searchCondition
son actualizadas.
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
mltiples columnas
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
mltiples columnas
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41
nombre
Jhon
Peter
David
Mary
Susan
Julie
apellido
White
Denver
Ford
Lee
Sarandon
Roberts
cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente
sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63
salario
300000
120000
180000
90000
240000
90000
numOficina
B005
B003
B003
B007
B003
B005
UPDATE Empleado
SET cargo = Gerente,
salario = 190000
WHERE numEmpleado = SG14;
DELETE
DELETE FROM NombreTabla
[WHERE searchCondition]
numCliente
CR56
CR76
CR56
CR62
CR56
numPropiedad
PA14
PG4
PG4
PA14
PG36
Fecha
24-11-1999
20-10-1999
26-11-1999
14-11-1999
28-10-1999
Comentario
muy pequeo
muy lejos
no tiene saln
Filas especificas
Tabla Visita
numCliente
CR56
CR76
CR56
CR62
CR56
numPropiedad
PA14
PG4
PG4
PA14
PG36
Fecha
24-11-1999
20-10-1999
26-11-1999
14-11-1999
28-10-1999
Comentario
muy pequeo
muy lejos
no tiene saln
Filas especificas
Tabla Visita
numCliente
CR56
CR76
CR56
CR62
CR56
numPropiedad
PA14
PG4
PG4
PA14
PG36
Fecha
24-11-1999
20-10-1999
26-11-1999
14-11-1999
28-10-1999
Comentario
muy pequeo
muy lejos
no tiene saln
Fin