Structured Query LanguageStructured Query Language
Primero la TeoríaPrimero la Teoría
 Base de Datos
 Bases de Datos Relacionales
 Manejador de Base de Datos
 ORACLE, SQLServer
 Postgres, MySQL
 Sistema de Gestión de Archivos¿?
 Modelos:
 Entidad Relación (ER)
 ER Extendido
 Relacional
 Tablas (Entidades o relaciones, propiedades)
 Claves: primarias, alternas, foráneas (importancia)
BBDD Conceptos Básicos
 SQL ANSI 92 (estándar… lenguaje universal)
 PL/SQL (Procedure Language / SQL) extensión
 SQL + Elementos de Leng. Programación
 Ejemplos:
• Postgres: PL/PgSQL
• SQLServer: Transact SQL
Introducción a SQL
 DDL (Data Definition Language): Definición
 CREATE TABLE
 CREATE VIEW
 ALTER TABLE
 DML (Data Manipulation language): Manipulación
 SELECT
 UPDATE
 INSERT
 DELETE
 DCL (Data Control Language): Seguridad
 GRANT
 REVOKE
El Lenguaje SQL
 Operadores
 Aritméticos: + , - , * , /
 Relacionales: <, !=, >=
 Lógicos: and, or, not
 Concatenación: +
 Tipos de datos
 Numéricos: ej. NUMERIC
 Alfanuméricos: ej. VARCHAR
 Fecha: ej.timestamp
 Lógico: ej. BIT
 BLOB: ej. TEXT
Componentes de SQL (I)
 Predicados SQL
 BETWEEN … AND
 LIKE
 ALL
 EXISTS
 IN
 Funciones Agregadas
 MAX()
 MIN()
 SUM()
 COUNT()
 AVG()
Componentes de SQL (II)
 Palabras Claves
 CREATE, ALTER, DELETE, INSERT, UPDATE, GRANT
 NUMERIC, VARCHAR, DATE, BIT, TEXT
 AND, OR, NOT
 MAX, MIN, SUM, AVG
 GROUP, HAVING, ORDER, BETWEEN…AND
Componentes de SQL (III)
Vamos a la práctica!Vamos a la práctica!
 CREAR / MODIFICAR UNA TABLA
CREATE TABLE PERSONA (
id varchar(10) NOT NULL,
nombre varchar(20) NOT NULL,
apellido varchar(20) NOT NULL,
fecha_nacimiento date
);
12/12/1980PerazaEliecerE-13728304
23/03/1979CamposRodolfoV-14532176
fecha_nacimientoapellidonombreid
DML (Data Definition Language)
 MODIFICAR / ELIMINAR UNA TABLA
ALTER TABLE PERSONA
ADD CONSTRAINT PK_PERSONA primary key (id);
ALTER TABLE PERSONA
ADD COLUMN ZIPCODE INT;
DROP TABLE PERSONA;
DML (Data Definition Language)
 INDICES
CREATE INDEX I_APELLIDO
ON PERSONA (APELLIDO ASC);
DROP INDEX PERSONA.I_APELLIDO;
Nota: ¡Las claves primarias son índices!
DML (Data Definition Language)
LECTOR
LIBRERIA LIBRO
rif
direccion
nombre
apellido
nombre
id
titulo
autor
id
ofrece
compra
f. nac.
precio_s
monto
fecha
Ejemplo del Curso
 Modelo ER
direccion
 Traducción a Tablas BBDD o modelo relacional
LIBRERIA
rif
direccion
nombre
apellido
nombre
id
titulo
autor
id
f. nac.precio_s monto
fecha
OFRECE
rif
id
LIBRO COMPRA LECTOR
idLector
idLibro
rifprecio_s
Ejemplo del Curso
direccion
 CONSULTAS (Sentencia SELECT)
SELECT [ALL | DISTINCT ]
     <nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista> 
        [{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
     [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
Nota: cuando existe más de una tabla en la sentencia FROM estamos en
presencia de JOIN o ‘CONSULTA COMBINADA’
DML (Data Manipulation Language)
 CONSULTAS (Sentencia SELECT)
 El comodín de la selección * (tips)
 Consultas simples generales
 Consultas simples específicas (WHERE,AND,OR,NOT)
 Valores distintos sin repeticiones (DISTINCT)
 Quiero ordenar mis datos (ORDER BY, ASC, DESC)
 Las consultas combinadas (INNER JOINs)
 Otros combos LEFT, RIGHT y FULL OUTER JOIN, UNION
 Agrupaciones y estadísticas (GROUP BY, HAVING)
 Será que existe un registro con… (EXISTS)
 Cómo coloco rangos de condiciones? (BETWEEN…AND)
 Es algo como… (Expresiones regulares, LIKE)
 Profundidad de subconsultas (IN)
DML (Data Manipulation Language)
 CONSULTAS (Sentencia SELECT)
 Datos de Librerías
 Datos de Lectores
 Lectores mayores de 18 años
 Autor preferido por Lector
 Libro más vendido
 Libro más vendido en 1980
DML (Data Manipulation Language)
 INSERCIONES (Sentencia INSERT)
 Inserción Simple
INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])]
VALUES (<valor1>[,<valor2>,...]);
 Inserción múltiple
INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])]
SELECT [(<campo1>[,<campo2>,...])]
FROM <nombre_tabla_origen>;
Nota: No necesariamente el SELECT debe ser una consulta simple…
DML (Data Manipulation Language)
 INSERCIONES (Sentencia INSERT)
 Inserción Simple
 Vamos a insertar un nuevo libro
 Imaginemos el proceso de una compra
 Inserción múltiple
 Me han solicitado una tabla para autores
Nota: No se va a expresar la mejor manera de modelarlo en el ER, son
ejemplos para queries.
DML (Data Manipulation Language)
 ACTUALIZACIONES (Sentencia UPDATE)
UPDATE <nombre_tabla>
SET  <campo1> = <valor1>
  {[,<campo2> = <valor2>,...,<campoN> = <valorN>]}
[ WHERE <condicion>];
Nota: los valores pueden no ser una constante, pueden venir de una consulta
DML (Data Manipulation Language)
 ACTUALIZACIONES (Sentencia UPDATE)
 Actualización Simple
 Vamos a cambiarle la dirección a Rodolfo
 Actualización múltiple
 Todos los libros de García Márquez cuestan
ahora BsF. 100.
 Usando subqueries¿?
 Con la nueva tabla Autor, surge la necesidad de
cambiar la tabla libro, y colocar el id de autor
en lugar del nombre completo.
Nota: esto último conlleva otras cosas además del update.
DML (Data Manipulation Language)
 ACTUALIZACIONES (Sentencia UPDATE)
ALTER TABLE LIBRO
alter column autor int not null;
ALTER TABLE LIBRO
add constraint FK_LIBRO_AUTOR foreign key (autor)
references AUTOR (id);
UPDATE LIBRO
SET  autor = (SELECT id FROM AUTOR 
              WHERE AUTOR.id = LIBRO.autor )
DML (Data Manipulation Language)
 ELIMINACIONES (Sentencia DELETE)
 DELETE FROM <nombre_tabla>
[WHERE <condicion>];
 TRUNCATE TABLE <nombre_tabla>;
Notas:
• La sentencia TRUNCATE no es transaccional, no se puede deshacer.
• No posee cláusula WHERE
• No todos los manejadores la poseen.
DML (Data Manipulation Language)
DML (Data Manipulation Language)
 Eliminamos los libros de Pedro Pérez
 Si, ése autor ya no escribe más, elimínalo
 Quiero hacer borrón y cuenta nueva de los libros,
de dos maneras distintas. (DELETE & TRUNCATE)
 ELIMINACIONES (Sentencia DELETE & TRUNCATE)

