Fundamentos de SQL

Preview:

Citation preview

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 PERSONAADD CONSTRAINT PK_PERSONA primary key (id);ALTER TABLE PERSONAADD COLUMN ZIPCODE INT;DROP TABLE PERSONA;

DML (Data Definition Language)

INDICES

CREATE INDEX I_APELLIDOON PERSONA (APELLIDO ASC);

DROP INDEX PERSONA.I_APELLIDO;

Nota: ¡Las claves primarias son índices!

DML (Data Definition Language)

LECTOR

LIBRERIA LIBROrifdireccionnombre

apellidonombre

id

tituloautor

idofrece

compra

f. nac.

precio_smontofecha

Ejemplo del Curso

Modelo ER

direccion

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

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

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 LIBROSET  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)

Recommended