Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAarón Álvarez Ramos Modificado hace 7 años
1
Presenta: Liliana Gutiérrez Flores 6-abril-2016
SQL Structured Query Language 9:20 Buenos días, mi nombre es Liliana Gutiérrez Flores y les voy a presentar el tema SQL. Presenta: Liliana Gutiérrez Flores 6-abril-2016
2
SQL - Liliana Gutiérrez
Objetivo: Presentar el lenguaje SQL como el lenguaje estándar para la gestión de bases de datos relacionales. Aprender la sintaxis y aplicarla para la creación y manipulación de una base de datos utilizando mysql y Oracle sqlplus. 06/04/2016 SQL - Liliana Gutiérrez
3
SQL - Liliana Gutiérrez
Contenido: Marco conceptual: modelo relacional. Marco histórico: fechas y estándares de SQL. Base de datos de ejemplo. SQL: sintaxis y ejemplos. 4.1. DDL: CREATE, ALTER, DROP. 4.2. DML: INSERT, UPDATE, DELETE, SELECT. Consultas más elaboradas. 06/04/2016 SQL - Liliana Gutiérrez
4
El modelo de datos relacional.
1. Marco conceptual El modelo de datos relacional. ACM journal En las últimas cuatro décadas los Sistemas Gestores de Bases de Datos (SGBS o DBMS) se han basado, primordialmente en el modelo de datos relacional. A Relational Model of Data.. Dr. Edgar F. Codd Junio 1970 El Modelo de datos relacional fue propuesto en Junio de 1970 por el Dr. Edgar Frank Codd en su trabajo A Relational Model of Data for Large Shared Data Banks publicado en la Association of Computer Machinery (ACM) journal. 06/04/2016 SQL - Liliana Gutiérrez
5
SQL - Liliana Gutiérrez
1. Marco conceptual Relaciones. Elemento básico de organización de los datos. Tabla de dos dimensiones con filas y columnas. Atributos El modelo relacional utiliza las relaciones como elemento básico para la organización de los datos. Una relación puede ser vista como una tabla de dos dimensiones con filas (denominadas tuplas) y columnas. Los atributos (o datos de interés de los objetos a modelar), son los encabezados de la tabla y cada fila o tupla contiene los datos de un objeto (cosa, lugar, persona, concepto, hecho, etc.). Tuplas 06/04/2016 SQL - Liliana Gutiérrez
6
Esquema de relación y relación
1. Marco conceptual Esquema de relación y relación Un conjunto de n atributos cada uno con nombre distinto y un dominio. Tupla: Conjunto de n valores en los dominios de los atributos del esquema de relación. Un conjunto de m tuplas. 06/04/2016 SQL - Liliana Gutiérrez
7
Restricciones de integridad
1. Marco conceptual Restricciones de integridad OBLIGATORIEDAD NOT NULL UNICIDAD UNIQUE IDENTIDAD PRIMARY KEY REFERENCIAL FOREIGK KEY DOMINIO CHECK Mecanismos para maximizar la integridad de los datos. 06/04/2016 SQL - Liliana Gutiérrez
8
1. Marco conceptual Las reglas de Codd. Las 12 reglas de un verdadero DBMS … Regla 5 Dr. Edgar F. Codd 1984 Debe existir al menos un lenguaje cuyas sentencias sean expresables, mediante una sintaxis bien definida, soportando la definición y manipulación de datos incluyendo las restricciones de integridad y el soporte de transacciones. En 1984 Edgar F. Codd, publicó las 12 Reglas que un verdadero Sistema Relacional de Bases de Datos debería cumplir. 06/04/2016 SQL - Liliana Gutiérrez
9
Fechas importantes. 2. Marco histórico 1986: ANSI SQL 1983: DB2: SQL
ISO SQL/87 IBM Mainframe 1986: ANSI SQL 1983: DB2: SQL 1979: Oracle: SQL 1978: System R: SEQUEL 1970. Modelo relacional. 1974 y1975 Lab. IBM. Donald Chamberlin SEQUEL. SEQUEL-XRM 1978. IBM desarrolla SYSTEM/R basado en el modelo original de Codd, que incluyó SEQUEL - Structured English Query Language. 1979. Relational Software Inc. lanzó su RDBMS: ORACLE con SQL, 1982 cambio su nombre a Oracle. 1982: IBM lanza su primer RDBMS comercial cuya segunda versión lanzada en 1985 DB2(Database 2 system) es todavía utilizado en sistemas legados. Incialmente diseñado para equipos MainFrame y portado posteriomente a windows y UNIX. En 1986, el ANSI adoptó SQL (sustancialmente adoptó el dialecto SQL de IBM) como estándarpara los lenguajes relacionales y en 1987 se transfomó en estándar ISO. Esta versión delestándar va con el nombre de SQL/86. En los años siguientes, éste ha sufrido diversasrevisiones que han conducido primero a la versión SQL/89 y, posteriormente, a la actualSQL/92. ANSI 1986, ISO SQL-87. Relational Software Inc. 1974: SEQUEL-XRM Laboratorios de IBM 06/04/2016 SQL - Liliana Gutiérrez
10
SQL - Liliana Gutiérrez
2. Marco histórico Estándares ANSI 1986, ISO SQL-87. ANSI SQL-89. ANSI/ISO SQL-92 o SQL2. ANSI/ISO SQL-99 o SQL3. 2003, 2006 y 2008 ANSI SQL: 2011 or ISO/IEC 9075:2011. 06/04/2016 SQL - Liliana Gutiérrez
11
SQL - Liliana Gutiérrez
2. Marco histórico Consultado 3 de abril de 2016. ISO/IEC :2011 SQL Framework. ISO/IEC :2011 SQL Foundation. ISO/IEC :2008 SQL Call-Level Interface. ISO/IEC :2011 SQL Persistent Stored Modules. ISO/IEC :2008 SQL Management of External Data. ISO/IEC :2008 SQL Object Language Bindings . ISO/IEC :2011 SQL Information and Definition. ISO/IEC :2008 SQL Routines and Types Using Java. ISO/IEC :2011 SQL XML-Related Specifications. 06/04/2016 SQL - Liliana Gutiérrez
12
SQL - Liliana Gutiérrez
3. Base de datos de ejemplo Esquema 06/04/2016 SQL - Liliana Gutiérrez
13
SQL - Liliana Gutiérrez
3. Base de datos de ejemplo Tablas 06/04/2016 SQL - Liliana Gutiérrez
14
Estructura del lenguaje SQL
DDL CREATE ALTER DROP DML INSERT UPDATE DELETE SELECT 06/04/2016 SQL - Liliana Gutiérrez
15
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP CREATE CREATE DATABASE nombre_db; CREATE TABLE nombre_tabla( nom_col_1 tipo, nom_col_2 tipo, nom_col_3 tipo, ...) ; 06/04/2016 SQL - Liliana Gutiérrez
16
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP Creación en mysql mysql> CREATE DATABASE db_emp1; mysql> USE db_emp1; mysql> CREATE TABLE EMPLEADO ( -> numero integer, -> nombre varchar(40), -> puesto varchar(30), -> fecha_ingreso date); Query OK, 0 rows affected (36.65 sec) 06/04/2016 SQL - Liliana Gutiérrez
17
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP Creación en sqlplus C:\Users\Liliana>sqlplus/nolog SQL> connect Connected. SQL> CREATE TABLE EMPLEADO ( 2 numero integer PRIMARY KEY, 3 nombre varchar(40), 4 puesto varchar(30), 5 fecha_ingreso date); Table created. 06/04/2016 SQL - Liliana Gutiérrez
18
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP DROP DROP TABLE nombre_tabla; mysql> DROP TABLE EMPLEADO; SQL> DROP TABLE empleado; 06/04/2016 SQL - Liliana Gutiérrez
19
Restricciones de integridad
4.1. DDL: CREATE, ALTER, DROP Restricciones de integridad CREATE TABLE nombre_tabla( nom_col_1 tipo [ restricción ], nom_col_2 tipo [ restricción ], nom_col_3 tipo [ restricción ], ...) ; restricción: NOT NULL | UNIQUE |PRIMARY KEY | DEFAULT | CHECK | FOREIGN KEY REFERENCES tabla(col) 06/04/2016 SQL - Liliana Gutiérrez
20
Restricciones de integridad
4.1. DDL: CREATE, ALTER, DROP Restricciones de integridad CREATE TABLE nombre_tabla( nom_col_1 tipo, nom_col_2 tipo, nom_col_3 tipo, ..., [restricción , restricción , ... ] ; restricción: NOT NULL (col) | UNIQUE (col)| PRIMARY KEY (col) | FOREIGN KEY (col) REFERENCES tabla(col) 06/04/2016 SQL - Liliana Gutiérrez
21
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP CREATE TABLE EMPLEADO ( numero integer PRIMARY KEY, nombre varchar(40), puesto varchar(30), fecha_ingreso date ); numero integer, fecha_ingreso date, PRIMARY KEY (numero) ); 06/04/2016 SQL - Liliana Gutiérrez
22
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP ALTER ALTER TABLE nombre_tabla ADD COLUMN nombre_col tipo | DROP COLUMN nombre_col | MODIFY COLUMN nombre_col tipo | ADD PRIMARY KEY (nombre_col) | DROP PRIMARY KEY | ADD FOREIGN KEY (col) REFERENCES tabla(col); 06/04/2016 SQL - Liliana Gutiérrez
23
Agregar / eliminar columna
4.1. DDL: CREATE, ALTER, DROP Agregar / eliminar columna mysql> ALTER TABLE EMPLEADO -> ADD COLUMN sexo char(1); mysql> ALTER TABLE EMPLEADO -> DROP COLUMN sexo; 06/04/2016 SQL - Liliana Gutiérrez
24
SQL - Liliana Gutiérrez
4.1. DDL: CREATE, ALTER, DROP Archivos de comandos mysql> source sqlFiles/db_empresa1_mysql.sql; source 06/04/2016 SQL - Liliana Gutiérrez
25
SQL - Liliana Gutiérrez
4.2. DML: INSERT, UPDATE, DELETE, SELECT INSERT INSERT INTO nombre_tabla [ (col1, col2, col3, ...)] VALUES (valor1,valor2,valor3,...); 06/04/2016 SQL - Liliana Gutiérrez
26
Inserción en mysql y sqlplus
4.2. DML: INSERT, UPDATE, DELETE, SELECT Inserción en mysql y sqlplus mysql> insert into empleado values (1, 'Anita', 'Secretaria', STR_TO_DATE('03/10/2014','%m/%d/%Y')); SQL> to_date('10-Mar-2014', 'DD-MON-YYYY')); 06/04/2016 SQL - Liliana Gutiérrez
27
SQL - Liliana Gutiérrez
4.2. DML: INSERT, UPDATE, DELETE, SELECT Archivos de comandos mysql> source sqlFiles/db_empresa1_mysql.sql; source 06/04/2016 SQL - Liliana Gutiérrez
28
Restricción o selección [ WHERE ]
4.2. DML: INSERT, UPDATE, DELETE, SELECT Restricción o selección [ WHERE ] UPDATE nombre_tabla SET nombre_col = valor [WHERE condicion]; DELETE FROM nombre tabla SELECT * FROM nombre_tabla 06/04/2016 SQL - Liliana Gutiérrez
29
SQL - Liliana Gutiérrez
4.2. DML: INSERT, UPDATE, DELETE, SELECT condición: predicado [ AND | OR predicado [AND | OR predicado [...] ] ] predicado: atributo 𝜽 valor; 𝜽∈{ =, <>, !=, >, <, >=, <=} atributo BETWEEN valor AND valor atributo [NOT] LIKE ‘expresion’ 06/04/2016 SQL - Liliana Gutiérrez
30
Ejemplos clausula WHERE
4.2. DML: INSERT, UPDATE, DELETE, SELECT Ejemplos clausula WHERE UPDATE EMPLEADO SET puesto = "Jefe" WHERE LIKE "G%"; DELETE FROM PROYECTO WHERE clave = 2; SELECT * FROM PROYECTO WHERE clave > 2 AND prioridad = 1; 06/04/2016 SQL - Liliana Gutiérrez
31
SQL - Liliana Gutiérrez
4.2. DML: INSERT, UPDATE, DELETE, SELECT Proyección SELECT lista_atributos FROM nombre_table [DISTINCT] [ORDER BY atributo] mysql> SELECT nombre, puesto FROM EMPLEADO ORDER BY nombre; 06/04/2016 SQL - Liliana Gutiérrez
32
Funciones de agregación
4.3. Consultas más elaboradas Funciones de agregación Regresan un valor a partir de los múltiples valores en una columna. SELECT func(atributo) FROM nombre_tabla; func(): count() | sum() | avg() | min() | max() 06/04/2016 SQL - Liliana Gutiérrez
33
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Ejemplos de funciones SELECT count(*) FROM EMPLEADO; SELECT COUNT(*) AS CUENTA FROM EMPLEADO; SELECT max(prioridad) FROM PROYECTO; SELECT avg(prioridad) FROM PROYECTO; 06/04/2016 SQL - Liliana Gutiérrez
34
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Agrupación de tuplas SELECT * FROM ASIGNACION; SELECT count(*) FROM ASIGNACION GROUP BY proyecto; SELECT proyecto, count(*) FROM ASIGNACION GROUP BY proyecto [HAVING count(*) > 2]; 06/04/2016 SQL - Liliana Gutiérrez
35
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas WHERE y HAVING mysql> SELECT proyecto, count(*) FROM ASIGNACION WHERE empleado > 3 GROUP BY proyecto HAVING count(*) > 2; 06/04/2016 SQL - Liliana Gutiérrez
36
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Producto cartesiano La concatenación de todas las tuplas de una relación con todas las tuplas una segunda. WHERE EMPLEADO.numero = ASIGNACION.empleado 06/04/2016 SQL - Liliana Gutiérrez
37
Combinación (inner join)
4.3. Consultas más elaboradas Combinación (inner join) 𝜽 –join SELECT * FROM tabla1, tabla2 WHERE tabla1.atributo 𝜽 tabla2.atributo; Equi – join WHERE tabla1.atributo = tabla2.atributo; mysql> SELECT * FROM EMPLEADO, ASIGNACION WHERE EMPLEADO.numero = ASIGNACION.empleado; 06/04/2016 SQL - Liliana Gutiérrez
38
Restricción, proyección y join
4.3. Consultas más elaboradas Restricción, proyección y join mysql> SELECT DISTINCT nombre FROM EMPLEADO, ASIGNACION WHERE numero = empleado AND nombre LIKE ‘A%’ AND proyecto = 3 ORDER BY nombre; 06/04/2016 SQL - Liliana Gutiérrez
39
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Subconsultas SQL> SELECT * FROM EMPLEADO WHERE numero IN (1,2,3); WHERE numero IN (SELECT ASIGNACION.empleado FROM ASIGNACION WHERE ASIGNACION.proyecto = 3); 06/04/2016 SQL - Liliana Gutiérrez
40
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Cuantificadores WHERE atributo IN (subconsulta que regresa valores de una sóla columna) Equivalente a: WHERE atributo = ANY (subconsulta ...) En general: WHERE atributo 𝜽 ANY | ALL 06/04/2016 SQL - Liliana Gutiérrez
41
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Existencia SELECT * FROM EMPLEADO WHERE numero IN (SELECT empleado FROM ASIGNACION WHERE EMPLEADO.numero = ASIGNACION.empleado ); WHERE EXISTS 06/04/2016 SQL - Liliana Gutiérrez
42
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Existencia Mismo dominio SELECT * FROM EMPLEADO WHERE numero NOT IN (SELECT empleado FROM ASIGNACION WHERE EMPLEADO.numero = ASIGNACION.empleado ); WHERE NOT EXISTS * 06/04/2016 SQL - Liliana Gutiérrez
43
SQL - Liliana Gutiérrez
4.3. Consultas más elaboradas Existencia SELECT * FROM EMPLEADO WHERE NOT EXISTS (SELECT * FROM PROYECTO (SELECT * FROM ASIGNACION WHERE EMPLEADO.numero = ASIGNACION.empleado AND PROYECTO.clave = ASIGNACION.proyecto ) ); 06/04/2016 SQL - Liliana Gutiérrez
44
SQL - Liliana Gutiérrez
Conclusiones Hemos revisado y ejemplificado el uso de SQL para la creación y manipulación de bases de datos con mysql y sqlplus. Para trabajar con otros DBMS, en general se puede utilizar SQL-estándar, pero es importante referirse siempre a la documentación propia del sistema. “Los DBMS comerciales no implementan los estándares en su totalidad, en vez de ello, manejan un súperconjunto de un subconjunto...” [C. J. Date]. 06/04/2016 SQL - Liliana Gutiérrez
45
SQL - Liliana Gutiérrez
Conclusiones SQL como cualquier otro lenguaje se aprende practicando. Temas para seguir aprendiendo: SQL-incrustado y soporte de transacciones para desarrollo de aplicaciones (Desarrollo Web e Ingeniería de SW). Creación de otros objetos (vistas, índices, disparadores, ...) SQL: DCL para administración de usuarios y privilegios. (Administración de base de datos) SQL de procedimientos (Administración de base de datos) Procesamiento de consultas y algebra relacional (Bases de datos distribuidas) 06/04/2016 SQL - Liliana Gutiérrez
46
SQL - Liliana Gutiérrez
Gracias por su atención. Liliana Gutiérrez 06/04/2016 SQL - Liliana Gutiérrez
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.