1 / 87

Unidad 8

Unidad 8. Lenguaje SQL ( Structured Query Language ). Introducción. Características del lenguaje. Resultado del esfuerzo conjunto de dos grupos: ANSI – American National Standars Institute ISO – International Standards Organitation

marlo
Download Presentation

Unidad 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unidad 8 Lenguaje SQL (StructuredQueryLanguage)

  2. Introducción Características del lenguaje • Resultado del esfuerzo conjunto de dos grupos: • ANSI – American NationalStandarsInstitute • ISO – International StandardsOrganitation • 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”

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

  4. SQL 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 • Reglasparainclusión en lenguajes (C, PASCAL, etc.)

  5. SQL: DDL y DML DDL DML • Incluye sentencias que permiten definir los objetos de la Base de Datos • Las sentencias DDL generancambios en el diccionario de datos, el cualcontienemetadatos • Es un lenguaje que permite a los usuarios acceder o manipular los datos de la base de datos

  6. SQL DDL DML • Create • Alter • Drop • Select • Insert • Update • Delete

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

  8. 1- DDL CREATE TABLE CREATE TABLE nombre_tabla (nombre_columnatipo_dato/dominio [NOT NULL] [DEFAULT valor], [nombre_columnatipo_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,...]) ];

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

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

  11. 2 - DML SQL Algebra • Muticonjunto o bolsa • Conjunto

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

  13. 2 - DML SELECT 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];

  14. 2 - DML join [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

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

  16. 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 SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782 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 03/12/81 23/01/82 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300 1400 0 20 30 30 20 30 30 10 20 10 30 20 30 20 10 2 - DML: Tablas Ejemplo Tabla DEPT TablaEMP 14filas

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

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

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

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

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

  22. 2 - DML: Proyección 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’ • FROM EMP; • (proyección5.sql)

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

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

  25. 2 - DML: Selección 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)

  26. 2 - DML: Selección 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.

  27. 2 - DML: Selección 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

  28. 2- DML 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>

  29. 2 - DML 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

  30. 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.

  31. 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 FROM scott.emp WHERE deptno=30);

  32. 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 FROM scott.emp WHERE deptno=30);

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

  34. 2 - DML 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. • NotExists: Evalúa verdadero si el subquery no genera tuplas, es decir, devuelve una tabla vacía.

  35. 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);

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

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

  38. 2 - DML: Natural Join 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)

  39. 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)

  40. 2 - DML: Join 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)

  41. 2 - DML: Join 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)

  42. 2 - DML: OuterJoin OuterJoin • LEFT OUTER JOIN • RIGHT OUTER JOIN • FULL OUTER JOIN

  43. 2 - DML: OuterJoin LeftOuterJoin • 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)

  44. 2 - DML: OuterJoin RightOuterJoin • 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)

  45. 2 - DML: OuterJoin Full OuterJoin SELECT lista_atributos FROM nombre_tabla FULL OUTER JOIN nombre_tabla ON condición;

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

  47. 2 - DML: Union Union UnionAll • En este caso, si existen tuplas repetidas se eliminan • En este caso, si existen tuplas repetidas no se eliminan

  48. 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)

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

  50. 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 (Select deptno from emp where job=‘ANALYST'); (interseccion2.sql)

More Related