Lenguaje SQL (Structured Query Language)

Slides:



Advertisements
Presentaciones similares
Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación.
Advertisements

SQL Sigla del nombre “Structured Query Language”.
integridad referencial
VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
Base de Datos Orientada a Objetos (OODBMS)
Fernando Velasco
Teórico: Structured Query Language
SQL G r u p o
EL LENGUAJE ESTÁNDAR SQL
Unidad 3 Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Lenguaje Estructurado de Consultas (Structured Query Language – SQL)
4.3. Privilegios de usuarios
MySQL M.C. Pedro Bello López.
SQL.
Bases de Datos Relacionales
Subconsultas Avanzadas
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
CAPITULO 10 Manejando Restricciones
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
IBD CLASE 15. SQL Lenguaje de Consultas Estruturado (SQL) ◦Lenguaje de trabajo estándard para modelo relacional ◦Componentes ◦DDL: Data Definition Language.
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
CONSULTAS SENCILLAS A LA BASE DE DATOS
Vista Externa de Una Base de Datos John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
SQL: Lenguaje de Interrogación Estructurado. Vistas Declaración de vista CREATE VIEW ( ) AS SELECT... Semántica Tabla virtual cuyo contenido es el resultado.
Consultas SQL (Base de Datos)
LENGUAJE SQL.
Bases de Datos Sql.
Structured Query Language (Lenguaje Estructurado de Consultas)
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 14 Uso de Operadores de Conjuntos.
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Expresiones algebraicas equivalentes
LENGUAJE ESTRUCTURADO DE CONSULTAS
Instrucciones para crear tablas My SQL. A nivel teórico, existen dos lenguajes para el manejo de bases de datos: DDL (Data Definition Language) Lenguaje.
SQL Sigla del nombre “Structured Query Language”.
Vista Externa de Una Base de Datos John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
Consultas SQL. SQL SQL es un lenguaje de consulta estructurado (Structured Query Languague). Se utiliza para: Eliminar Modificar Consultar La base de.
E.U. Informática U.L.P.G.C. E.U. Informática U.L.P.G.C. Introducción a - 1 Introducción a Oracle.
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
(Lenguaje de consulta estructurado)
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Unidad 6. Tema 4. Lenguaje de consultas SQL
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Diseño de Bases de Datos Tema 4: Integridad.
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Diseño de Bases de Datos Tema 4: Integridad.
SQL: DDL.
Copyright  Oracle Corporation, All rights reserved. Agenda.
Copyright  Oracle Corporation, All rights reserved. 8 Manipulación de Datos.
Copyright  Oracle Corporation, All rights reserved. 1 Escritura de sentencias SQL SELECT básicas.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
Copyright  Oracle Corporation, All rights reserved. 2 Restricción y ordenación de datos.
UNIDAD 8 Lenguaje SQL (Structured Query Language) 1.
Copyright  Oracle Corporation, All rights reserved. 11 Creación de Vistas.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
DML Transact SQL Sesión VI Trabajando con subconsultas.
Copyright  Oracle Corporation, All rights reserved. 9 Creación y gestión de tablas.
Copyright  Oracle Corporation, All rights reserved. 6 Subconsultas.
Copyright  Oracle Corporation, All rights reserved. 10 Constraints (Restricciones)
Transcripción de la presentación:

Lenguaje SQL (Structured Query Language) Unidad 8 Lenguaje SQL (Structured Query Language)

Introducción Resultado del esfuerzo conjunto de dos grupos: Características del lenguaje Resultado del esfuerzo conjunto de dos grupos: ANSI – American National Standars Institute ISO – International Standards Organitation SQL constituye un factor fundamental en el éxito de las bases de datos relacionales Es un lenguaje declarativo (no procedural), es decir, se indica “que” se busca pero no el “como”

SQL Evolución SQL 1 SQL 2 SQL 3 (extiende SQL 2 con conceptos de OO)