Fundamentos de SQL

  • 2.
  • 3.
  • 4.
     Base deDatos  Bases de Datos Relacionales  Manejador de Base de Datos  ORACLE, SQLServer  Postgres, MySQL  Sistema de Gestión de Archivos¿?  Modelos:  Entidad Relación (ER)  ER Extendido  Relacional  Tablas (Entidades o relaciones, propiedades)  Claves: primarias, alternas, foráneas (importancia) BBDD Conceptos Básicos
  • 5.
     SQL ANSI92 (estándar… lenguaje universal)  PL/SQL (Procedure Language / SQL) extensión  SQL + Elementos de Leng. Programación  Ejemplos: • Postgres: PL/PgSQL • SQLServer: Transact SQL Introducción a SQL
  • 6.
     DDL (DataDefinition Language): Definición  CREATE TABLE  CREATE VIEW  ALTER TABLE  DML (Data Manipulation language): Manipulación  SELECT  UPDATE  INSERT  DELETE  DCL (Data Control Language): Seguridad  GRANT  REVOKE El Lenguaje SQL
  • 7.
     Operadores  Aritméticos:+ , - , * , /  Relacionales: <, !=, >=  Lógicos: and, or, not  Concatenación: +  Tipos de datos  Numéricos: ej. NUMERIC  Alfanuméricos: ej. VARCHAR  Fecha: ej.timestamp  Lógico: ej. BIT  BLOB: ej. TEXT Componentes de SQL (I)
  • 8.
     Predicados SQL BETWEEN … AND  LIKE  ALL  EXISTS  IN  Funciones Agregadas  MAX()  MIN()  SUM()  COUNT()  AVG() Componentes de SQL (II)
  • 9.
     Palabras Claves CREATE, ALTER, DELETE, INSERT, UPDATE, GRANT  NUMERIC, VARCHAR, DATE, BIT, TEXT  AND, OR, NOT  MAX, MIN, SUM, AVG  GROUP, HAVING, ORDER, BETWEEN…AND Componentes de SQL (III)
  • 10.
    Vamos a lapráctica!Vamos a la práctica!
  • 11.
     CREAR /MODIFICAR UNA TABLA CREATE TABLE PERSONA ( id varchar(10) NOT NULL, nombre varchar(20) NOT NULL, apellido varchar(20) NOT NULL, fecha_nacimiento date ); 12/12/1980PerazaEliecerE-13728304 23/03/1979CamposRodolfoV-14532176 fecha_nacimientoapellidonombreid DML (Data Definition Language)
  • 12.
     MODIFICAR /ELIMINAR UNA TABLA ALTER TABLE PERSONA ADD CONSTRAINT PK_PERSONA primary key (id); ALTER TABLE PERSONA ADD COLUMN ZIPCODE INT; DROP TABLE PERSONA; DML (Data Definition Language)
  • 13.
     INDICES CREATE INDEXI_APELLIDO ON PERSONA (APELLIDO ASC); DROP INDEX PERSONA.I_APELLIDO; Nota: ¡Las claves primarias son índices! DML (Data Definition Language)
  • 14.
  • 15.
     Traducción aTablas BBDD o modelo relacional LIBRERIA rif direccion nombre apellido nombre id titulo autor id f. nac.precio_s monto fecha OFRECE rif id LIBRO COMPRA LECTOR idLector idLibro rifprecio_s Ejemplo del Curso direccion
  • 16.
     CONSULTAS (SentenciaSELECT) SELECT [ALL | DISTINCT ]      <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista>          [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]      [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]] Nota: cuando existe más de una tabla en la sentencia FROM estamos en presencia de JOIN o ‘CONSULTA COMBINADA’ DML (Data Manipulation Language)
  • 17.
     CONSULTAS (SentenciaSELECT)  El comodín de la selección * (tips)  Consultas simples generales  Consultas simples específicas (WHERE,AND,OR,NOT)  Valores distintos sin repeticiones (DISTINCT)  Quiero ordenar mis datos (ORDER BY, ASC, DESC)  Las consultas combinadas (INNER JOINs)  Otros combos LEFT, RIGHT y FULL OUTER JOIN, UNION  Agrupaciones y estadísticas (GROUP BY, HAVING)  Será que existe un registro con… (EXISTS)  Cómo coloco rangos de condiciones? (BETWEEN…AND)  Es algo como… (Expresiones regulares, LIKE)  Profundidad de subconsultas (IN) DML (Data Manipulation Language)
  • 18.
     CONSULTAS (SentenciaSELECT)  Datos de Librerías  Datos de Lectores  Lectores mayores de 18 años  Autor preferido por Lector  Libro más vendido  Libro más vendido en 1980 DML (Data Manipulation Language)
  • 19.
     INSERCIONES (SentenciaINSERT)  Inserción Simple INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] VALUES (<valor1>[,<valor2>,...]);  Inserción múltiple INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] SELECT [(<campo1>[,<campo2>,...])] FROM <nombre_tabla_origen>; Nota: No necesariamente el SELECT debe ser una consulta simple… DML (Data Manipulation Language)
  • 20.
     INSERCIONES (SentenciaINSERT)  Inserción Simple  Vamos a insertar un nuevo libro  Imaginemos el proceso de una compra  Inserción múltiple  Me han solicitado una tabla para autores Nota: No se va a expresar la mejor manera de modelarlo en el ER, son ejemplos para queries. DML (Data Manipulation Language)
  • 21.
     ACTUALIZACIONES (SentenciaUPDATE) UPDATE <nombre_tabla> SET  <campo1> = <valor1>   {[,<campo2> = <valor2>,...,<campoN> = <valorN>]} [ WHERE <condicion>]; Nota: los valores pueden no ser una constante, pueden venir de una consulta DML (Data Manipulation Language)
  • 22.
     ACTUALIZACIONES (SentenciaUPDATE)  Actualización Simple  Vamos a cambiarle la dirección a Rodolfo  Actualización múltiple  Todos los libros de García Márquez cuestan ahora BsF. 100.  Usando subqueries¿?  Con la nueva tabla Autor, surge la necesidad de cambiar la tabla libro, y colocar el id de autor en lugar del nombre completo. Nota: esto último conlleva otras cosas además del update. DML (Data Manipulation Language)
  • 23.
     ACTUALIZACIONES (SentenciaUPDATE) ALTER TABLE LIBRO alter column autor int not null; ALTER TABLE LIBRO add constraint FK_LIBRO_AUTOR foreign key (autor) references AUTOR (id); UPDATE LIBRO SET  autor = (SELECT id FROM AUTOR                WHERE AUTOR.id = LIBRO.autor ) DML (Data Manipulation Language)
  • 24.
     ELIMINACIONES (SentenciaDELETE)  DELETE FROM <nombre_tabla> [WHERE <condicion>];  TRUNCATE TABLE <nombre_tabla>; Notas: • La sentencia TRUNCATE no es transaccional, no se puede deshacer. • No posee cláusula WHERE • No todos los manejadores la poseen. DML (Data Manipulation Language)
  • 25.
    DML (Data ManipulationLanguage)  Eliminamos los libros de Pedro Pérez  Si, ése autor ya no escribe más, elimínalo  Quiero hacer borrón y cuenta nueva de los libros, de dos maneras distintas. (DELETE & TRUNCATE)  ELIMINACIONES (Sentencia DELETE & TRUNCATE)