Beruflich Dokumente
Kultur Dokumente
INTRODUCCIN
SQL: Structured Query Language
Caractersticas: Estructuras de datos simples Operadores potentes Periodos de aprendizaje inicial cortos Mejora de la independencia de datos Modo de uso dual (interactivo o inmerso) Optimizacin
DDL Proporciona rdenes para definir esquemas de relacin, eliminar relaciones, crear ndices y modificar esquemas de relacin. DCL Incluye rdenes que permiten especificar controles de seguridad a los datos almacenados como definicin de vistas, especificacin de privilegios de acceso, comprobacin de condiciones de integridad y control de concurrencia. DML Interactivo: lenguaje de consulta basado en el lgebra relacional y el calculo relacional de tuplas. Tambin incluye ordenes para insertar, suprimir y modificar tuplas de la base de datos Inmerso: lenguaje diseado para utilizar dentro de otros lenguajes. PL Lenguaje para la creacin de procedimientos almacenados.
Prof. Luis S. Ramrez A. Implementacin de Base de Dato
DDL
Sentencia DDL Alter procedure Alter table Analyze Create table ( index) Drop table ( index) Grant Truncate Revoke Objetivo Recompilar un procedimiento almacenado Aadir o redifinir una columna, modificar la asignacin de almacenamiento Recoger estadsticas de rendimiento sobre los objetos de la BD Crear una tabla ( indice) Eliminar una tabla ( indice) Conceder privilegios a un usuario Eliminar todas las filas de una tabla Retirar los permisos de un usuario
DDL
Creacin de un esquema CREATE SCHEMA <nombre_esquema> AUTHORIZACION <nombre> Definicin de una relacin (tabla): CREATE TABLE R (A1 D1,A2 D2,,An Dn) Donde R es el nombre de la relacin, Ai el nombre de un atributo y Di tipo de datos de los valores en el dominio del atributo Ai
Ejemplos
Departamento # Id_dpto * Nombre o N empleados o Fecha_creac
1 n
CREATE TABLE DEPARTAMENTO ( Id_dpto NUMBER NOT NULL, Nombre VARCHAR(50) NOT NULL, N_empleados NUMBER NULL, fecha_creac DATE NULL, PRIMARY KEY(id_dpto) );
Ejemplos
CREATE TABLE EMPLEADOS ( Id_empleado NUMBER NOT NULL, Nombre VARCHAR(15) NOT NULL, Ap1 VARCHAR(25) NOT NULL, Ap2 VARCHAR(25) NULL, Direccion VARCHAR(50) NOT NULL, Fecha_nac DATE NOT NULL, Salario NUMBER NOT NULL, Id_dpto NUMBER NOT NULL, PRIMARY KEY(id_empleado) FOREIGN KEY (Id_dpto) REFERENCES DEPARTAMENTO (Id_dpto) );
DDL
Modificar:
Aadir nuevos atributos a una relacin ALTER TABLE <nombre_tabla> ADD <atributo>tipo Aadir una nueva FK a una relacin ALTER TABLE <nombre tabla> ADD CONSTRAINT <nombre_FK> REFERENCES <nombre_tabla>(nombre_FK) Aadir una una PK a una relacin ALTER TABLE R ADD CONSTRAINT PRIMARY KEY (nombre) tipo
Prof. Luis S. Ramrez A. Implementacin de Base de Dato
DDL
Eliminacin de una relacin:
DROP TABLE <nombre_tabla> Crear/Borrar ndices sobre las tablas: CREATE INDEX <nombre_incide> ON <nombre_tabla> <nombre_atributos> DROP INDEX <nombre_indice> Es recomendable poner un indice para cada FK
ADD aade columna, DROP la elimina ALTER COLUMN modifica su tipo de datos o tamao
Aadir columna idioma: ALTER TABLE libro ADD COLUMN idioma text (15) Aadir columna lugar: ALTER TABLE libro ADD COLUMN lugar text (15) Modificar el tamao de la columna titulo: ALTER TABLE libro ALTER COLUMN titulo text (150) Eliminar la columna lugar: ALTER TABLE libro DROP COLUMN lugar
DDL
VISTAS
Las vistas son tablas virtuales. CREATE VIEW dpto_diez AS SELECT ci, nombre, direccion FROM empleados WHERE num_dpt=1;
DML
Permite acceder a la informacin contenida en la base de datos para su consulta y actualizacin, a travs de sus cuatro verbos de manipulacin: SELECT INSERT UPDATE DELETE
DML
Sentencia DML
Insert Delete Update Select Commit Rollback
Objetivo
Aadir filas de datos a una tabla Eliminar filas de datos de una tabla Modificar los datos de una tabla Recuperar los datos de una tabla Confirmar como permanentes las modificaciones realizadas Deshacer todas las modificaciones realizadas desde la ltima confirmacin (ltimo commit)
DML
Insertar datos:
INSERT INTO <nombre_tabla> VALUES( , , ); Ejemplo: INSERT INTO Departamento VALUES (50, Anlisis, 30, NULL) INSERT INTO Departamento (Id_dpto,Nombre, n_empleados) VALUES (50, Anlisis, 30)
El resto de los valores de los campos que quedan los inserta con valores nulos.
DML
Actualizar datos:
UPDATE <nombre_tabla>SET <atributos> WHERE <condicion>; Ejemplo: UPDATE Departamentos SET Nombre=Anlisis WHERE Id_dpto=1;
Me pone en donde Id_dpto=1, en la casilla nombre, Anlisis.
Borrar datos:
DELETE FROM <nombre_tabla> WHERE <condicion>; Ejemplo: DELETE FROM Departamentos WHERE Fecha_creac < 1/1/2000
DML
La estructura bsica de una consulta SQL
Usa una mezcla de estructuras del lgebra relacional y del clculo relacional. Consta de tres clusulas: SELECT FROM WHERE SELECT <nombre_campos> FROM <nombre_tablas> WHERE <condiciones>
Implementacin de Base de Dato
DML
SELECT: se utiliza para listar los atributos que se desean en el resultado de una consulta. La lista de atributos puede sustituirse por * para seleccionar todos los atributos de todas las relaciones que aparezcan en la clusula from. FROM: lista las relaciones que se van a examinar en la evaluacin de la expresin. WHERE: consta de un predicado que incluye atributos de las relaciones que aparecen en la clusula from.
DML
SELECT <nombre_campos> FROM <nombre_tablas> WHERE <condiciones>
El resultado de la ejecucin de una sentencia SELECT es siempre otra tabla. Las columnas de la tabla resultante sern las que figuren enumeradas tras la clusula SELECT, y en el mismo orden en el que figuran tras ella.
Ejemplos
SELECT talla, color FROM articulos; SQL no elimina tuplas duplicadas a menos que se indique con la clusula opcional DISTINCT SELECT DISTINCT codigo_p, cantidad FROM suministros; Seleccin: SELECT * FROM articulos WHERE color=ROSA SELECT * FROM articulos WHERE color=ROSA AND talla>38;
Ejemplos
Producto cartesiano: Basta con incluir varias relaciones en la clusula FROM SELECT * FROM proveedores, suministros; Producto natural: Restriccin producto cartesiano mediante una condicin SELECT * FROM proveedores, suministros WHERE proveedores.codigo_p=suministros.codigo_p SELECT * FROM proveedores P, suministros S WHERE P.codigo_p=S.codigo_p
Funciones de agregacin:
Permite obtener valores agregados, es decir, un solo valor que resume la informacin de varias filas.
Ejemplos
Obtener la suma de los importes de las ordenes de compra:
SELECT SUM(importe) FROM orden; Numero de productos que se fabrican SELECT COUNT(DISTINCT cod_prod) FROM productos; Empleados que trabajan en el departamento 10 SELECT COUNT(*) FROM empleados WHERE num_dpto=10;
Ejemplos
Numero de empleados de cada departamento SELECT num_dept, COUNT(*) FROM empleados GROUP BY num_dpto;
Clausula HAVING
Clusula HAVING: selecciona alguno de los grupos definidos por GROUP BY, segn una condicin. Lista de los departamentos en que trabaja mas de 50 empleados SELECT num_dpto, COUNT(*) FROM empleados GROUP BY num_dpto HAVING COUNT(*)>50;
Clausula HAVING
Clusula ORDER BY: utilizada para ordenar los registros seleccionados SELECT nombre, apellidos FROM alumnos ORDER BY fecha_nacimiento DESC
OPERADORES LGICOS
AND Evalua dos condiciones y devuelve un valor de verdad solo si ambas son ciertas. Evalua dos condiciones y devuelve un valor de si alguna de las dos es cierta. Devuelve el valor contrario de la expresin.
OR
NOT
OPERADORES DE COMPARACIN
< ( o<=) > (o >=) <> o != = BETWEEN LIKE IN Menor que (o igual) Mayor que (o igual) Distinto Igual Entre. Utilizado para especificar un intervalo de valores. Como. Utilizado para la comparacin de un modelo En. Utilizado para especificar registros de una base de datos
EJEMPLOS SELECT
Selecciona todos los campos y todos los registros de la tabla personal SELECT * FROM PERSONAL Selecciona los campos cod, nombre y fecha y todos los registros SELECT cod,nombre,fecha FROM PERSONAL Selecciona nombre y DNI de las empleadas de la empresa SELECT nombre,DNI FROM PERSONAL WHERE SEXO=F Selecciona los empleados con el campo salario de la tabla PERSONAL vaco SELECT nombre,DNI FROM PERSONAL WHERE SALARIO IS NULL Selecciona todos los empleados cuyo apellido comience por T SELECT * FROM PERSONAL WHERE NOMBRE LIKE T*
EJEMPLOS SELECT
Selecciona los empleados cuyo nombre contenga una e o que sean mujeres SELECT * FROM PERSONAL WHERE NOMBRE LIKE M* OR SEXO=F Selecciona de la tabla salario los sueldos mayor que 200000 y distintos de 450000 que no pertenezcan al mes de Agosto SELECT sueldo FROM SALARIO WHERE SUELDO > 200000 AND SUELDO<>450000 Selecciona de la tabla salario los sueldos entre 100000 y 150000 que no pertenezcan al mes de Agosto SELECT sueldo FROM SALARIO WHERE SUELDO BETWEEN 100000 AND 150000 AND MES NOT LIKE AGOSTO Selecciona los empleados con el campo salario de la tabla PERSONAL no este vaco SELECT nombre,DNI FROM PERSONAL WHERE SALARIO IS NOT NULL
Prof. Luis S. Ramrez A. Implementacin de Base de Dato
EJEMPLOS SELECT
Ordena a los empleados por nombre ascendente SELECT * FROM PERSONAL ORDER BY NOMBRE ASC Selecciona los empleados cuyo nombre contenga la palabra garca y que sean mujeres o cuyo DNI sea 55789642 ordena por numero de DNI descendente SELECT * FROM PERSONAL WHERE ((NOMBRE LIKE *GARCA*' AND SEX='F') OR DNI=55789642) ORDER BY DNI DESC Mostrar en una sola fila y sin duplicados los meses distintos que aparecen en la tabla salarios SELECT DISTINCT mes FROM SALARIO
SELECT FUNCIONES Y AGRUPAMIENTOS SELECT campo1 AVG(campo2) FROM tabla WHERE condicin GROUP BY campo ORDER BY campo HAVING condicin
Prof. Luis S. Ramrez A.
Funcin de agrupamiento, para calcular la media (AVG), suma (SUM), contar (COUNT), valor mnimo (MIN), mximo (MAX)... Opcional. Condicin antes de agrupar Agrupar por un campo o campos, cuando se ha puesto una funcin de agrupamiento en el SELECT todos los campos sin funcin deben estar agrupados. Si varios se separan por comas Opcional. Condicin tras agrupar
Implementacin de Base de Dato
EJEMPLOS
Contar el nmero de salarios que se pagaron en octubre del 2004 SELECT AO,MES, Count(MES) AS Cuenta FROM SALARIO WHERE AO=2004 AND MES=octubre GROUP BY AO, MES Que sueldo cobraron los empleados que ganaron ms de 800000 en el 2004 SELECT Sum(SUELDO) AS Suma, AO, CA_PERSONAL FROM SALARIO WHERE AO=2004 GROUP BY AO, CA_PERSONAL HAVING SUM(SUELDO)>=800000