SQL Lenguaje de Definición de Datos (DDL) Tipos de Operaciones Lenguaje de Definición de Datos (DDL) Lenguaje de Manipulación de Datos (DML): consultas y actualizaciones Definición de vistas Definición de restricciones de integridad Especificación de seguridad y autorización Especificación de control de transacciones Reglas para inclusión en lenguajes (C, PASCAL, etc.)

SQL: DDL y DML DDL DML Incluye sentencias que permiten definir los objetos de la Base de Datos Las sentencias DDL generan cambios en el diccionario de datos, el cual contiene metadatos Es un lenguaje que permite a los usuarios acceder o manipular los datos de la base de datos

SQL DDL DML Create Alter Drop Select Insert Update Delete

1- DDL CREATE DOMAIN nombre_dominio AS tipo_dato [DEFAULT valor];

1- DDL CREATE TABLE CREATE TABLE nombre_tabla (nombre_columna tipo_dato/dominio [NOT NULL] [DEFAULT valor], [nombre_columna tipo_dato/dominio [NOT NULL] [DEFAULT valor], ...], [ PRIMARY KEY (nombre_columna [, nombre_columna,...]), ] [ FOREIGN KEY (nombre_columna [, nombre_columna,...]), REFERENCES nombre_tabla (nombre_columna [, nombre_columna,...]) ];

1- DDL DROP TABLE DROP TABLE nombre_tabla [RESTRICT/CASCADE];

1- DDL ALTER TABLE nombre_tabla ADD nombre_columna tipo_dato/dominio [DEFAULT valor]; ALTER TABLE nombre_tabla DROP nombre_columna;

2 - DML SQL Algebra Muticonjunto o bolsa Conjunto

2 - DML SELECT lista_atributos FROM nombre_tabla [WHERE condición]; (Forma más simple) SELECT lista_atributos FROM nombre_tabla [WHERE condición];

2 - DML SELECT lista_atributos FROM [nombre_tabla [, nombre_tabla,...]] / [join] [WHERE condición] [UNION | UNION ALL | INTERSECT | MINUS Subconsulta] [GROUP BY lista_atributos [HAVING condición]] [ORDER BY lista_atributos];

2 - DML [join] :: = nom_tabla1 NATURAL JOIN nom_tabla2 / nom_tabla1 JOIN nom_tabla2 ON condición / nom_tabla1 INNER JOIN nom_tabla2 ON condición / nom_tabla1 LEFT [OUTER] JOIN nom_tabla2 ON condición / nom_tabla1 RIGHT [OUTER] JOIN nom_tabla2 ON condición

2 - DML: Tablas Ejemplo Tabla DEPT 4 filas Tabla DEPT DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 4 filas

2 - DML: Tablas Ejemplo Tabla EMP 14 filas Tabla DEPT EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER   CLERK SALESMAN MANAGER ANALYST PRESIDENT 17/12/80 20/02/81 22/02/81 02/04/81 28/09/81 01/05/81 09/06/81 19/04/87 17/11/81 08/09/81 23/05/87 03/12/81 23/01/82 800 1600 1250 2975 2850 2450 3000 5000 1500 1100 950 1300 1400 20 30 10 14 filas

2 - DML: Proyección π epno, ename EMP Algebra SQL π epno, ename EMP SELECT epno, ename FROM EMP; (proyección1.sql)

2 - DML: Proyección (atributo) Algebra SQL π job EMP SELECT job FROM EMP; SELECT distinct job (proyección2 y 3.sql)

2 - DML: Proyección (atributo) Algebra SQL EMP SELECT * FROM EMP; Proyecta todos los atributos de la tabla (proyección4.sql)

2 - DML: Proyección (atributo) Algebra SQL ρnombre (π ename EMP ) SELECT ename AS nombre FROM EMP; (proyección5.sql)

2- DML Los valores que se pueden proyectar son: Atributos Constantes Proyección Los valores que se pueden proyectar son: Atributos Constantes Expresiones Funciones

2 - DML: Proyección SELECT ename as nombre, sal/2 as salario_quincena Expresiones y Constantes SELECT ename as nombre, sal/2 as salario_quincena FROM EMP; (proyección5.sql) SELECT ename as nombre, ‘ cobra quincenalmente ’, sal/2 as salario_quincena, ‘pesos’

2 - DML: Proyección SELECT count(*) FROM EMP; Funciones (proyección5.sql)

2 - DML: Selección π empno,ename(σ deptno=20 (EMP)) Algebra SQL π empno,ename(σ deptno=20 (EMP)) SELECT empno, ename FROM EMP WHERE DEPTNO=20; (seleccion1.sql)

2 - DML: Selección SELECT empno, ename FROM EMP Condiciones compuestas SELECT empno, ename FROM EMP WHERE DEPTNO=20 and SAL<1000; La condición puede utilizar cualquiera de los operadores relacionales y operadores lógicos para generar expresiones más complejas (para cualquier tipo de dato)

2 - DML: Selección SELECT empno, ename FROM EMP WHERE DEPTNO is null; Condiciones con nulos SELECT empno, ename FROM EMP WHERE DEPTNO is null; La condición puede utilizar el operador is que permite evaluar si un atributo tiene un valor nulo o no.

2 - DML: Selección SELECT * FROM scott.emp WHERE ename LIKE 'A%'; Condiciones con operador el “like “ SELECT * FROM scott.emp WHERE ename LIKE 'A%'; (selección2_1.sql) El operador like compara parte de una cadena de caracteres, donde: % sustituye a una cantidad arbitraria de caracteres _ sustituye a un solo carácter

2- DML Operadores de comparación de conjuntos Operadores de comparación para consultas simples (sin subqueries) Operadores de comparación de conjuntos <columna> [NOT] IN (<lista de valores>) Select * from EMP where DEPTNO in (20,30); Operadores de valores nulos <columna> IS [NOT] NULL (ya vimos un ejemplo) Operadores de condiciones de dominios <columna> [NOT] BETWEEN <valor inferior> AND <valor superior>

2 - DML Un subquery valuado en valor Operadores de comparación para consultas más complejas Un subquery valuado en valor <expresión> [NOT] IN (<subquery>) En este caso <expresión> es comparada con el conjunto que devuelve el subquery

2 - DML (continuación) Operadores de comparación para consultas más complejas <expresión> <operador de comparación> [ANY/ALL] (<subquery>) donde <expresión> puede ser una columna o un valor computado En este caso <expresión> es comparada con cada valor seleccionado por el subquery Any: Evalúa verdadero si existe al menos una tupla seleccionada en el subquery que satisfaga la condición. Si el subquery da vacío, la condición es falsa. All: Evalúa verdadero si todas las tuplas seleccionadas por el subquery satisfacen la comparación. Si el subquery es vacío, la condición es verdadera.

2 - DML: Ejemplos Operadores de comparación para consultas más complejas Mostrar todos los empleados que trabajan en el depto 10 y que ganan al menos tanto como algún empleado del departamento 30 SELECT * FROM scott.emp WHERE deptno=10 and sal >= any (SELECT sal WHERE deptno=30);

2 - DML: Ejemplos Operadores de comparación para consultas más complejas Mostrar todos los empleados que no trabajan en el depto 30 y que ganan más que todos los empleados que trabajan en el departamento 30 SELECT * FROM scott.emp WHERE deptno <> 30 and sal >= all (SELECT sal WHERE deptno=30);

2 - DML In = any Not in <> all Equivalencias de operadores para consultas más complejas (con subqueries) In = any Not in <> all Equivale Equivale

2 - DML Un subquery para test de existencia Operadores de comparación para consultas más complejas (con subqueries) Un subquery para test de existencia <NOT> EXISTS (<subquery>) En este caso: Exists: Evalúa verdadero si el subquery devuelve tuplas. Not Exists: Evalúa verdadero si el subquery no genera tuplas, es decir, devuelve una tabla vacía.

2 - DML: Ejemplos Operadores de comparación para consultas más complejas (con subqueries) Mostrar todos los datos de los departamentos que no tienen empleados SELECT * FROM scott.dept WHERE not exists (SELECT * FROM scott.emp WHERE emp.deptno = dept.deptno);

2 - DML SELECT .... .... [ORDER BY lista_atributos ASC/DESC]; Ordenamiento SELECT .... .... [ORDER BY lista_atributos ASC/DESC]; Ordena la salida (tabla resultante) según el/los atributos especificados

2 - DML: Producto Cartesiano Algebra SQL EMP x DEPT SELECT * FROM EMP , DEPT; (producto.sql)

2 - DML: Natural Join π ename, job, dname (EMP * DEPT) Algebra SQL π ename, job, dname (EMP * DEPT) SELECT ename, job, dname FROM EMP NATURAL JOIN DEPT; (join2.sql) (Los atributos sobre los cuales se hace el JOIN deben tener el mismo nombre en ambas tablas)

2 - DML: Natural Join Natural Join construido con producto cartesiano Algebra SELECT epno,ename, job, mgr, hiredate, sal, comm, deptno, dname, loc FROM EMP, DEPT WHERE EMP.deptno= DEPT.deptno; (join1.sql)

2 - DML: Join πename, job, dname (EMP EMP.deptno = DEPT.deptno DEPT) Algebra SQL πename, job, dname (EMP EMP.deptno = DEPT.deptno DEPT) SELECT ename, job, dname FROM EMP JOIN DEPT ON EMP.deptno = DEPT.deptno; (join3.sql) SELECT ename, job, dname FROM EMP INNER JOIN DEPT ON EMP.deptno = EPT.deptno; (join3_1.sql)

2 - DML: Join SELECT ename, job, dname Join con restricción extra SELECT ename, job, dname FROM EMP JOIN DEPT ON EMP.deptno = DEPT.deptno WHERE EMP.deptno = 10; (join3_1.sql)

2 - DML: Outer Join LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN

2 - DML: Outer Join (join5.sql) Left Outer Join SELECT deptno,dname, ename, job FROM DEPT NATURAL JOIN EMP; El departamento 40 no sale informado porque no existe ningún empleado asignado a él (join5.sql) SELECT DEPT.deptno,dname, ename, job FROM DEPT LEFT OUTER JOIN EMP ON DEPT.DEPTNO=EMP.DEPTNO; El departamento 40 sale informado a pesar de que no existen empleados asignados a él (join6.sql)

2 - DML: Outer Join (join5.sql) SELECT deptno,dname, ename, job Right Outer Join SELECT deptno,dname, ename, job FROM DEPT NATURAL JOIN EMP; El departamento 40 no sale informado porque no existe ningún empleado asignado a él (join5.sql) SELECT ename, job, dept.deptno,dname FROM EMP RIGHT OUTER JOIN DEPT ON DEPT.DEPTNO=EMP.DEPTNO; El departamento 40 sale informado a pesar de que no existen empleados asignados a él (join7.sql)

2 - DML: Outer Join Full Outer Join SELECT lista_atributos FROM nombre_tabla FULL OUTER JOIN nombre_tabla ON condición;

2 - DML: Union π ename (σ deptno=20 or deptno=30 EMP) Algebra SQL π ename (σ deptno=20 or deptno=30 EMP) π ename (σ deptno=20 EMP) U π ename (σ deptno=30 EMP) SELECT ename FROM EMP WHERE deptno=20 or deptno=30 ; UNION SELECT ename FROM EMP WHERE deptno=30; (union1.sql)

2 - DML: Union Union Union All En este caso, si existen tuplas repetidas se eliminan En este caso, si existen tuplas repetidas no se eliminan

2 - DML: Intersección Intersección Departamentos que tienen administrativos y analistas entre sus empleados (CLERK y ANALYST) π deptno(σ job=`CLERK´ EMP) ∩ π deptno(σ job=`ANALYST´ EMP)

2 - DML: Intersección Intersección Select deptno from emp where job='CLERK' INTERSECT where job=‘ANALYST'; (interseccion1.sql) Ver (depts_jobs.sql)

2 - DML: Intersección Intersección SELECT dept.deptno, dname from dept where deptno in (Select deptno from emp where job='CLERK') and deptno in where job=‘ANALYST'); (interseccion2.sql)

π deptno Dept – π deptno EMP 2 - DML: Minus Algebra SQL π deptno Dept – π deptno EMP select deptno from dept minus select deptno from emp; where deptno not in (select deptno from emp); Departamentos que no tienen empleados (minus1.sql) (minus2.sql)

2 - DML: Exists vs. In Exists vs. In Las subconsultas vinculadas con un In pueden seleccionar más de un atributo, obviamente compatible con los atributos expresados en el where. Todas las consultas resueltas con IN pueden ser resueltas con Exists. Idem para los negados (Not In – Not Exists)

2 - DML: Division πx,y A DIVIDE BY πy B Select A.x from A Algebra SQL πx,y A DIVIDE BY πy B Select A.x from A where not exists (select * from B from A AX where AX.x=A.x and AX.y=B.y));

