Академический Документы
Профессиональный Документы
Культура Документы
Lenguaje SQL
SENTENCIAS DDL
CREATE TABLE
Las tablas se definen en tres pasos:
Dar el nombre a la tabla
Definir cada columna, posiblemente incluyendo restricciones de columna
Definir las restricciones de la tabla
SENTENCIAS DDL
CREATE TABLE
CREATE TABLE nombre-tabla
{campo1 (tipo tamao / dominio) [NOT NULL],
[campo2 (tipo tamao / dominio) [NOT NULL]], [PRIMARY KEY (c1, c2, ..., cn)],
[FOREIGN KEY (c1) REFERENCES tabla-x],
[CHECK (P)]}
SENTENCIAS DDL
CREATE TABLE
Nombre-tabla: Es el nombre de la tabla que se va a crear.
Campo i: son los nombres de los campos de la tabla.
Tipo: Es el tipo de datos del campo.
Tamao: Es el tamao del campo en caracteres
Dominio: es el nombre del dominio asignado al campo.
SENTENCIAS DDL
CREATE TABLE
Primary Key: especifica las columnas que conforman la clave primaria de la tabla.
Foreign key: indica las columnas que constituyen clave externa en la tabla
References: indica la tabla que provee la clave fornea.
Check (P): especifica un predicado que debe satisfacer cada fila de la tabla
SENTENCIAS DDL
nombre-cliente
char(20),
calle-cliente
char(30),
SENTENCIAS DDL
id-cliente
char(5),
saldo
integer
SENTENCIAS DDL
Uso de Constraints
Una restriccin es similar a un ndice, aunque tambin se puede utilizar para establecer
una relacin con otra tabla.
Puede utilizar la clusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE
TABLE para crear o eliminar restricciones.
Hay dos tipos de clusulas CONSTRAINT: una para crear una restricciones en un nico
campo y otra para crear una restriccin en ms de un campo.
SENTENCIAS DDL
Uso de Constraints
CONSTRAINT nombre
{PRIMARY KEY (principal1 [,principal2 [, ...]]) |
UNIQUE (nico1 [,nico2 [, ...]]) |
NOT NULL (negadonulo1 [,negadonulo2 [, ...]]) |
FOREIGN
KEY
(referencia1
[,referencia2
[,
...]])
REFERENCES
tabla_externa
SENTENCIAS DDL
Uso de Constraints
Nombre: Es el nombre de la restriccin que se va a crear.
principal1, principal2: Son los nombres de los campos que se van a designar como clave
principal.
nico1, nico2: Son los nombres de los campos que se van a designar como clave
nica.
CONSTRAINT nombre
{PRIMARY KEY (principal1 [,principal2 [, ...]]) |
UNIQUE (nico1 [,nico2 [, ...]]) |
NOT NULL (negadonulo1 [,negadonulo2 [, ...]]) |
FOREIGN
KEY
REFERENCES
(referencia1
[,referencia2
tabla_externa
[,campo_externo2 [, ...]])]}
[,
...]])
[(campo_externo1
SENTENCIAS DDL
Uso de Constraints
negadonulo1, negadonulo2: Son los nombres de campos que se van a limitar a valores
no Null.
referencia1, referencia2: Son los nombres de los campos de la clave externa a los que
se hace referencia en otra tabla.
CONSTRAINT nombre
{PRIMARY KEY (principal1 [,principal2 [, ...]]) |
UNIQUE (nico1 [,nico2 [, ...]]) |
NOT NULL (negadonulo1 [,negadonulo2 [, ...]]) |
FOREIGN KEY (referencia1 [,referencia2 [, ...]]) REFERENCES
tabla_externa [(campo_externo1 [,campo_externo2 [, ...]])]}
SENTENCIAS DDL
Uso de Constraints
Tabla_externa: Es el nombre de la tabla externa que contiene el campo o los campos
especificados por campo_externo.
Campo_externo1, campo_externo2: Son los nombres de los campos en tabla_externa
especificados por referencia1, referencia2. Puede omitir esta clusula si el campo al que
se hace referencia es la clave principal de tabla_externa.
CONSTRAINT nombre
{PRIMARY KEY (principal1 [,principal2 [, ...]]) |
UNIQUE (nico1 [,nico2 [, ...]]) |
NOT NULL (negadonulo1 [,negadonulo2 [, ...]]) |
FOREIGN KEY (referencia1 [,referencia2 [, ...]]) REFERENCES
tabla_externa [(campo_externo1 [,campo_externo2 [, ...]])]}
SENTENCIAS DDL
ALTER TABLE
ALTER TABLE nombre-tabla
{ADD | MODIFY
[COLUMN campo tipo [(tamao)] [NOT NULL] [CONSTRAINT nombre-constraint tipoconstraint]] |
[CONSTRAINT nombre-constraint tipo-constraint (campo,)]}
SENTENCIAS DDL
ALTER TABLE
Tabla: Es el nombre de la tabla que se va a modificar.
Campo: Es el nombre del campo que se va a agregar o eliminar de tabla.
Tipo: Es el tipo de datos del campo.
Tamao: Es el tamao del campo en caracteres
SENTENCIAS DDL
SENTENCIAS DDL
SENTENCIAS DDL
DROP
DROP {TABLE tabla | INDEX ndice ON tabla}
SENTENCIAS DDL
Ejemplos: DROP
Ejemplo de como se elimina el ndice Mi_Indice de la tabla Empleados:
DROP INDEX Mi_Indice ON Empleados;
EJERCICIO
Cree una Tabla denominada Alumnos con cinco campos acordes a esta entidad
rut
Nombre
Apellido
Carrera
Ao ingreso
EJERCICIO
En la Columna Tipo registre a qu corresponde; Comando, clusula, operador, funcin
de agregado.
Sentencias
Create
Alter
Drop
CONSTRAINT
UNIQUE
Table
Tipo
SENTENCIAS DML
SELECT
UPDATE
INSERT
DELETE
Sentencia SELECT
[SELECT ...]
[INTO ...]
[FROM ...]
[WHERE ...]
[GROUP BY ]
[HAVING ...]
[ORDER BY ...]
[UNION ...]
Clusula SELECT
En la clusula SELECT se especifican las columnas que van a ser mostradas
en pantalla
tabla.*
Clusula FROM
Especfica la(s) fuente(s) de donde van a ser tomadas las columnas mostradas y/o
operadas en la sentencia Select.
[SELECT]
FROM expresin tabla [as] t_alias [, ...]
Clusula INTO
La clusula INTO, permite guardar los resultados intermedios de una consulta
Clusula WHERE
Donde se especifican las condiciones de bsqueda y join para las filas que conforman
el conjunto resultado.
[SELECT ...]
[FROM ...]
WHERE condiciones_de_bsqueda
Tipos de condiciones
Condiciones de comparacin, de Join, o de Subquery.
Ejemplos de la Sentencia
SELECT
SELECT distinct emp_id, fecha_nac, direccion
FROM EMPLEADO
WHERE nombre = Juan AND apellido = Perez
Ejemplos de la Sentencia
SELECT
Mostrar la relacin de clientes que han obtenido un prstamo en alguna sucursal de
Miraflores
nombre-sucursal = Miraflores
Condiciones de Bsqueda
Las condiciones de bsqueda pueden incluir:
Operadores de Comparacin (=, <>, < y >).
Porciones de cadenas de caracteres (SUBSTR)
Rangos (BETWEEN y NOT BETWEEN).
Listas (IN, NOT IN).
Patrones de caracteres (LIKE y NOT LIKE).
Valores desconocidos (IS NULL y IS NOT NULL).
Combinaciones con conjunciones (AND, OR).
Condiciones de Bsqueda
Operadores de comparacin:
WHERE SueldoBsico > 1000
WHERE SUBSTR(CodigoPostal, 1, 3)= SAN
Rangos (BETWEEN / NOT BETWEEN):
WHERE SueldoBsico BETWEEN 1000 AND 5000
Listas (IN / NOT IN):
WHERE Departamento NOT IN ('ADM', 'SIS')
Coincidencia de patrones o cadenas de caracteres (LIKE / NOT LIKE))
WHERE NombreCompleto LIKE LET%
Comodines (Wildcards) en la
clusula WHERE
Wildcard Significado
*%
?, #, _
[-]
[!]
Operadores y Wildcards en la
clusula WHERE
.WHERE Nombre
LIKE %a
LIKE %ar% busca todos los nombres que tengan las letras ar.
(Ej.:Carlos, Arturo, Eleazar).
Operadores y Wildcards en la
clusula WHERE
LIKE _va
LIKE [CM]arlo[ns]
LIKE [B-D]elia
busca todos los nombres que terminan en elia y que comiencen con las
_ _ _
LIKE _ _ _ %
Operadores y Wildcards en la
clusula WHERE
CARACTERES DE ESCAPE:
Para que los patrones puedan contener los caracteres especiales comodn, se especifica un
carcter de escape.
Tablas Combinadas
Permite especificar la tabla resultante de una operacin de reunin natural en la clusula
FROM, en lugar de colocar las condiciones de JOIN en el WHERE
[SELECT]
FROM
[WHERE]
Tablas Combinadas
SELECT
DISTINCT nombre-cliente
FROM
PRESTATARIO PRS
nombre-sucursal = Miraflores
Clusula GROUP BY
Especifica las columnas
Clusula GROUP BY
AVG([ALL|DISTINCT]
expresin)
MIN([ALL|DISTINCT]
expresin)
MAX([ALL|DISTINCT]
expresin)
COUNT([ALL|DISTINCT]
expresin)
COUNT(*)
Clusula GROUP BY
Mostrar la suma de sueldo bsico de los empleados activos, por Departamento
EstadoEmpleado= 'ACT
GROUP BY Nombre_Depto
Clusula GROUP BY
Obtener el nmero de titulares de cuenta de cada sucursal
SELECT
FROM
WHERE
GROUP BY
nombre-sucursal
Clusula HAVING
Especifica una restriccin que aplica a las funciones de agregacin de los grupos.
Esto afecta a las filas que son devueltas como resultado y no al clculo de las
funciones de agregacin.
La clusula WHERE si condiciona el nmero de filas que intervienen en el clculo
de las funciones de agregacin.
Clusula HAVING
SELECT {{columnas_de_agrupacin,}, {funcin_de_agregacin,}}
FROM
[WHERE ]
GROUP BY {columnas_de_agrupacin,}
HAVING condiciones_de_bsqueda
GROUP BY y HAVING
Mostrar el sueldo promedio de los Departamentos con promedio superior a
1000
SELECT Nombre_Depto, AVG(SueldoBasico)
FROM
EstadoEmpleado= 'ACT'
GROUP BY
Nombre_Depto
GROUP BY y HAVING
Saldo promedio de cada cliente de Surco que tiene como mnimo 3 cuentas
SELECT TC. Nombre-cliente, AVG (saldo)
FROM
TC.nombre-cliente = CLI.nombre-cliente
AND
ciudad-cliente = Surco
GROUP BY
TC.nombre-cliente
Clusula ORDER BY
Ordena el resultado de los querys por los valores de las columnas mencionadas.
Solamente se puede ordenar por las columnas especificadas en el SELECT.
ASC: Es el valor por defecto e indica que los resultados se van a presentar
ascendentemente.
DESC: Debe especificarse al lado de la columna cuyo orden se desea ver en forma
descendente.
Consideracin: ordenar un gran nmero de tuplas puede ser costoso. Es conveniente
ordenar slo cuando sea estrictamente necesario.
Clusula ORDER BY
SELECT {columna 1, columna 2,}
FROM
[WHERE ]
[GROUP BY...]
[HAVING ...]
ORDER BY columna 1 [ASC|DESC],....
Clusula ORDER BY
Operador UNION
Permite manipular los resultados de dos o mas querys, combinndolos en un
nico conjunto de datos. Muestra las filas recuperadas por cualquiera de los query.
A diferencia del SELECT, que por omisin conserva los duplicados, la operacin
de unin normalmente los suprime.
Operador UNION
Query1 [UNION [ALL]] QueryN
[ORDER BY..]
donde:
Query1:
y QueryN
SELECT select-list
SELECT select-list
[INTO]
[FROM]
[FROM]
[WHERE]
[WHERE]
[GROUP BY]
[HAVING]
[GROUP BY]
[HAVING]
Operador UNION
Todas las select-list mencionadas con la sentencia UNION, deben tener el mismo
nmero de expresiones (columnas, expresiones aritmticas, funciones de
agregacin, etc.).
Las columnas que se corresponden, deben tener el mismo tipo de dato, sino es as,
debe existir una conversin de datos implcita o explcita con una funcin de
conversin de por medio.
Operador UNION
Todos los clientes que poseen una cuenta, un prstamo o ambos
(SELECT nombre-cliente
FROM
TITULAR-CUENTA)
UNION
(SELECT nombre-cliente
FROM
PRESTATARIO)
OUTER JOINS
Los outer joins extienden los resultados de un join simple. Retornan las filas coincidentes y tambin
las filas de una de las tablas que no tiene elementos en comn con la otra.
[Select]
From tabla1, tabla2
WHERE tabla1.columna1 = tabla2.columna1 (+)
[Select]
From tabla1 LEFT [OUTER] JOIN TABLA2
ON tabla1.columna1 = tabla2.columna1
..devuelven todas las filas de la tabla1 aunque no tengan coincidencias con la tabla2 en la
columna1.
OUTER JOINS
SELECT IDPersona, NombreCompleto,
IDDepartamento, SueldoBasico
FROM
PERSONA, EMPLEADO
ON IDPersona = IDEmpleado
OUTER JOINS
SELECT DE.Nombre_Dpto, IDEmpleado, SueldoBasico
FROM
EMPLEADO.IDDepartamento
DEPARTAMENTO.IDDepartamento
Uso de Subqueries
Un Subquery es una sentencia SELECT anidada dentro de otras sentencias
SQL como SELECT, INSERT, UPDATE o DELETE, o dentro de otro Subquery.
Uso de Subqueries
Subqueries con IN / NOT IN:
El resultado, es una lista de cero o mas valores. Una vez que el Subquery devuelve
resultados, el Outer query los usa, por inclusin o negacin.
Uso de Subqueries
SELECT NombreCompleto, SueldoBasico
FROM
PERSONA, EMPLEADO
WHERE IDPersona=IDEmpleado
And IDEmpleado NOT (SELECT IDEmpleado
FROM SANCIONES_EMPLEADO)
Uso de Subqueries
Subqueries con Operadores de comparacin.
Son los subquerys que se introducen con algn operador de comparacin como =, <>,
<, <=, >, >=, etc.
Estos subqueries retornan un solo valor.
Uso de Subqueries
Operadores de comparacin modificados por ANY o ALL. Estos subqueries retornan
cero o muchos valores.
> ALL, significa que todos los valores retornados por el subquery son menores al
valor de comparacin del outer.
> ANY, significa que por lo menos un valor retornado por el subquery es menor al
valor de comparacin del outer.
Uso de Subqueries.
Mostrar ID, nombre y sueldo de todos los empleados cuyo sueldo es mayor a todos los
sueldos de la tabla CARGO
SELECT
IDEmpleado,
NombreCompleto,
SueldoBasico
FROM
WHERE
EMPLEADO, PERSONA
IDEmpleado = IDPersona
AND SueldoBasico > ALL (SELECT Sueldo FROM CARGO)
Uso de Subqueries.
Mostrar ID, nombre y sueldo de todos los empleados cuyo sueldo es mayor a alguno de los sueldos
de la tabla CARGO
EMPLEADO, PERSONA
IDEmpleado = IDPersona
AND SueldoBasico > ANY (SELECT Sueldo FROM CARGO)
Uso de Subqueries.
Subqueries con el uso de la palabra EXISTS:
Funciona como un test de existencia. La clusula WHERE, examina la existencia de
filas devueltas por el Subquery. El Subquery devuelve los valores de TRUE o FALSE.
Uso de Subqueries.
Muestra los cdigos de los empleados que tienen alguna sancin
SELECT
FROM
IDEmpleado
EMPLEADO EM
WHERE EXISTS
(SELECT * FROM SANCIONES_EMPLEADO SE
WHERE EM.IDEmpleado = SE.IDEmpleado)
Subqueries correlativos
Aquellos queries anidados donde el Subquery depende del outer query para devolver sus
valores.
Esto significa que el Subquery se ejecuta repetidamente, una vez por cada fila
seleccionada por el Outer query.
Subqueries Correlativos
SELECT a.IDEmpleado, a.SueldoBasico
FROM
EMPLEADO a
Sentencia INSERT
INSERT es otra sentencia DML base, usada para incorporar nuevas filas a una tabla de
base de datos.
INSERT [INTO]
{table-name | view-name} [(column-list)]
{VALUES | (values-list) | select-statement }
Sentencia UPDATE
Modifica los datos existentes en filas de una tabla de Base de Datos
UPDATE {table-name | view-name}
SET{column-list
| variable-list
| variable_and_column-list},..
[ WHERE { condition }]
Sentencia UPDATE
Cambiar aquellos cigarrillos de clase Normal, con filtro, fabricados por Tabacalera
Nacional, de modo que ahora no tengan filtro
UPDATE CIGARRILLO
SET filtro = N
WHERE marca in
(SELECT marca FROM MARCA
WHERE Nfabricante = Tabacalera Nacional
And filtro = S and clase = Normal)
Sentencia DELETE
Elimina filas de una tabla de Base de Datos
Sentencia DELETE
Eliminar todos los fabricantes que no manufacturen cigarrillos de clase Ultra Light