fundamentos de sql

25

Upload: camposer

Post on 15-Apr-2017

358 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Fundamentos de SQL
Page 2: Fundamentos de SQL

Structured Query LanguageStructured Query Language

Page 3: Fundamentos de SQL

Primero la TeoríaPrimero la Teoría

Page 4: Fundamentos de SQL

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

Page 5: Fundamentos de SQL

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

Page 6: Fundamentos de 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

Page 7: Fundamentos de 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)

Page 8: Fundamentos de SQL

Predicados SQL BETWEEN … AND LIKE ALL EXISTS IN

Funciones Agregadas MAX() MIN() SUM() COUNT() AVG()

Componentes de SQL (II)

Page 9: Fundamentos de SQL

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)

Page 10: Fundamentos de SQL

Vamos a la práctica!Vamos a la práctica!

Page 11: Fundamentos de SQL

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)

Page 12: Fundamentos de SQL

MODIFICAR / ELIMINAR UNA TABLA

ALTER TABLE PERSONAADD CONSTRAINT PK_PERSONA primary key (id);ALTER TABLE PERSONAADD COLUMN ZIPCODE INT;DROP TABLE PERSONA;

DML (Data Definition Language)

Page 13: Fundamentos de SQL

INDICES

CREATE INDEX I_APELLIDOON PERSONA (APELLIDO ASC);

DROP INDEX PERSONA.I_APELLIDO;

Nota: ¡Las claves primarias son índices!

DML (Data Definition Language)

Page 14: Fundamentos de SQL

LECTOR

LIBRERIA LIBROrifdireccionnombre

apellidonombre

id

tituloautor

idofrece

compra

f. nac.

precio_smontofecha

Ejemplo del Curso

Modelo ER

direccion

Page 15: Fundamentos de SQL

Traducción a Tablas BBDD o modelo relacional

LIBRERIA

rifdireccionnombre

apellidonombre

idtituloautor

id

f. nac.precio_s montofecha

OFRECE

rifid

LIBRO COMPRA LECTOR

idLectoridLibro

rifprecio_s

Ejemplo del Curso

direccion

Page 16: Fundamentos de SQL

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)

Page 17: Fundamentos de SQL

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)

Page 18: Fundamentos de SQL

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)

Page 19: Fundamentos de SQL

INSERCIONES (Sentencia INSERT)

Inserción SimpleINSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])]VALUES (<valor1>[,<valor2>,...]); Inserción múltipleINSERT 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)

Page 20: Fundamentos de SQL

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)

Page 21: Fundamentos de SQL

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)

Page 22: Fundamentos de SQL

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)

Page 23: Fundamentos de SQL

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 LIBROSET  autor = (SELECT id FROM AUTOR               WHERE AUTOR.id = LIBRO.autor )

DML (Data Manipulation Language)

Page 24: Fundamentos de SQL

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)

Page 25: Fundamentos de SQL

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)