2 - DML: Alias Alias SELECT lista_atributos FROM nombre_tabla nombre_alias .....;

2 - DML: Funciones de Resumen AVG COUNT MAX MIN

2 - DML: Funciones Resumen Funciones de Resumen SELECT Sum(nombre_atributo*) FROM nombre_tabla; SELECT Avg(nombre_atributo*) SELECT Count(*) * El atributo debe ser numérico

(agrup cantidad emp x depto.sql) 2 - DML: Grupos Group y Having SELECT .... .... [GROUP BY lista_atributos [HAVING condición]]; Agrupa las tuplas que tienen igual valor del/ de los atributos especificados en lista_atributos. Muestra una tupla representativa del grupo (resume el grupo). Este valor debe ser único al grupo y además si es un atributo, debe estar especificado en la cláusula group by. (agrup cantidad emp x depto.sql) (agrup con join.sql)

2 - DML: Grupos SELECT .... [GROUP BY lista_atributos Group y Having SELECT .... [GROUP BY lista_atributos [HAVING condición]]; Agrupa las tuplas que tienen igual valor del/ de los atributos especificados en lista_atributos. Muestra una tupla representativa del grupo (resume el grupo). Este valor debe ser único al grupo y además si es un atributo, debe estar especificado en la cláusula group by. El HAVING permite seleccionar los grupos que cumplen la condición indicada (agrup cantidad emp x depto.sql) (agrup con join.sql) (agrup cantidad emp x depto con condicion.sql)

2 – DML Inserción de tuplas Modificación de tuplas Actualización Inserción de tuplas Modificación de tuplas Eliminación de tuplas

2 – DML: Inserción Insert con values INSERT INTO <tabla> [<colum_i, …, colum_j>] VALUES (<valor_i, …, valor_j>); Para cada columna debe ser especificado un valor. Si no se especifica una columna de la tabla, se almacenará en ella un valor nulo. Si no se especifican las columnas se asumirá el orden especificado en el create.

3 – DML: Inserción Insert con subquery INSERT INTO <tabla> [<colum_i, …, colum_j>] <query>; Ejemplo: insert into hr.jobs select * from otrohr.jobs;

3 – DML: Modificación UPDATE <tabla> SET<colum_i>=<expr_i>, …, <expr_j> = <expr_j> [WHERE <condición>]; Donde: <expr> puede ser una constante, una expresión aritmética o un query Ejemplo: UPDATE EMP SET sal = (select min(sal) from EMP where job=‘MANAGER’) WHERE job=‘SALESMAN’ and deptno=20;

3 – DML: Modificación UPDATE <tabla> SET (<columna i, …, columna j>) = <query> [WHERE <condición>];

3 – DML: Eliminación DELETE DELETE FROM <tabla> [WHERE <condición>];

3 - Vistas Definición de Vistas Una vista es definida como una consulta sobre una o más relaciones, guardadas con un nombre en el diccionario de datos ¿Por qué usar vistas? Ocultar información a algunos usuarios Hacer más simples algunas consultas Modularidad en el acceso a la base de datos

3 - Vistas Creación de Vistas CREATE VIEW <nombre de la vista> [<columna(s)>] AS <sentencia select> [ WITH CHECK OPTION ]; Si [<columna(s)>] no está especificado, las columnas toman el mismo nombre de los correspondientes a la trabla generada en la sentencia select. Una vista es evaluada cada vez que es accedida. La definción de una vista puede usar otra vista. La cláusula WITH CHECK OPTION provoca que si se intenta insertar en la vista una tupla que no satisface la condición de la vista, esa inserción es rechazada. Los Updates son similarmente rechazados si el nuevo valor no satisface la condición.

3 - Vistas Uso de Vistas Una vista puede ser usada en una sentencia SELECT en forma idéntica que una tabla. No toda vista puede ser actualizada automáticamente (insert, update, delete). La dificultad de la actualización de vistas radica en que éstas deben ser traducidas a actualizaciones sobre las tablas bases sobre las que está definida la vista (create trigger … instead of … )

3 - Vistas La cláusula from debe usar una sola tabla Condiciones para que una vista pueda actualizarse automática- mente La cláusula from debe usar una sola tabla La clausula select contiene sólo nombres de atributos, es decir, no tiene: expresiones funciones de agregación especificación de distinct No debe incluir la cláusula group by en su definción No se ha incluido en la clausula select algún atributo que en la tabla base tiene la restricción de not null

4 – Restricciones de Integridad Una restricción puede definirse sintácticamente de dos formas: Como parte de la definición de una columna El nombre de la restricción es asignada automáticamente por el motor de base de datos. Como parte de la definición de la tabla. El nombre de la restricción puede ser especificado por el usuario. Tipos (En cuanto a la forma de definirse)

4 – Restricciones de Integridad De tabla / columna Unicidad (unique). Clave primaria (primary key). Integridad referencial (foreign key - references). Control (check). De dominio Se aplican a cada columna (de cualquier tabla) que está basada en ese dominio, actuando como una restricción de tabla. Pueden incluir una condición referida a los valores del dominio. Tipos (En cuanto al objeto sobre el que se define)

4 – Restricciones de Integridad Aserción Una restricción de control (check constraint) definida independientemente de cualquier tabla. Incluyen una condición que puede referir al contenido de filas individuales de una o varias tablas, al contenido de tablas enteras o a un estado determinado por las relaciones entre varias tablas. Tipos

4 – Restricciones de Integridad Todas las restricciones son comprobadas con los mismos mecanismos y procedimientos: Cada restricción tiene una condición que se evalúa a cierto o a falso. Cada restricción tiene un modo (constraint mode): DEFERRED => diferido Las restricciones con el modo DEFERRED son comprobadas al final de la ejecución de un grupo lógico de sentencias SQL (transacción). IMMEDIATE => inmediato Las restricciones con el modo IMMEDIATE son comprobadas después de la ejecución de cada sentencia SQL. Comprobación

4 – Restricciones de Integridad Cada restricción tiene un modo por defecto que es el utilizado al iniciar una nueva sesión SQL o una nueva transacción. <modo de restricción> ::= { INITIALLY DEFERRED | INITIALLY IMMEDIATE } [ [ NOT ] DEFERRABLE ] Comprobación

4 – Restricciones de Integridad Unicidad (unique) Dos filas de la tabla no pueden tener el mismo valor no nulo en las columnas indicadas. Puede aplicarse al conjunto completo de columnas Restricciones de Tabla /Columna

4 – Restricciones de Integridad Clave primaria (primary key) Es una restricción de unicidad pero en la cual las columnas no pueden tomar valor nulo (integridad de entidades) Restricciones de Tabla / Columna

4 – Restricciones de Integridad Integridad referencial (foreign key- references) Representa una clave ajena o foránea. Incluye una o más columnas referenciantes (referencing columns) y las correspondientes columnas referenciadas (referenced columns) de una tabla base referenciada (referenced table), que puede ser la referenciante. Las columnas referenciadas deben tener una restricción de unicidad en la tabla referenciada. Restricciones de Tabla / Columna

4 – Restricciones de Integridad Control (check). Incluye una condición de búsqueda que sólo puede referir a elementos de la tabla que la incluye. Restricciones de Tabla / Columna

4 – Restricciones de Integridad Sintaxis <definición de restricción de tabla> ::= [ CONSTRAINT <nombre de restricción> ] <restricción de tabla> [ <modo de restricción> ] <restricción de tabla> ::= { <definición de restricción de unicidad> | <definición de restricción referencial> | <definición de restricción de control> }

4 – Restricciones de Integridad Sintaxis <definición de restricción de unicidad> ::= { { UNIQUE | PRIMARY KEY } ( <lista de columnas> ) | UNIQUE ( VALUE ) } <definición de restricción referencial> ::= FOREIGN KEY ( <lista columnas referenciantes> ) <especificación de referencia> <especificación de referencia> ::= REFERENCES <nombre tabla referenciada> [ (<lista columnas referenciadas>) ] [ <acciones referenciales> ]

4 – Restricciones de Integridad Sintaxis <acciones referenciales> ::= { <regla de modificación> [ <regla de borrado> ] | <regla de borrado> [ <regla de modificación> ] } <regla de modificación> ::= ON UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } <regla de borrado> ::= ON DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

