Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidad
El Lenguaje SQL
Objetivos de SQL
Idealmente un lenguaje de base de datos debera permitir a un usuario:
Crear la base de datos y las estructuras de relaciones Realizar tareas bsicas de administracin de datos, Realizar consultas simples y complejas Debe realizar estas tareas con mnimo esfuerzo del usuario Su estructura de comandos y sintaxis debe ser fcil de aprender Debe ser portable
Objetivos de SQL
SQL es un lenguaje orientado a transformacin con dos principales componentes:
Hasta 1999 SQL no contena comando para control de flujo. Estos tenan que ser implementados usando lenguajes de programacin o un Lenguaje de control de tareas, o interactivamente por las decisiones del usuario.
2011 Erwin Fischer
7
Un DDL para definir la estructura de la base de datos y controlar el acceso a los datos; Un DML para recuperar y actualizar datos
Objetivos de SQL
Objetivos de SQL
2) INSERT INTO Empleado VALUES (SG16, Brown, 8300); 3) SELECT numEmpleado, nombre, salario FROM Empleado WHERE salario > 10000;
2011 Erwin Fischer
9
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 facto para bases de datos relacionales
2011 Erwin Fischer
10
Historia de SQL
En 1974, D. Chamberlin (Laboratorio de IBM San Jos) 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.
2011 Erwin Fischer
11
Historia de SQL
Aun pronunciado see-quel, a pesar que la pronunciacin oficial es S-Q-L. IBM posteriormente produjo un Prototipo de un DBMS llamado System R, basado en SEQUEL/2. Las races de SQL, estn en SQUARE (Specifying Queries as Relational Expressions), el cual es anterior al proyecto System R.
2011 Erwin Fischer
12
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.
2011 Erwin Fischer
13
Importancia de SQL
SQL pasa a formar parte de la arquitecturas de aplicaciones tales como IBMs Systems Application Architecture (SAA). 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.
2011 Erwin Fischer
14
Importancia de SQL
El SQL se utiliza en otros estndares e incluso influencia el desarrollo de otros estndares como herramienta de definicion. Los ejemplos incluyen:
El sistema IRDS (Information Resource Dictionary System, sistema de diccionarios para recursos de informacin de ISO). El estndar RDA (Remote Data Access, acceso remoto a datos).
15
18
Literales
Los literales son constantes usadas en sentencias SQL. Todos los literales no numricos deben estar encerrados en comillas simple (ej. London).
Todos los literales numricos no deben estar encerrados en comillas (ej. 650.00).
2011 Erwin Fischer
19
Instruccin SELECT
SELECT [DISTINCT | ALL] {* | [columnExpression [AS newName]] [,...] } FROM NombreTabla [alias] [, ...] [WHERE condicin] [GROUP BY listaColumna] [HAVING condicin] [ORDER BY listaColumna]
20
Instruccin SELECT
FROM Especifica la o las tabla(s) a ser usadas WHERE Filtra filas. GROUP BY Forma grupos de filas con el mismo valor de columna. HAVING Filtra los grupos de acuerdo a una condicin. SELECT Especifica que columnas van a aparecer en la salida ORDER BY Especifica el orden de la salida.
21
Instruccin SELECT
22
23
24
Ejemplo 5.2 Recuperar columnas especificas, todas las filas Producir una lista de salarios para todos los empleados, mostrando solamente, numEmpleado, nombre, apellido y salario.
SELECT numEmpleado, nombre, apellido, salario FROM Empleado;
25
Ejemplo DISTINCT
5.3
Uso
de
Listar el numero de propiedad de todas las propiedades que han sido visitadas SELECT numPropiedad
FROM Visita;
27
28
29
Ejemplo calculados
5.4
Campos
Listar el salario mensual para todos los empleados, mostrando el numero de empleado, nombre, apellido y el detalle del salario
SELECT numEmpleado, nombre, apellido, salario/12 FROM Empleado;
numEmpleado SL21 SG37 SG14 SA9 SG5 SL41 nombre Jhon Peter David Mary Susan Julie apellido White Denver Ford Lee Sarandon Roberts col4 25000 10000 15000 7500 20000 7500
30
Ejemplo calculados
5.4
Campos
31
SELECT numEmpleado, nombre, apellido, salario FROM empleado WHERE salario > 100000;
33
34
35
36
37
numCliente nombre apellido direccion CR74 Mike Ritchie 63 Well St, Glasgow, G42 CR62 Mary Tregear 12 Park PI, Glasgow, G4 0QR
38
39
numCliente numPropiedad Q56 IA14 Q76 Q56 Q62 Q56 IG4 IG4 IA14 IG36
Fecha Comentario 24-11-1999 muy pequeo 20-10-1999 muy lejos 26-11-1999 14-11-1999 no tiene saln 28-10-1999
40
41
La versin negada (IS NOT NULL) puede verificar por valores no-null.
42
Listar los sueldos para todo el personal, dispuestos en orden descendente del sueldo.
SELECT numEmpleado, nombre, apellido, salario FROM Empleado ORDER BY salario DESC;
43
44
La 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
45
46
48
49
Descripcin
Calcula el promedio de los valores de un campo determinado Devuelve el nmero de registros de la seleccionados Devuelve la suma de todos los valores de un campo determinado Devuelve el valor ms alto de un campo especificado Devuelve el valor ms bajo de un campo especificado
50
DISTINCT no tiene efecto con MIN/MAX, pero puede tener con SUM/AVG.
52
53
54
55
myCount 2
57
58
myCount
mySum 2 540000
59
60
Ejemplo 5.16 Uso de MIN, MAX y AVG Determinar el sueldo mnimo, mximo y el promedio de los empleados. SELECT MIN(salario) AS myMin, MAX(salario) AS myMax, AVG(salario) AS myProm FROM Empleado;
myMin myMax myProm 90000 300000 170000
2011 Erwin Fischer
61
63
64
65
Los nombres de las columnas en la clusula HAVING deben tambin aparecer en la lista GROUP BY o estar contenido dentro de una funcin agregada.
2011 Erwin Fischer
66
Para cada oficina con ms de 1 empleado, encuentre el nmero de empleados en cada oficina y la suma de sus sueldos.
67
GROUP BY numOficina
HAVING COUNT(numEmpleado) > 1 ORDER BY numOficina;
68
Subconsultas
Algunas instrucciones SQL pueden tener un SELECT incrustado dentro de l. Un subselect puede ser usado en una clusula WHERE y HAVING de un SELECT externo, donde se llama una subquery o consulta anidada. Los Subselects pueden tambin aparecer en las instrucciones INSERT, UPDATE, y DELETE.
69
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
Listar los empleados que trabajan en la oficina ubicada en 163 Main Street
2011 Erwin Fischer
70
71
72
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
Listar los empleados que trabajan en la oficina ubicada en 163 Main Street
numEmpleado SG37 SG14 SG5 nombre Peter David Susan apellido Denver Ford Sarandon cargo Asistente Supervisor Gerente
Tabla resultado
73
Listar a todos los empleados cuyo sueldo sea mayor que el sueldo promedio, e indique por cunto.
2011 Erwin Fischer
74
75
76
Reglas de Subconsulta
La clusula ORDER BY no se puede utilizar en una subconsulta (aunque puede ser
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 columna en una subconsulta se refieren al nombre de la tabla en la clusula FROM del subquery. Puede referir a una tabla en el FROM de una consulta externa usando un alias.
2011 Erwin Fischer
78
Subquery Rules
Cuando una subconsulta es uno de los dos operandos en una comparacin, la subconsulta debe aparecer al lado derecho de la comparacin.
79
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
Listar las propiedades que son manejadas por los empleados que trabajan en la sucursal de la calle 163 Main Street.
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
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
80
(SELECT numEmpleado FROM Empleado WHERE numOficina = (SELECT numOficina FROM Oficina WHERE calle = 163 Main Street));
numPropiedad PG21
calle 10 Dale Rd
ciudad Glasgow
81
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.
2011 Erwin Fischer
82
Listar todos los empleados cuyo salario es mayor que el salario de al menos un empleado de la sucursal B003.
2011 Erwin Fischer
83
84
Listar todos los empleados cuyo salario es mayor que el salario de todos los empleados de la sucursal B003.
2011 Erwin Fischer
86
cargo Gerente
salario 300000
87
Consultas multi-tablas
Puede utilizar subqueries que proporcione columnas de resultado que vienen de la misma tabla.
Consultas multi-tablas
Tambin es posible utilizar un alias para una tabla nombrada en la clusula FROM. El Alias es separado del nombre de la tabla con un espacio. El alias se puede utilizar para calificar nombres de la columna cuando hay ambigedad.
2011 Erwin Fischer
89
Tabla Visita
numCliente numPropiedad CR56 PA14 CR76 CR56 CR62 CR56 PG4 PG4 PA14 PG36 Fecha Comentario 24-11-1999 muy pequeo 20-10-1999 muy lejos 26-11-1999 14-11-1999 no tiene saln 28-10-1999
Listar los nombres de todos los clientes que han visitado una propiedad y los comentarios efectuados al visitarla.
2011 Erwin Fischer
90
SELECT c.numCliente, nombre, apellido, numPropiedad, comentario FROM Cliente c, Visita v WHERE c.numCliente = v.numCliente;
91
En cada caso, FROM reemplaza el FROM y WHERE original. Sin embargo, el primero produce una tabla con dos columnas idnticas de numCliente.
93
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
Para cada oficina, listar los nmeros y nombres de los empleados que administran propiedades y las propiedades que ellos administran.
2011 Erwin Fischer
94
SELECT e.numOficina, e.numEmpleado, nombre, apellido, numPropiedad FROM Empleado e, Propiedad p WHERE e.numEmpleado = p.numEmpleado ORDER BY e.numOficina, e.numEmpleado, numPropiedad;
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
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.
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
96
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
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.
2011 Erwin Fischer
97
98
99
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
100
101
102
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.
103
Calculando un Join
4. Si se ha especificado DISTINCT, eliminar cualquier
fila duplicada de la tabla resultado. 5. Si hay una clusula ORDER BY, se requiere ordenar la tabla resultado.
104
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 Tabla Propiedad1
105
Outer Joins
El (inner) join de estas dos tablas:
numOficina ciudad numPropiedad ciudad B003 Glasgow PG4 Glasgow B002 London PL94 London
2011 Erwin Fischer
106
Outer Joins
Tabla resultado del inner join tabla Oficina1 con tabla Propiedad1
La tabla resultado tiene dos filas donde son iguales las ciudades.
No hay filas que corresponden a las oficinas en Bristol y Aberdeen. Para incluir filas incomparables en la tabla resultado, utilice un join externo (Outer Join).
2011 Erwin Fischer
107
Liste las oficinas y las Propiedades que estn en la misma ciudad junto con cualquier oficina incomparable.
SELECT o.*, p.* FROM Oficina1 o LEFT JOIN Propiedad1 p ON o.ciudad = p.ciudad;
2011 Erwin Fischer
108
Liste los sucursales y las propiedades en la misma ciudad y cualquier propiedad incomparable (ciudad unmatched). SELECT o.*, p.* FROM Oficina1 b RIGHT JOIN Propiedad1 p ON b.ciudad = p.ciudad;
110
111
112
no
Verdadero si y solo si existe por lo menos una fila en la tabla resultado retornada por la subquery. Falso si la subconsulta retorna una tabla vaca.
NOT EXISTS es el opuesto de EXISTS.
114
(SELECT * ...)
115
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
116
117
5.31
Tabla Oficina
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
SELECT numEmpleado, nombre, apellido, cargo FROM Empleado e WHERE EXISTS (SELECT * FROM Oficina o WHERE e.numEmpleado = o.numEmpleado AND ciudad = London);
numEmpleado SA9
cargo Asistente
118
Si se omite, listara todos los registros de empleado, debido a que la siguiente subconsulta:
SELECT * FROM Oficina WHERE ciudad=London
119
120
121
Si CORRESPONDING BY es especificado, entonces la operacin de conjunto es realizada sobre la o las columnas nombradas Si CORRESPONDING es especificado sin el BY, la operacin de conjunto se aplica sobre las columnas comunes en ambas tablas .
2011 Erwin Fischer
122
123
124
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
Construya un listado de todas las ciudades en donde hay ya sea una oficina o una propiedad.
2011 Erwin Fischer
125
(SELECT ciudad
FROM Oficina WHERE ciudad IS NOT NULL) UNION (SELECT ciudad FROM Propiedad WHERE ciudad IS NOT NULL);
2011 Erwin Fischer
126
127
Uso
de
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
Construya un listado de todas las ciudades en que hay una oficina y una propiedad.
2011 Erwin Fischer
129
Uso
de
Construya un listado de todas las ciudades en que hay una oficina y una propiedad. (SELECT ciudad FROM Oficina)
INTERSECT (SELECT ciudad FROM Propiedad);
130
Uso
de
131
Uso
de
O:
SELECT DISTINCT ciudad FROM Oficina o WHERE EXISTS (SELECT * FROM Propiedad p WHERE p.ciudad = o.ciudad);
132
Ejemplo EXCEPT
5.34
Uso
de
O
(SELECT * FROM Oficina) EXCEPT CORRESPONDING BY ciudad (SELECT * FROM Propiedad);
2011 Erwin Fischer
133
Ejemplo EXCEPT
5.34
Uso
de
O
SELECT DISTINCT ciudad FROM Oficina o WHERE NOT EXISTS (SELECT * FROM Propiedad p WHERE p. ciudad = b. ciudad );
134
Tres comandos SQL para modificar el contenido de las tablas en la base de datos:
Insert Agrega nuevas filas de datos a una tabla Delete Elimina filas de datos de una tabla Update Modifica los datos existentes en una tabla.
135
INSERT
INSERT INTO Nombretabla [ (listaDeColumnas) ]
VALUES (listaDeValores)
listaDeColumnas es opcional; si se omite, SQL asume la lista de todas las columnas en el orden original. todas las columnas omitidas en la lista deben haber sido declaradas NULL cuando la tabla fue creada, a menos que se haya utilizado la opcin DEFAULT cuando se creo la columna.
136
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.
2011 Erwin Fischer
137
Insertar una nueva fila en la tabla Empleado, entregando los datos para todas las columnas:
2011 Erwin Fischer
138
INSERT INTO Empleado VALUES (SG16, Alan, Brown, Asistente, M, Date1957-05-25, 83000, B003);
139
INSERT INTO Empleado (numEmpleado, nombre, apellido, cargo, salario, numOficina) VALUES (SG44, Amme, Jones, Asistente, 8100, B003);
O
INSERT INTO Empleado VALUES (SG44, Anne, Jones, Asistente, NULL, NULL, 8100, B003);
140
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: INSERT INTO NombreTabla [ (listaDeColumnas) ]
SELECT ...
141
Ejemplo SELECT
5.35
INSERT
Asuma que hay una tabla EmpleadoTotalPropiedad, que contiene los nombres de los empleados y el nmero de propiedades que ellos manejan: EmpleadoTotalPropiedad (numEmpleado, Nombre, Apellido, totalProp)
Poblar la tabla EmpleadoTotalPropiedad usando los detalles de la tabla Empleado y la tabla Propiedad.
142
Ejemplo SELECT
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
5.35
INSERT
Tabla Propiedad
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
Poblar la tabla EmpleadoTotalPropiedad usando los EmpleadoTotalPropiedad (numEmpleado, Nombre, Apellido, totalProp)
2011 Erwin Fischer
143
Ejemplo SELECT
5.35
INSERT
INSERT INTO EmpleadoTotalPropiedad (SELECT e.numEmpleado, Nombre, Apellido, COUNT(*) FROM Empleado e, Propiedad p WHERE e.numEmpleado = p.numEmpleado Group BY e.numempleado , nombre, apellido) UNION (SELECT numEmpleado, nombre, apellido, 0 FROM Empleado e WHERE NOT EXIST (SELECT * FROM Propiedad p WHERE e.numEmpleado = p.numEmpleado));
144
Ejemplo SELECT
5.35
INSERT
Si la segunda parte de la UNIN se omite, excluye a los empleados que no manejan actualmente ninguna propiedad.
2011 Erwin Fischer
145
UPDATE
UPDATE NombreTabla SET columnName1 = dataValue1 [, columnName2 = dataValue2...] [WHERE searchCondition]
NombreTabla puede ser el nombre de una tabla base o una vista actualizable. La clusula SET especifica los nombres de una o ms columnas a ser actualizadas
2011 Erwin Fischer
146
UPDATE
El(los) nuevo(s) dataValue(s) debe(n) ser compatible con el tipo de datos para la columna correspondiente.
2011 Erwin Fischer
147
D a todos los Empleados un aumento de sueldo del 3%. D a todos los Gerentes un aumento de sueldo del 5%.
148
149
151
UPDATE Empleado
SET cargo = Gerente, salario = 190000 WHERE numEmpleado = SG14;
152
DELETE
DELETE FROM NombreTabla [WHERE searchCondition]
NombreTabla puede ser una tabla base o una vista actualizable. searchCondition es opcional; si se omite, todas las filas son eliminadas de la tabla. Este no elimina la tabla. Si se especifica search_condition solamente se eliminan aquellas filar que satisfacen la condicin
2011 Erwin Fischer
153
155
156
Fin de la Unidad
157
158
X/Open Company
X/Open Company, Ltd. era un consorcio fundado en 1984 para identificar y promover estndares abiertos en el campo de la tecnologa de informacin. X/Open tambin manej la marca registrada de UNIX a partir de 1993 a 1996, cuando X/Open se combin con la fundacin abierta del software Open Software Foundation (OSF) para formar The Open Group
159
Fin de la Unidad
160