LENGUAJE SQL Integrantes: Ceci Vanessa Paredes Oswaldo Rodríguez Aury Bárbula, Febrero de 2007 SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Historia y Definición SQL: Es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos. funciona con un tipo específico de base de datos, llamado base de datos relacional . Funciones adicionales de SQL: •Definición de datos •Recuperación de datos •Manipulación de datos •Control de acceso •Compartición de información. •Integridad de datos SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Características de SQL y tendencias del mercado •Independencia de los proveedores • Portabilidad entre sistemas informáticas • Acuerdos con Microsoft (ODBC) •Fundamento relacional • Múltiples vistas de los datos. •Lenguaje completo de base de datos •Definición dinámica de base de datos • Arquitectura cliente/servidor Formas de trabajar con SQL •De modo interactivo SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones •Desde un programa SQL Estandares de SQL Historia y Definición SQL embebido SQL-89 o incrustado Tipos de datos En 1974 Donald Chamberlin saca la primera definición sobre SQL. Tipos de Identificadores SEQUEL – SEQUEL/2 – SQL. Tipos de dominios System R de IBM. Privilegios IBM saca DB2. Triggers En 1986 ANSI adopto a SQL. Definición de datos Manipulación de datos SQL-92 Consulta de datos Restricciones y Aparece en 1992. Validaciones Emplea el concepto de catalogo. SQL- 3 Planeado para su uso en el ano de 1996. Es la base de algunos sistemas de maneja de base de datos orientadas a objetos SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SQL embebido o incrustado ESTRUCTURA DE UN PROGRAMA CON SQL EMBEBIDO Programa … Declaración de variables … Declaración de variables huéspedes para acceso a la base de datos … Fin declaración de variables huéspedes para acceso a la base de datos … Fin declaración de variables Comienzo del código del programa … instrucciones propias del lenguaje … Conexión a la base de datos … instrucciones de SQL ... Desconexión de la base de datos … instrucciones propias del lenguaje … Fin del código de programa SQL Ejemplo Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Lenguaje de consulta SQL SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Tipos de datos Sinónimos Binary Varbinary Bit boolean,logical Byte integer(1) Counter autoincrement Currency money Datetime date,time,timestamp Single float(4),real Double float(8),float,numeric,number Short integer(2),smalling Long Longtext Longbinary Text Tipos de Identificadores SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Clave Principal (Primary Key) Ejemplo: CREATE TABLE Familiar ( Nombre varchar (25), Apellidos varchar (60), Telefono char (9), Direccion varchar (70), ID_Familia integer PRIMARY KEY ); Clave foránea (Foreing key): Ejemplo: CREATE TABLE estudiante ( Cod_Est number(8), Nom_Est varchar2(35) not null, Car_est number(3), Pat_est number(8), Otros_datos varchar(40), CONSTRAINT est_pk PRIMARY KEY (Cod_est), CONSTRAINT est_fk FOREIGN KEY (Car_Est) REFERENCES carrera(Cod_car) ON DELETE CASCADE, CONSTRAINT est_ch CHECK (Pat_est > 0) ); Tipos de dominios n char(n). n varchar(n) n int. Entero n smallint. n numeric(p,d). n real, double precision. n float(n). n n La construcción create domain de SQL92 permite crear dominios definidos por el usuario: create domain nombre-persona char(20) not null SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Privilegios Generador de privilegio Grant Sintaxis: GRANT privilegio [, ...] ON objecto [, ...] TO { PUBLIC | nombre_usuario | GROUP nombre_grupo } Ejemplo de privilegios de usuarios: booktown=# GRANT ALL ON customers, books, editions, publishers booktown-# TO manager; CHANGE booktown=# \z publishers Access permissions for database booktown Relation | Access permissions --------------+---------------------------publishers | {=,manager=arwR} (1 row) Privilegios Remover Privilegios Sintaxis: REVOKE privileg [, ...] ON object [, ...] FROM { PUBLIC | username | GROUP groupname } booktown=# \z books Access permissions for database booktown Relation | Access permissions ------------+-------------------------------books | {=,manager=arwR,david=w} (1 row) booktown=# REVOKE UPDATE, DELETE ON books booktown-# FROM david; CHANGE booktown=# \z books SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Triggers Se ejecutan o disparan automáticamente cuando se producen ciertos eventos sobre la tabla (inserción, borrado o modificación de fila) Se utilizan para: – Implementar restricciones complejas de seguridad o integridad. – Prevenir transacciones erróneas. – Gestionar réplicas remotas de la tabla, etc... Elementos de los triggers: •Nombre del trigger •Evento de disparo •Tipo del trigger •Restricción del trigger •Cuerpo del trigger Trigger de sustitución Se ejecutan no antes ni después, sino en lugar de (INSTEAD OF) la orden de manipulación que disparó el trigger. Ejemplo de trigger CREATE OR REPLACE TRIGGER audit_subida_salario AFTER UPDATE OF SALARIO ON EMPLE FOR EACH ROW BEGIN INSERT INTO auditaremple VALUES (‘SUBIDA SALARIO EMPLEADO ‘ ||:old.emp_no); END; SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Crear Base de Dato CREATE DATABASE nombre_base_dato Definición de datos Create table: Permite especificar una nueva relación dándole un nombre y especificando sus atributos y restricciones. CREATE TABLE PERSONA (ci integer(8),Primer_Nombre char(50), Apellido char(50), Direccion char(50), Ciudad char(50), Pais char(25), ); Vistas SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Una vista es una tabla derivada de otra tabla no necesariamente existe en forma física Especificación de una vista en SQL CREATE VIEW TRABAJA_EN1 As SELECT nombrep, apellido, horas FROMempleado,proyecto,trabaja_en Where nss=nsse and nump=numerop; Eliminar una vista en SQL DROP VIEW TRABAJA_EN1 CREATE DOMAIN SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Sintaxis CREATE DOMAIN name [ AS ] data_type [ DEFAULT expression ] [ constraint [ ... ] ] where constraint is: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK (expression) } Ejemplo: CREATE DOMAIN persons_name CHAR(30) Índices SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Sintaxis: Un índice único CREATE UNIQUE INDEX index_name ON table_name (column_name) Un índice simple CREATE INDEX index_name ON table_name (column_name) Ejemplo: CREATE INDEX PersonaIndex ON Persona (Apellido) Cláusulas Opcionales WITH PRIMARY: Clave principal WITH DISALLOW NULL: Sin valores nulos WITH IGNORE NULL : Se ignoran valores nulos Eliminar índice DROP INDEX ind1 ON clientes SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Aserciones Se utiliza para establecer restricciones en la base de datos. Por ejemplo para que el sistema compruebe las cardinalidades mínimas o las condiciones que deben cumplir un conjunto de atributos pertenecientes a varias tablas. No está disponible en todos los SGBD Sintaxis: CREATE ASSERTION <nombre> CHECK <condición> Alter Table SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones La definición de una tabla base se puede modificar mediante la orden Alter Tabla( alterar tabla).Las posibles acciones incluyen la adición o eliminación de una columna (atributo), la modificación de la definición de una columna y la adición o modificación de restricciones. ALTER TABLE COMPAÑÍA _ EMPLEADO ADD PUESTO varchar(12) Eliminar alguna orden ALTER TABLE tab1 DROP col3 Insertar en tabla Sintaxis: INSERT INTO table_name VALUES (value1, value2,....) Ejemplo: INSERT INTO Personas VALUES (‘Perez', ‘Jose', ‘20', ‘17986853'); Actualizar tabla SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Sintaxis: UPDATE table_name SET column_name = new_value WHERE column_name = some_value Ejemplo UPDATE Empleados SET Salario = Salario * 1.1 Eliminar tabla SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Sintaxis: DELETE FROM table_name WHERE column_name = some_value Ejemplo: DELETE FROM Person WHERE LastName = ‘Perez' Consulta de datos SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones SELECT <Atributos y lista de funciones> FROM <Lista de Tablas> WHERE <Condición> GROUP BY <atributo(s) de agrupacion> HAVING <Condicion de agrupacion> ORDER BY <Lista de atributos> Funciones EXISTS y UNIQUE Ejemplo: Recupere el nombre de cada empleado que tenga un familiar dependiente con el mismo nombre de pila y sexo que el empleado SELECT FROM WHERE E.NOMBRE, E.APELLIDO EMPLEADO AS E EXISTS (SELECT * FROM DEPENDIENTE WHERE E.NSS = NSSE AND SEXO = E.SEXO AND E.NOMBRE = NOMBRE_DEPENDIENTE) SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Privilegios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Consulta de datos Conjuntos explicitos y NULLS Recupere el nombre de todos los empleados de seguridad que no tienen superrvisores SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE NSS_SUPERV IS NULL Renombrar atributos y tablas combinadas SELECT E.APELLIDO AS NOMBRE_EMPLEADO, S.APELLIDO AS NOMBRE_SUPERVISOR FROM EMPLEADO AS E, EMPLEADO AS S WHERE E.NSS_SUPERV = S.NSS; Restricciones y Validaciones SQL Historia y Definición SQL embebido o incrustado Tipos de datos Tipos de Identificadores Tipos de dominios Triggers Definición de datos Manipulación de datos Consulta de datos Restricciones y Validaciones Restriccion: CREATE TABLE Enterrador (Nombre varchar (25), Apellidos varchar (60), Direccion varchar (70), Telefono char (9), Telef_Movil char(9), Antiguedad integer, Salario numeric(10,2) CHECK ((Salario < 2000) and (Salario >1400)), Dni varchar(9) PRIMARY KEY ); Validación: CREATE TABLE Enterrador (Nombre varchar (25), Apellidos varchar (60), Direccion varchar (70), Telefono char (9), Telef_Movil char(9), Antiguedad integer, Salario numeric(10,2) CHECK (Salario >0), Dni varchar(9) PRIMARY KEY ); Referencias Bibliográficas http://www.htmlpoint.com/sql/sql_07.htm http://www.w3schools.com/sql/sql_update.asp http://www.ianywhere.com/developer/product_manuals /sqlanywhere/0902/en/html/dbugen9/00000113.htm http://www.devloker.com Navathe Fundamentos de Sistemas de Base de Datos Tercera Edición