Documente Academic
Documente Profesional
Documente Cultură
SQL
DEFINICIN:
Es un lenguaje de BD, el cual permite definir, manipular y
obtener datos de manera muy sencilla a travs de consultas
estructuradas fciles de utilizar.
El objetivo principal de SQL es la realizacin de consultas y
clculos con los datos de una o varias tablas.
El lenguaje SQL est compuesto por una serie de sentencias y
de clusulas muy reducidas en nmero, pero muy potentes en
efectividad.
SQL es un estndar muy extendido.
Se ha convertido en el lenguaje estndar de los SGBD
relacionales.
EVOLUCIN
Aos
1968-1970
1970...
Sucesos
Surge el Modelo Relacional (Codd).
Aparece el concepto de relacin: tabla.
Desarrollo tericos: ej: lgebra relacional (Codd, 1972).
1974
Aos
1983
Sucesos
1987
1989
SQL/89
1990
1992
1986
1994
OPTIMIZACIN DE CONSULTAS
Las tcnicas para optimizar consultas son basada en
reglas heursticas, que permiten ordenar las operaciones
de la consulta en un rbol o grafo:
- La principal heurstica de la optimizacin algebraica
consiste en aplicar primero las operaciones que
reducen el tamao de los resultados intermedios
(primero seleccin y luego proyeccin) antes de
aplicar la reunin u otras operaciones binarias.
- Adems se deben ejecutar las operaciones
seleccionar y reunin ms restrictivas (las que
producen relaciones con el menor numero de tuplas
o el tamao absoluto ms pequeo) antes que otras
operaciones similares.
TIPOS DE DATOS
CHAR:
Tienen una longitud fija.
Almacena de 1 a 255 caracteres.
Si se introduce una cadena de menos longitud que la definida se rellenara
con blancos a la derecha hasta quedar completada.
Si se introduce una cadena de mayor longitud que la fijada nos dar un
error.
VARCHAR:
Almacena cadenas de longitud variable.
La longitud mxima es de 2000 caracteres.
Si se introduce una cadena de menor longitud que la que esta definida, se
almacena con esa longitud y no se rellenara con blancos ni con ningn otro
carcter a la derecha hasta completar la longitud definida.
Si se introduce una cadena de mayor longitud que la fijada, nos dar un
error.
NUMBER:
Se almacena tanto enteros como decimales.
Formato: Number (Precisin, Escala), donde Precisin es el numero
de dgitos totales y Escala la cantidad de decimales.
Genera un error si se pasa del tamao.
El rango mximo va de 1 a 38 dgitos.
LONG:
No almacena nmeros de gran tamao, sino cadenas de caracteres
de hasta 2 GB
DATE:
Almacena la fecha. El formato general es:
Siglo/Ao/Mes/Da/Hora/Minutos/Segundos
RAW:
Almacena cadenas de Bytes (grficos, sonidos, etc.)
LONGRAW:
Como el anterior pero con mayor capacidad.
ROWID:
Sentencias de consultas de datos.
Posicin interna de cada una de las columnas de las tablas.
Longitud
Identificador Mxima
(bytes)
Caracteres permitidos
Base de datos
64
Tabla
64
Columna
64
ndice
64
255
Alias
DEFINCIN DE DATOS
CREAR TABLAS:
);
DEFINCIN DE DATOS
RENOMBRAR TABLAS:
10
DEFINCIN DE DATOS
MODIFICAR CAMPOS DE UNA TABLA:
Despus de crear una tabla, se puede aadir una columna adicional
o modificar la definicin de una columna existente.
Hay que tener en cuenta varios puntos:
- No es posible disminuir el tamao de un columna.
- Para modificar, los tipos anterior y nuevo deben ser
compatibles, o la tabla debe estar vaca.
- La opcin ADD ... NOT NULL slo ser posible si la tabla est
vaca.
- La opcin MODIFY ... NOT NULL slo podr realizarse cuando
la tabla no contenga ninguna fila con valor nulo en la columna en
cuestin.
- Al eliminar un campo se pierde definitivamente todo lo que
contuviera esa columna.
11
12
DEFINCIN DE DATOS
MODIFICAR RESTRICCIONES DE UNA TABLA:
NOT NULL:
- Obligatoriedad de que esta columna tenga un valor no nulo.
- Los valores nulos no ocupan espacio, y son distintos a 0 y al espacio en
blanco.
- Las operaciones con valores Nulos es igual a NULL.
UNIQUE
- Evita valores repetidos en una columna, admitiendo valores nulos.
- Oracle crea un ndice automticamente cuando se habilita esta
restriccin y lo borra al deshabilitarse.
- Permite la entrada de valores nulos salvo que se establezca a la vez una
restriccin NOT NULL.
DEFAULT
- Establece un valor por defecto para esa columna, si no se le asigna
ninguno.
13
CHECK
PRIMARY KEY
14
15
EJEMPLOS:
Aadir la restriccin de clave ajena para el supervisor en la
tabla de Empleados.
ALTER TABLE TB_Empleados
ADD CONSTRAINT FK_TB_Emp_Superv
FOREIGN KEY (Emp_IdSuper)
REFERENCES TB_Empleados(Emp_Id);
Eliminar la restriccin de clave ajena para el supervisor en la
tabla de Empleados.
ALTER TABLE TB_Empleados
DROP CONSTRAINT FK_TB_Emp_Superv;
Eliminar la restriccin de clave primaria de la tabla
Departamentos y la clave ajena asociada de Empleados
(TB_Empleados.id -> TB_Departamentos).
ALTER TABLE TB_Departamentos
DROP PRIMARY KEY CASCADE;
16
DEFINCIN DE DATOS
CONSULTAR RESTRICCIONES:
17
DEFINCIN DE DATOS
BORRAR UNA TABLA:
18
CONSULTAS DE ACTUALIZACIN
20
CONSULTAS DE ACTUALIZACIN
INSERTAR UN REGISTRO:
21
Ejemplo:
Id
TB_Persona
Number(10) PK
Nombre
FechaNac
Date
CodCiudad Number(10) FK
INSERT INTO TB_Persona (Id, Nombre, FechaNac, CodCiudad)
VALUES (10, 'Caro Moreno', '11/05/2006', 30);
INSERT INTO TB_Persona
VALUES (11, 'Felipe Millan', '16/06/1973', null);
INSERT INTO TB_Persona
VALUES (10, 'Caro Moreno', NULL, 31);
INSERT INTO TB_Persona (Id, Nombre)
VALUES (10, 'Juana de Arco');
INSERT INTO Persona (Id, Nombre, codciudad)
VALUES (20, 'Juana de Arco', null);
22
CONSULTAS DE ACTUALIZACIN
ELIMINAR REGISTROS:
23
CONSULTAS DE ACTUALIZACIN
ACTUALIZAR REGISTROS:
UPDATE TB_Tabla
SET
Campo1 = Valor1,
CampoN = ValorN;
UPDATE TB_Tabla
SET
Campo1 = Valor1,
CampoN = ValorN
WHERE Condicin;
24
MANIPULACIN DE DATOS
PROYECCIN (Cm, , Cn(R) )
Para ver todas las tuplas de una relacin con todos sus campos:
SELECT * FROM R;
Para ver todas las tuplas de una relacin con solo algunos
campos:
SELECT Cm, , Cn FROM R;
Si en una consulta no se incluyen las columnas que forman la
llave principal es posible que se obtengan tuplas repetidas, con
DISTINCT se recuperan solo las filas que son distintas:
SELECT DISTINCT (Cm) FROM R;
25
MANIPULACIN DE DATOS
SELECCIN ( Condicin(R) )
La complejidad del criterio de bsqueda es prcticamente
ilimitada, y en l se pueden conjugar operadores de diversos
tipos con funciones de columnas, componiendo expresiones
ms o menos complejas.
Las cadenas y fechas para las condiciones van en comillas
simples '
SELECT * FROM R
WHERE Condicin;
SELECT * FROM R
WHERE (C1 Operador C2) AND
(C3 Operador C4) OR
(C5 Operador C6);
26
Operador
Operacin
Ejemplo
Igualdad
!=, <>, ^=
Desigualdad
<Y>
<= Y >=
IN
NOT IN
IS NULL
Es nulo
27
MANIPULACIN DE DATOS
UNIN ( R U S )
Combina todas las filas del primer conjunto con todas las
filas del segundo.
Cualquier fila duplicada se reducir a una sola.
SELECT * FROM R
UNION
SELECT * FROM S
SELECT
WHERE
UNION
SELECT
WHERE
UNION
SELECT
WHERE
* FROM R
Condicin
* FROM S
Condicin
* FROM T
Condicin
28
MANIPULACIN DE DATOS
U
INTERSECCIN ( R S )
Examina las filas de los conjuntos de entrada y devolver
aquellas que aparezcan en ambos.
Todas las filas duplicadas sern eliminadas antes de la
generacin del conjunto resultante.
SELECT * FROM R
INTERSECT
SELECT * FROM S
SELECT * FROM R
WHERE Condicin
INTERSECT
SELECT * FROM S
WHERE Condicin
INTERSECT
SELECT * FROM T
WHERE Condicin
29
MANIPULACIN DE DATOS
DIFERENCIA ( R - S )
Devuelve aquellas filas que estn en el primer conjunto pero
no en el segundo.
Las filas duplicadas del primer conjunto se reducirn a una
fila nica antes de empezar la comparacin con el segundo
conjunto.
SELECT * FROM R
MINUS
SELECT * FROM S
SELECT
WHERE
MINUS
SELECT
WHERE
MINUS
SELECT
WHERE
* FROM R
Condicin
* FROM S
Condicin
* FROM T
Condicin
30
MANIPULACIN DE DATOS
PRODUCTO CARTESIANO ( R X S )
El producto cartesiano se puede ejecutar entre dos o mas relaciones:
SELECT * FROM R, S
SELECT * FROM R, S, T
EQUI JOIN:
SELECT R.C1, S.C2 FROM R, S
WHERE R.C1=S.C1;
NATURAL JOIN:
SELECT *
FROM R NATURAL JOIN S
WHERE Condicin;
31
SELECT *
FROM Empleado NATURAL JOIN Direccin
WHERE Barrio LIKE 'Tulcan';
32
MANIPULACIN DE DATOS
LEFT OUTER JOIN
SELECT *
FROM R LEFT OUTER JOIN S
ON (Condicin)
33
MANIPULACIN DE DATOS
RENOMBRAMIENTO:
X(RR): SELECT X.C1, X.C2 FROM R X;
SELECT X.C1, Y.Nombre FROM R X, S Y
WHERE X.C1=Y.C1;
X(A1, An)(RR)
SELECT X.C1 AS A, X.C2 AS Nombre FROM R X;
SELECT X.C1 AS N1, Y.C1 B FROM R X, S Y;
NOTA: Si el nombre esta entre se respeta el formato.
No est permitido usar un alias en una clusula WHERE, porque el valor de la columna
puede que no est determinado todava cuando la clusula WHERE es ejecutada.
34
MANIPULACIN DE DATOS
AGREGACIN:
SELECT COUNT(Salario)
FROM Emp_Salario
WHERE Salario <= 2500000;
SELECT COUNT( DISTINCT (Nombre) ) AS Nombres
FROM Empleado;
SELECT SUM(Precio) AS Suma
FROM Pedidos;
SELECT MAX(Salario), MIN(FechaNac), AVG(Salario)
FROM Empleado NATURAL JOIN Emp_Salario;
35
MANIPULACIN DE DATOS
AGRUPACIN:
SELECT C1, C2, SUM(C3)
FROM R
WHERE Condicin
GROUP BY Nombre
HAVING SUM(Ventas) > 1500;
SELECT *
FROM Tienda NATURAL JOIN Ventas
GROUP BY Nombre, Fecha;
SELECT Nombre, SUM(Ventas)
FROM Tienda NATURAL JOIN Ventas
GROUP BY Nombre
HAVING SUM(Ventas) > 1500;
Ventas
Id g
1
2
2
3
VENTAS
FECHA
$1500 05/06/1999
$250 07/06/1999
$300 08/06/1999
$700 08/06/1999
Tienda
Id NOMBRE
1 Sevilla
2
Cdiz
3 Huelva
36
MANIPULACIN DE DATOS
ORDENAMIENTO:
SELECT Campos
FROM R
[ WHERE Condicin ]
[ GROUP BY Columnas]
[ HAVING Condicin]
[ ORDER BY column [ASC | DESC] ]
37
MANIPULACIN DE DATOS
PROCEDIMIENTO ALMACENADO:
Modo:
- IN (indica que el parmetro es de entrada y no se podr modificar, es por defecto)
- OUT (indica que el parmetro es de salida con lo que el procedimiento devolver un
valor en l)
- IN OUT (indica que el parmetro es de entrada/salida, al llamar al procedimiento
tendr un valor que luego podr ser modificado por el procedimiento y devolver
este nuevo valor).
38
39