Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
SUBCONSULTAS
Jorge Iván Triviño Arbeláez
Administración de Bases de Datos
SQL
Lenguaje Estructurado de Consultas, es un lenguaje
para el acceso y manipulación de Bases de datos.
Restricciones de tablas:
PRIMARY KEY (columna1, columna2...): Permite indicar las columnas que forman la clave
primaria.
FOREIGN KEY (columna1, columna2....) REFERENCES NombreTabla: Indica las
columnas que son clave ajena referenciando a una clave candidata de otra tabla.
UNIQUE (columna1, columna2...): El valor combinado de una o varias columnas es único.
EJERCICIO
Empleado(cod, nombre, fechaNac, email, cargo,
jefe)
Cargo(cod, descripcion, sueldo)
Proyecto(cod, nombre, duracion, liderProyecto,
valor)
EmpleadoProyecto(cod_empleado, cod_proyecto,
horasdedicadas)
Modificación de Tablas
ALTER TABLE <nombre table>
{ ADD <nombre columna nueva> <tipo de dato> [NOT NULL]
MODIFY <nombre columna> [DEFAULT valor | DROP DEFAUL| tipo de dato]
DROP COLUMN<nombre columna> [CASCADE | RESTRICT]
ADD [PRIMARY KEY (nombre columna) |
FOREIGN KEY (nombre columna) REFERENCES nombre_tabla
|UNIQUE (nombre columna) | CHECK (condición)
Renombrar una tabla:
RENAME TABLE <nombre tabla existente> TO <nuevo
nombre tabla>
EJEMPLOS
Agregar a la tabla áreas el campo Responsable de
tipo varchar2(30)
alter table areas ADD responsable varchar2(30)
not null;
Modificar el campo nombre de la tabla
departamentos a char(50)
alter table departamentos MODIFY nombre
varchar2(50);
Eliminación Tablas
DROP TABLE <nombre tabla> [CASCADE, RESTRICT]
Ejemplo
INSERT INTO FACTURA VALUES('A111', 'Factura nueva', 1, 5,
50000);
INSERT INTO FACTURA(C_PAIS, C_CLIENTE) (SELECT C_PAIS,
Ejemplo
Ejemplo
SELECT * FROM ventas ORDER BY codigo_cliente DESC, total ASC;
Ventas
Referencia Codigo_Cliente Codigo_Ciudad Total
5 4 13 3200323,01
4 3 11 23750000,2
2 2 11 34000,00
6 2 12 234000,00
3 1 10 23500,12
1 1 12 50000,12
Consultas con agrupación
se utiliza para considerar los registros cuyos ciertos campos tienen el mismo valor, y
procesarlos de la misma manera, para contarlos, sumarlos, hacer la media…,
esto quiere que los valores iguales se agrupan en uno solo.
Max(campo): calcula el máximo valor almacenado en el campo indicado.
Ejemplo:
calcular el total comprado por cada cliente. (el grupo lo forma el
codigo_cliente)
SELECT codigo_cliente, sum(total) FROM ventas GROUP BY codigo_cliente;
having
No se pueden usar funciones de agrupación en la cláusula
WHERE de un SELECT, las condiciones relacionadas al
resultado de la función se indican en la clausula having.
SELECT [campos|funcion] FROM tabla [WHERE condicion]
GROUP BY campos_grupo HAVING function condición valor;
Consultas multitablas
Consultas realizadas sobre múltiples tablas.
Las siguientes Entidades son utilizadas en los ejemplos explicativos de cada uno
de los tipos de join.
Resultado
Empleado.Apellido Empleado.IDdepartamento departamento.NombreDepartament departamento.IDDepartamento
o
Smith 34 Producción 34
Jordán 33 Ingeniería 33
Róbinson 34 Producción 34
Steinberg 33 Ingeniería 33
Rafferty 31 Ventas 31
Natural join
Es una especialización de la combinación de equivalencia,
anteriormente mencionada. En este caso se comparan todas
las columnas que tengan el mismo nombre en ambas tablas.
Smith 34 Producción
Jordán 33 Ingeniería
Róbinson 34 Producción
Steinberg 33 Ingeniería
Rafferty 31 Ventas
Outer join
Mediante esta operación no se requiere que cada
registro en las tablas a tratar tenga un registro
equivalente en la otra tabla. El registro es
mantenido en la tabla combinada así no existe otro
registro que le corresponda.
Existen varios tipos:
Left join
Right join
Full join
Left join
El resultado de esta operación siempre contiene todos los
registros de la tabla de la izquierda (la primera tabla que se
menciona en la consulta), aun cuando no exista un registro
correspondiente en la tabla de la derecha, para uno de la
izquierda.
SELECT distinct * FROM empleado LEFT OUTER JOIN
departamento ON empleado.IDDepartamento =
departamento.IDDepartamento;
Empleado.Apellido Empleado.IDdepartamento departamento.NombreDepartamento departamento.IDDepartamento
Jordán 33 Ingeniería 33
Rafferty 31 Ventas 31
Róbinson 34 Producción 34
Smith 34 Producción 34
Gaspar 36 NULL NULL
Steinberg 33 Ingeniería 33
Right join
Esta operación inversa a la anterior; el resultado de esta operación siempre contiene
todos los registros de la tabla de la derecha (la segunda tabla que se menciona en la
consulta), aun cuando no exista un registro correspondiente en la tabla de la izquierda,
para uno de la derecha.
Smith 34 Producción 34
Jordán 33 Ingeniería 33
Róbinson 34 Producción 34
Steinberg 33 Ingeniería 33
Rafferty 31 Ventas 31
NULL NULL Marketing 35
Full join
Esta operación presenta los resultados de tabla izquierda y tabla derecha
aunque no tengan correspondencia en la otra tabla. La tabla combinada
contendrá, entonces, todos los registros de ambas tablas y presentará
valores nulos NULLs para registros sin pareja.
Ejemplo
SELECT CO_EMPLEADO, NOMBRE, (SELECT
MIN(FECHA_NOMINA) FROM NOMINAS
WHERE CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO)
PRIMERA_NOMINA
FROM EMPLEADOS;
Subconsultas en el from
Se utiliza para formar una tabla virtual con el
resultado de la consulta, y procesar su resultado
como una tabla real.