4 – Restricciones de Integridad Sintaxis <definición de restricción de control> ::= CHECK (<condición >)

4 – Restricciones de Integridad Sintaxis Las restricciones de columna son restricciones asociadas a una única columna de una tabla: <restricción de columna> ::= { NOT NULL | { UNIQUE | PRIMARY KEY } | <especificación de referencia> | <definición de restricción de control> }

4 – Restricciones de Integridad Sintaxis <restricción de dominio> ::= [ CONSTRAINT <nombre de restricción> ] CHECK (<condición de busqueda>) [ <modo de restricción> ]

4 – Restricciones de Integridad Aserciones: Sintaxis <definición de aserción> ::= CREATE ASSERTION <nombre de restricción> CHECK (<condición de busqueda>) [ <modo de restricción> ]

5 – Seguridad create <nombre usuario> Usuarios create <nombre usuario> identified by <password>;

5 – Seguridad grant <lista de privilegios> [on <objeto/s>] Conceder/ Revocar permisos grant <lista de privilegios> [on <objeto/s>] to <usuario/s o rol/es> [with grant option]; revoke <lista de privilegios> [on <objeto/s>] from <usuario/s o rol/es> [restrict | cascade];

6 –Transacciones Transacciones: Commit Rollback Una transacción consiste en una secuencia de instrucciones de consulta y actualizaciones. Inicio: Implícitamente una transacción comienza cuando se ejecuta la primer instrucción SQL Finalización: Una transacción puede terminar con Commit: Compromete la transacción actual, es decir, hace que los cambios realizados por la transacción sean permanentes en la base de datos Rollback: Causa el retroceso de la transacción , es decir, deshace todas las actualizaciones realizadas por las instrucciones SQL de la transacción;. El estado de la base de datos se restaura al que existía previo a la ejecución de la transacción