Fundamentos de SQL
-
Upload
camposer -
Category
Data & Analytics
-
view
360 -
download
0
Transcript of Fundamentos de SQL
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)