Curso SQL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 126

Curso SQL

Bases de datos

Rocío Parrilla

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 1


Índice

1. Introducción
2. SQL basics
3. SQL DML (Data Manipulation Language)
4. SQL DDL (Data Definition Language)
5. Materiales
6. Anexo: SQL avanzado

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 2


Introducción
1

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 3


Introducción

¿Qué es una base de datos? (I)

o Almacén de información organizada/estructurada.

o Normalmente los datos de este almacén tienen algún tipo de relación o vínculo entre ellos.

o El gestor de base de datos (DBMS, Data Base Management System) es un software que
permite almacenar la información de manera estructurada y acceder a ella de forma rápida.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 4


Introducción

¿Qué es una base de datos? (II)


Este software permite realizar 4 operaciones básicas:

Definición Recuperación

De la estructura y De los datos (query)


organización de los datos

Del sistema (permisos,


Inserción, modificación monitorización del
y borrado rendimiento…)

Actualización Administración

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 5


Introducción

Modelo de una base de datos


El modelo de una base de datos determina la estructura interna de la misma. Es decir, la
manera en que los datos serán almacenados. Algunos ejemplos:

▪ Modelo relacional (basado en tablas).

▪ Modelo dimensional (evolución del modelo relacional).

▪ Modelo orientado a objetos.

▪ Modelo de grafos.

▪ …

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 6


Introducción

Modelo de una base de datos


El modelo de una base de datos determina la estructura interna de la misma. Es decir, la
manera en que los datos serán almacenados. Algunos ejemplos:

▪ Modelo relacional (basado en tablas).

▪ Modelo dimensional (evolución del modelo relacional).

▪ Modelo orientado a objetos.

▪ Modelo de grafos.

▪ …

Para poder acceder a la información de una base de datos emplearemos un lenguaje de


consultas (SQL es el más extendido).

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 7


Introducción

¿Qué es una base de datos relacional? (I)

o Es un tipo de base de datos que cumple con el modelo relacional (basado en la lógica de
predicados y teoría de conjuntos).

o Es el modelo de base de datos más extendido.

o Las bases del modelo relacional fueron postuladas por Edgar Frank Codd en el año 1970
cuando trabajaba en IBM.

o Su idea fundamental es el uso de relaciones.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 8


Introducción

¿Qué es una base de datos relacional? (II)


Características básicas del modelo relacional:

▪ Los datos son representados como registros/tuplas (filas) y agrupados dentro de


relaciones (tablas).

▪ La tabla tiene un conjunto de campos/atributos (columnas).

▪ Las conexiones entre tablas se establecen entre las claves primarias y claves
foráneas.

▪ A través de las claves primarias y foráneas garantizamos la integridad de información.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 9


Introducción

Elementos de una base de datos relacional (I)

Procedimientos
Relaciones Dominios
almacenados

Restricciones Claves Estructuras

▪ Esquema
▪ Clave primaria
▪ Datos
▪ Clave foránea
▪ Clave índice

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


Introducción

Elementos de una base de datos relacional (II)

Relaciones

Las relaciones permiten almacenar y consultar los datos. Existen dos tipos:

▪ Relación base o tabla: Almacena datos.

▪ Relación derivada o consulta o vista: No almacena datos. Se calculan al aplicar


operaciones relacionales. Expresan información de varias tablas como si fuera una
única tabla.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 11


Introducción

Elementos de una base de datos relacional (III)

Restricciones

Son limitaciones sobre los campos de las tablas de base de datos. No son fundamentales
pero permiten mejorar la organización de los datos.

Dominios

Tipos de datos que serán almacenados.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 12


Introducción

Elementos de una base de datos relacional (IV)

Claves

▪ Clave primaria: clave única que permite identificar un registro de la tabla.

▪ Clave foránea: referencia a una clave de otra tabla. No tienen porque ser claves
únicas en la tabla donde están, pero sí donde están referenciadas. Integridad de la
información.

▪ Clave índice: permiten un acceso más rápido a los datos. Se pueden crear como
combinación de los campos de una tabla.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 13


Introducción

Elementos de una base de datos relacional (IV)

Claves

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 14


Introducción

Elementos de una base de datos relacional (V)


Procedimientos
almacenados

Código ejecutable que se guarda en la base de datos. Cada motor de base de datos tiene su
propio lenguaje de programación (por ejemplo: SQL Server tiene Transact-SQL, Oracle tiene
PL/SQL…).

Estructuras

▪ Esquema: define la estructura de base de datos (tablas, columna, tipos de datos,


claves primarias, relaciones, índices…)
▪ Datos: registros de información. Filas de una tabla (tuplas). El número de filas de una
tabla es denominado cardinalidad. El número de columnas se denomina aridad o
grado.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 15


Introducción

Modelo entidad-relación (I)


Herramienta para el modelado de datos, permite representar las entidades relevantes de un
sistema de información, sus relaciones y propiedades (atributos).

Elementos de un modelo entidad-relación:

▪ Entidad: representa una cosa u objeto del mundo real. Pueden ser objetos con
existencia física (por ejemplo: persona…) o con existencia conceptual (por ejemplo:
cuenta bancaria…).

▪ Atributo: son las características que describen o definen las entidades/relaciones.

▪ Relación: establece dependencias entre entidades. La cardinalidad de una relación


indica el número de entidades con las que puede estar relacionada otra entidad.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 16


Introducción

Modelo entidad-relación (II)


La relación puede ser:

• Uno a uno (1:1): un registro de una entidad A se relaciona con un registro de una
entidad B.

• Uno a varios (1:n): un registro de una entidad A se relaciona con cero o varios
registros de una entidad B.

• Varios a uno (n:1): un registro de una entidad B se puede relacionar con cero o
varios registros de una entidad A.

• Varios a varios (n:m): una entidad A se relaciona con varios registros de la entidad
B y viceversa.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 17


Introducción

Diagrama entidad-relación (I)

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 18


Introducción

Diagrama entidad-relación (II)

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 19


Introducción

Del modelo entidad relación a las tablas


o Entidades: las entidades se convierten en tablas. Los atributos de la entidad en columnas
de la tabla.

o Relaciones: en general las relaciones se transforman también en tablas. En el caso de que


la relación contenga atributos siempre genera tablas.

▪ Relaciones 1 a 1: cada entidad de la relación se convierte en una tabla. La relación


aparece como clave primaria en una de las tablas y como clave foránea en la otra tabla.

▪ Relaciones 1 a N: cada entidad de la relación se convierte en una tabla. Se pasa la


clave primaria de la entidad con cardinalidad 1 a la tabla de la otra entidad como clave
foránea.

▪ Relaciones N a M: tanto las entidades como la relación se convierten en tablas. Las


claves primarias de las entidades aparecen como clave primaria en la relación.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 20


Introducción

Normalización de bases de datos (I)


o A través de una serie de reglas o normas aplicadas en el momento del diseño de una base
de datos relacional podremos:

▪ Evitar redundancia de datos.


▪ Disminuir problemas derivados de la actualización de datos en tablas.
▪ Proteger la integridad de datos.

o Estas reglas se denominan Formas Normales. Las tres primeras formas normales son
suficientes para cumplir las necesidades de la mayoría de base de datos.
o En la práctica es complicado hacer cumplir todas las reglas de las Formas Normales.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 21


Introducción

Normalización de bases de datos (II)


- Independencia del orden tanto de las filas como de las columnas.
- No hay filas duplicadas.
- Tiene una clave primaria única y ésta no contiene atributos nulos.
1FN - Cada intersección de fila y columna contiene exactamente un valor del dominio
aplicable.
- No puede contener columnas con valores nulos o más de un valor.

Si está en 1FN y además los atributos no clave dependen de toda la clave


principal.
2FN Cuando una tabla no cumple la 2FN, puede sufrir problemas a la hora de mantener la
información actualizada de manera correcta.

Si además de estar en 2FN no existe ninguna dependencia transitiva entre


3FN los atributos que no son clave.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 22


Introducción

Normalización de bases de datos (III)


Ejemplo segunda forma normal

Empleado Especialidades Ubicación del puesto


actual
Brown Light Cleaning 73 Industrial Way
Brown Typing 73 Industrial Way
Harrison Light Cleaning 73 Industrial Way
Jones Shorthland 114 Main Street
Jones Typing 114 Main Street
Jones Whittling 114 Main Street

o La clave primaria compuesta: “Empleado” y “Especialidades”.

o Este diseño de tabla no cumple la 2FN, ya que la columna “Ubicación del puesto
actual” no depende de la clave primaria en su totalidad, únicamente de
“Employee”.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 23


Introducción

Normalización de bases de datos (IV)


Ejemplo segunda forma normal

Solución: emplear dos tablas diferentes: una para guardar las habilidades, la otra para
guardar las direcciones de trabajo.

Empleado Especialidades
Brown Light Cleaning Empleado Ubicación del puesto
Brown Typing actual

Harrison Light Cleaning Brown 73 Industrial Way


Harrison 73 Industrial Way
Jones Shorthland
Jones 114 Main Street
Jones Typing
Jones Whittling

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 24


Introducción

Normalización de bases de datos (V)


Ejemplo tercera forma normal

Torneo Año Ganador Fecha de nacimiento


del ganador
Indiana Invitational 1998 Al Fredrickson 21 July 1975
Cleaveland Open 1999 Bob Albertson 28 September 1968
Des Moines Masters 1999 Al Fredrickson 21 July 1975
Indiana Invitational 1999 Chip Masterson 14 March 1977

o Clave primaria compuesta: torneo y año.

o Este diseño de tabla no cumple la 3FN, ya que la columna “Fecha de nacimiento del ganador”
depende transitivamente de la clave primaria, a través de la columna “Ganador”.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 25


Introducción

Normalización de bases de datos (VI)


Ejemplo tercera forma normal

Solución: emplear dos tablas diferentes. Una para guardar los torneos, la otra para
guardar las fechas de nacimiento de los ganadores.

Torneo Año Ganador


Ganador Fecha de nacimiento
Indiana Invitational 1998 Al Fredrickson
Al Fredrickson 21 July 1975
Cleaveland Open 1999 Bob Albertson
Bob Albertson 28 September 1968
Des Moines 1999 Al Fredrickson
Masters Chip Masterson 14 March 1977
Indiana Invitational 1999 Chip Masterson

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 26


Introducción

SQL (Structured Query Language) (I)

o Lenguaje de acceso a bases de datos relacionales.

o No es case-sensitive, se puede escribir en mayúscula o minúsculas. Por claridad, es


importante escribir las sentencias manteniendo un estilo.

o Lenguaje de definición de datos (DDL, Data Definitión Language): definición y


modificación de objetos de base de datos (tablas, índices, esquemas, etc.).

o Lenguaje de manipulación de datos (DML, Data Manipulation Language): consulta y


manipulación de los datos.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 27


Introducción

SQL (Structured Query Language) (II)

o El gestor de base de datos relacional (RDBMS, Relational Data Base Management


System) permite almacenar la información de una base de datos relacional.

o Cada base de datos comercial cumple con el estándar de SQL, aunque existen ligeras
diferencias/peculiaridades de una a otra.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 28


Introducción

SQL (Structured Query Language) (III)

Crear nuevas Insertar registros


Crear nuevas
tablas en una en una base de
base de datos
base de datos datos

Actualizar o eliminar
Ejecutar consultas en
registros en una base de
una base de datos datos

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 29


Introducción

Caso práctico 1
Supongamos que vamos a desarrollar una aplicación para escuchar música. Necesitaremos:

▪ Canciones
▪ Artistas
▪ Álbumes
▪ Usuarios
▪ Listas de reproducción

1. Crear un modelo entidad relación para la base de datos de la aplicación.

2. Convertir modelo en tablas de una base de datos.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 30


Introducción

Caso práctico 1
Canción

▪ Título
▪ Duración
▪ Número de
reproducciones
▪ Id

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 31


Introducción

Caso práctico 1
Canción Artistas

▪ Título ▪ Nombre
▪ Duración ▪ Biografía
▪ Número de ▪ Id
reproducciones
▪ Id

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 32


Introducción

Caso práctico 1
Canción Artistas Álbum

▪ Título ▪ Nombre ▪ Título


▪ Duración ▪ Biografía ▪ Año de lanzamiento
▪ Número de ▪ Id ▪ Id
reproducciones
▪ Id

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 33


Introducción

Caso práctico 1
Canción Artistas Álbum

▪ Título ▪ Nombre ▪ Título


▪ Duración ▪ Biografía ▪ Año de lanzamiento
▪ Número de ▪ Id ▪ Id
reproducciones
▪ Id

Playlist

▪ Título
▪ Pública / privada
▪ Id

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 34


Introducción

Caso práctico 1
Canción Artistas Álbum

▪ Título ▪ Nombre ▪ Título


▪ Duración ▪ Biografía ▪ Año de lanzamiento
▪ Número de ▪ Id ▪ Id
reproducciones
▪ Id

Playlist Usuario

▪ Título ▪ Nombre
▪ Pública / privada ▪ Nombre de usuario
▪ Id ▪ Correo electrónico
▪ Id

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 35


Introducción

Caso práctico 1
Canción Artistas Álbum

▪ Título ▪ Nombre ▪ Título


▪ Duración ▪ Biografía ▪ Año de lanzamiento
▪ Número de ▪ Id
reproducciones
▪ Id
▪ Id

Playlist Usuario

▪ Título ▪ Nombre
▪ Pública / privada ▪ Nombre de usuario
▪ Id ▪ Correo electrónico
▪ Id

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 36


Introducción

Caso práctico 1

Canción Tiene Álbum Publica Artistas

Sigue Sigue

Sigue
Tiene

Playlist Sigue Usuario

Amigo

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 37


Introducción

Caso práctico 1

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 38


Introducción

Caso práctico 1
Convertir modelo en tablas de una base de datos.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 39


Introducción

Caso práctico 1

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 40


SQL basics
2

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 41


SQL basics

Elementos SQL (I)

o Base de datos (DATABASE): se puede definir como un conjunto de objetos (tablas, índices,
restricciones, usuarios, datos…).

o Tabla (TABLE): estructura fija de campos.

o Campo (COLUMN, FIELD): son las columnas de una tabla.

o Registro (REGISTER, ROW): son las filas de una tabla (también se pueden denominar
tuplas).

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 42


SQL basics

Elementos SQL (II)

o Clave primaria (PK, PRIMARY KEY): identificador unívoco de una fila. Todas las PKs
tienen asociado un índice siempre.

o Clave foránea (FK, FOREIGN KEY): establece una relación entre dos tablas. La relación se
establece a una PK de otra tabla.

o Índice (INDEX): permite un acceso rápido a los datos.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 43


SQL basics

Tipos de datos (I)


Numérico: para almacenar números enteros o decimales.

Exactos Aproximados
Int Float
Bool Double
Decimal o Numeric Real

Fecha y hora: para almacenar campos de tipo fecha o de tipo horario.

Date Datetime Timestamp


Almacena fecha Almacena fecha y hora Número de segundos transcurrido
desde '1970-01-01 00:00:00'

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 44


SQL basics

Tipos de datos (II)

Cadenas: para almacenar cadenas de texto.

CHAR(n) VARCHAR(n) TEXT


Cadenas de longitud fija (n). Cadenas de longitud variable (n es la para campos de texto/binario más
longitud máx). grandes.

NULL: representa un valor desconocido en cualquiera de los tipos de datos anteriores.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 45


SQL basics

Tipos de datos (III)

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 46


SQL basics

Caso práctico 2
o Abrir MySql Workbench.

o Abrir el fichero employees.sql y explorar.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 47


SQL basics

Operadores básicos (I)

Tipo Operador Acción


+ Operación de suma.

- Operación de resta.

Aritméticos * Operación de multiplicación.

/ Operación de división.

% Operación de módulo (resto de la división).

AND TRUE si ambas expresiones booleanas son TRUE.

Lógicos OR TRUE si cualquiera de las dos expresiones booleanas es TRUE.

NOT Invierte el valor de cualquier otro operador booleano.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 48


SQL basics

Operadores básicos (II)


Tipo Operador Acción
= Igualdad.

> Mayor que…

>= Mayor o igual que…

< Menor que…

<= Menor o igual que…

IS NULL Selecciona únicamente los valores nulos (NULL).


Comparación
IS NOT NULL Selecciona todos aquellos valores no nulos (NULL).

BETWEEN TRUE si el operando está dentro de un intervalo.

IN TRUE si el operando es igual a uno de la lista de expresiones.

LIKE TRUE si el operando coincide con un patrón.

EXISTS TRUE si una subconsulta contiene cualquiera de las filas.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 49


SQL basics

Caso práctico 3
o Ejecutar el fichero como si fuera un script:

o Explorar las tablas, sus campos, claves primarias, claves foráneas…

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 50


SQL DML (Data Manipulation
3 Language)

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 51


SQL DML (Data Manipulation Language)

SELECT WHERE GROUP BY JOIN


Agrupación y
Consulta Filtrado Unión de tablas
agregación

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 52


SQL DML (Data Manipulation Language)

SELECT WHERE GROUP BY JOIN


Agrupación y
Consulta Filtrado Unión de tablas
agregación

HAVING ORDER BY UNION DISTINCT


Filtrado de Eliminación de
Ordenación Combinación
agregaciones duplicados

LIKE LIMIT/OFFSET INSERT


Patrones Paginación Inserción

UPDATE DELETE
Actualización Borrado

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 53


SQL DML (Data Manipulation Language)

SELECT WHERE GROUP BY JOIN


Agrupación y
Consulta Filtrado Unión de tablas
agregación

HAVING ORDER BY UNION DISTINCT


Filtrado de Eliminación de
Ordenación Combinación
agregaciones duplicados

LIKE LIMIT/OFFSET INSERT


Patrones Paginación Inserción

UPDATE DELETE
Actualización Borrado

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 54


SQL DML (Data Manipulation Language)

SELECT WHERE GROUP BY JOIN


Agrupación y
Consulta Filtrado Unión de tablas
agregación

HAVING ORDER BY UNION DISTINCT


Filtrado de Eliminación de
Ordenación Combinación
agregaciones duplicados

LIKE LIMIT/OFFSET INSERT


Patrones Paginación Inserción

UPDATE DELETE
Actualización Borrado

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 55


SQL DML (Data Manipulation Language)

Consulta – SELECT clause

Se usa para extraer la información de la base de datos. El resultado de la


consulta se almacena en otra “tabla” denominada result-set. Normalmente
denominamos a una consulta QUERY.

SELECT <column_list>
FROM <table_list>
[WHERE <conditions>];

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 56


SQL DML (Data Manipulation Language)

Consulta – SELECT clause


SELECT <column_list>

FROM <table_list>

[WHERE <conditions>];

o <column_list>: lista de todos los atributos a recuperar por la QUERY. Separados por
comas. En el caso de no seleccionar atributos se emplea el asterisco (*). Es posible
renombrar una columna (o tabla) empleando AS. Se emplea sobre todo cuando se realizan
cruces de tablas que tengan campos con el mismo nombre, así evitamos ambigüedades.

o <table_list>: lista de las tablas que procesará la QUERY. Separadas por comas.

o <conditions>: expresión booleana que deberán cumplir los registros (tuplas) que devolverá
la QUERY. Es opcional, no tienen porque establecerse filtros.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 57


SQL DML (Data Manipulation Language)

Caso práctico 4 – BD employees


o Obtener un listado de todos los empleados.

o Seleccionar únicamente el first_name, last_name y hire_date.

o Renombrar los campos de la siguiente manera:

▪ first_name – nombre
▪ last_name – apellido
▪ hire_date – fecha_contratacion

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 58


SQL DML (Data Manipulation Language)

Filtrado – WHERE clause


Se usa dentro de una consulta (QUERY) para filtrar la información a recuperar de una base de
datos. Dentro de la cláusula WHERE podemos emplear los operadores condicionales vistos
anteriormente.

SELECT <column_list>
FROM <table_list>
WHERE <condition> [AND|OR <condition>];

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 59


SQL DML (Data Manipulation Language)

Caso práctico 5 – BD employees


o ¿Qué empleados son responsables de departamento?

o ¿Cuál es el salario actual de “Kenroku Malabarba”? ¿Ha tenido más de un salario?


¿Cuáles?

o ¿Quién fue el director del departamento “Human Resources” entre el 01/01/1985 y el


21/03/1992 (ambas fechas inclusive)?

o Seleccionar todos los campos de las tablas departments y dept_manager. ¿Qué


ha pasado?

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 60


SQL DML (Data Manipulation Language)

Unión de tablas – JOIN clause (I)


Las uniones de tablas se emplean para combinar registros o filas de dos o más tablas. Para
realizar la unión es necesario que dichas tablas tengan campos en común (PKs y FKs).

Existen distintos tipos de JOIN:


o INNER JOIN: devuelve todos los registros para los que hay coincidencia entre ambas
tablas

o LEFT JOIN: devuelve todos los registros de la tabla de la izquierda, y las filas que
coinciden de la tabla de la derecha.

o RIGHT JOIN: devuelve todos los registros de la tabla de la derecha, y las filas que
coinciden de la tabla de la izquierda.

o FULL OUTER JOIN: devuelve todas las filas haya o no coincidencia.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 61


SQL DML (Data Manipulation Language)

Unión de tablas – INNER JOIN clause (II)


Devuelve todos los registros para los que hay coincidencia entre ambas tablas.

SELECT <column_list>
FROM TableA A
INNER JOIN TableB B
ON A.KEY = B.KEY;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 62


SQL DML (Data Manipulation Language)

Caso práctico 6 – BD employees

o Crear una consulta que devuelva el nombre y apellidos de un empleado junto con su
salario actual.

o Añadir al resultado de la consulta anterior el nombre del departamento del empleado.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 63


SQL DML (Data Manipulation Language)

Unión de tablas – LEFT JOIN clause (III)


Devuelve todas las filas de la tabla de la izquierda (tabla A), con las filas coincidentes de la tabla de
la derecha (tabla B).

El resultado será NULL en el lado derecho cuando no haya ninguna coincidencia.

SELECT <column_list>
FROM TableA A LEFT JOIN
TableB B ON A.KEY = B.KEY;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 64


SQL DML (Data Manipulation Language)

Unión de tablas – LEFT JOIN clause (III)


Devuelve todas las filas de la tabla de la izquierda (tabla A), con las filas coincidentes de la tabla de
la derecha (tabla B).

El resultado será NULL en el lado derecho cuando no haya ninguna coincidencia.

SELECT <column_list>
FROM TableA A LEFT JOIN
TableB B ON A.KEY = B.KEY;

Es posible eliminar todo el lado derecho de los resultados.

SELECT <column_list>
FROM TableA A LEFT JOIN
TableB B ON A.KEY = B.KEY
WHERE B.KEY IS NULL;
Afi Escuela de Finanzas, 2021. Todos los derechos reservados 65
SQL DML (Data Manipulation Language)

Caso práctico 7 – BD employees


o Crear una consulta que devuelva el código de un empleado y el código del departamento
del que el empleado es responsable. La consulta debe devolver todos los empleados.

o Modificar la consulta anterior para quedarte únicamente con aquellos empleados que no
son responsables.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 66


SQL DML (Data Manipulation Language)

Unión de tablas – RIGHT JOIN clause (IV)


Devuelve todas las filas de la tabla de la derecha (tabla A), con las filas coincidentes de la tabla de la
izquierda (tabla B).

El resultado será NULL en el lado izquierdo cuando no haya ninguna coincidencia.

SELECT <column_list> FROM


TableA A RIGHT JOIN TableB B
ON A.KEY = B.KEY;

Es posible eliminar todo el lado izquierdo de los resultados.

SELECT <column_list> FROM


TableA A RIGHT JOIN TableB B
ON A.KEY = B.KEY
WHERE B.KEY IS NULL;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 67


SQL DML (Data Manipulation Language)

Caso práctico 8 – BD employees


o Cambiar la consulta anterior para que funcione con un RIGHT JOIN.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 68


SQL DML (Data Manipulation Language)

Unión de tablas – FULL OUTER JOIN clause (V)


Devuelve todas las filas, aunque no haya coincidencia.

SELECT <column_list>
FROM TableAA
FULL OUTER JOIN TableB B
ON A.KEY = B.KEY;

SELECT <column_list>
FROM TableAA
FULL OUTER JOIN TableB B
ON A.KEY = B.KEY
WHERE A.KEY IS NULL
OR B.KEY IS NULL

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 69


SQL DML (Data Manipulation Language)

Unión de tablas – JOIN clause (VI)

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 70


SQL DML (Data Manipulation Language)

Agrupación y agregación – GROUP BY clause (I)


Agrupan los resultados por una o más columnas. Se emplea junto con las funciones de
agregación.

SELECT <column_list>, aggregate_function(<column>)


FROM <table_list>
[WHERE <conditions>]
GROUP BY <column_list>;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 71


SQL DML (Data Manipulation Language)

Agrupación y agregación – GROUP BY clause (II)


Las funciones de agregación realizan una determinada operación sobre una de las columnas
de la tabla. Las funciones de agregación más extendidas se pueden ver en la siguiente tabla:

Función Operación
AVG(column) Calcula la media de la columna.
COUNT(column) Cuenta el número de filas.
FIRST(column) Devuelve el primer valor.
LAST(column) Devuelve el último valor.
MAX(column) Devuelve el valor máximo.
MIN(column) Devuelve el valor mínimo.
SUM(column) Calcula la suma de todos los registros de la columna.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 72


SQL DML (Data Manipulation Language)

Caso práctico 9 – BD employees


o ¿Cuántos empleados hay de cada sexo?

o ¿Cuál es el salario medio actual de la empresa?

o ¿Cuántos empleados tiene cada departamento?

o ¿Cuál es el empleado que ha cobrado el mínimo salario?

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 73


SQL DML (Data Manipulation Language)

Filtrar agrupaciones – HAVING clause


Se utiliza dentro de una consulta (QUERY) para filtrar la información a recuperar de una base
de datos tras una agrupación y/o agregación.

SELECT <column_list>, aggregate_function(<column>)


FROM <table_list>
[WHERE <conditions>]
GROUP BY <column_list>
HAVING <having_conditions>;

La expresión booleana de <having_conditions> se ejecuta en último lugar, tras aplicar las


agrupaciones y funciones de agregación pertinentes. Se usarán funciones de agregación
dentro de dicha condición.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 74


SQL DML (Data Manipulation Language)

Caso práctico 10 – BD employees


o ¿Qué nombres de empleado (columna first_name) se repiten más de una vez? ¿Cuántas
veces?

o ¿Alguno de los empleados ha sido director de más de un departamento?

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 75


SQL DML (Data Manipulation Language)

Ordenación – ORDER BY clause


Se utiliza para ordenar los resultados de una QUERY por una o más columnas del result-set.
Se puede establecer ordenación ascendente o descendente (por defecto, la ordenación es
ascendente). El criterio de ordenación puede ser diferente para cada columna.

SELECT <column_list>
FROM <table_list>
[WHERE <conditions>]
ORDER BY <column1> ASC|DESC, <column2> ASC|DESC;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 76


SQL DML (Data Manipulation Language)

Caso práctico 11 – BD employees

o Obtener un listado de empleados con su nombre, apellidos y cargo. Ordena el listado según
el cargo de manera ascendente.

o Acabar de ordenar el listado anterior, por nombre y apellidos de manera ascendente.

o Obtener un listado de los empleados según su salario actual, ordenar de manera


descendente.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 77


SQL DML (Data Manipulation Language)

Combinación – UNION operator


Permite combinar varios result-sets en uno solo. Cada result-set tiene que tener el mismo
número de columnas, ser del mismo tipo y estar en el mismo orden. Por defecto, no permite
valores duplicados. Para permitir duplicados se utiliza el modificador ALL.

SELECT <column_list>
FROM table1
UNION [ALL]
SELECT <column_list>
FROM table2
UNION [ALL]
SELECT <column_list>
FROM table3;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 78


SQL DML (Data Manipulation Language)

Caso práctico 12 – BD employees

o Juntar las tablas “salaries” y “dept_emp”, teniendo en cuenta únicamente la


columna “emp_no”.

o Repetir el apartado anterior pero permitiendo duplicados.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 79


SQL DML (Data Manipulation Language)

Eliminación de duplicados – DISTINCT operator


El operador DISTINCT devuelve únicamente valores diferentes de una o más columnas
(elimina duplicados). Se puede producir el mismo efecto mediante un GROUP BY.

SELECT DISTINCT <column_list>


FROM <table_list>
[WHERE <conditions>];

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 80


SQL DML (Data Manipulation Language)

Caso práctico 13 – BD employees


o Hallar las fechas de contrato de los empleados sin repeticiones y ordenadas de forma
ascendente.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 81


SQL DML (Data Manipulation Language)

Patrones – LIKE operator


El operador LIKE empleado sobre una cadena detecta patrones. Dentro del patrón se pueden
emplear wildcards.

SELECT <column_list>
FROM <table_list>
WHERE <column> LIKE pattern;
Un wildcards permite sustituir uno o varios caracteres por otros en una cadena de texto.
Wildcard Descripción
% Sustitución de cero o más caracteres
_ Sustitución de un único carácter.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 82


SQL DML (Data Manipulation Language)

Caso práctico 14 – BD employees

o Encontrar aquellos puestos que comienzan por ‘Sen’.


o Encontrar los empleados que tienen la cadena ‘aa’ o ‘bb’ en su nombre.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 83


SQL DML (Data Manipulation Language)

Paginación – LIMIT/OFFSET operator


Se emplea para especificar cuántos registros se quieren devolver. No es estándar, por lo que
otros lenguajes SQL usarán otros operadores y/o sintaxis.

SELECT <column_list>
FROM <table_list>
[WHERE <conditions>]
LIMIT n OFFSET m;

o LIMIT n: determina el número de registros a devolver.


o OFFSET m: determina la posición inicial a devolver (produciendo un desplazamiento desde
el primer registro).

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 84


SQL DML (Data Manipulation Language)

Caso práctico 15 – BD employees


o Hacer un ranking con los 10 empleados que más ganan.

o ¿Quiénes están entre el puesto 20 y 30?

o Extraer los 3 últimos empleados contratados.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 85


SQL DML (Data Manipulation Language)

Funciones SQL
Igual que las funciones de agregación, realizan una determinada operación sobre los valores
de una de las columnas.

Función Operación
UCASE(column) Convierte el valor de la columna a mayúsculas.
LCASE(column) Convierte el valor de la columna a minúsculas.
LENGTH(column) Devuelve la longitud de la columna (número de
caracteres).
ROUND(column, decimals) Redondea el valor de una columna a los decimales
especificados.
NOW() Devuelve el día y la hora del sistema.
IFNULL(column, value) Convierte el valor de la columna por el parámetro value
en el caso de que sea NULL.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 86


SQL DML (Data Manipulation Language)

Caso práctico 16 – BD employees


o Crear una consulta que devuelva el nombre de un empleado en mayúscula y el apellido
en minúsculas.

o Obtener un listado de todos los empleados cuyo apellido tenga más de 10 caracteres.

o Encontrar aquellos empleados que tuvieron una actualización de salario entre 2000 y hoy.
Ordenar el resultado por fecha de contratación de manera descendente y por el nombre
ascendentemente.

o Calcular el salario medio actual de los empleados y redondear a dos decimales.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 87


SQL DML (Data Manipulation Language)

Inserción – INSERT statement


Se utiliza para insertar nuevos registros en una tabla de base de datos.

INSERT INTO <table_name>[(<column_list>)]


VALUES (<value_list>);

o <table_name>: tabla donde se insertará el nuevo registro.


o <column_list>: lista de las columnas o campos de la tabla de base de datos a rellenar. Si
no se establecen, la base de datos entenderá que se pasarán todos lo campos de la tabla y
en el mismo orden que fueron creados.
o <value_list>: valores a insertar en el nuevo registro de la tabla.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 88


SQL DML (Data Manipulation Language)

Actualización – UPDATE statement


Se utiliza para actualizar registros existentes en una tabla de base de datos.

UPDATE <table_name>
SET <column1> = <value1>, <column2> = <value2>
[WHERE <conditions>];

o <table_name>: tabla donde se actualizarán los registros.


o <column1> = <value1>…: nuevos valores para las columnas que sea necesario actualizar.
o <conditions>: es posible actualizar sólo determinados registros que cumplen una condición.

¡Atención! Si no se establecen condiciones se actualizarán todos los registros de la tabla.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 89


SQL DML (Data Manipulation Language)

Borrado – DELETE statement


Se utiliza para eliminar registros existentes en una tabla de base de datos.

DELETE
FROM <table_name>
[WHERE <conditions>];

o <table_name>: tabla donde se efectuará la operación de borrado de registros.


o <conditions>: borrará aquellos registros que cumplan la expresión booleana.

¡Atención! Si no se establecen condiciones se borrarán todos los registros de la tabla.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 90


SQL DML (Data Manipulation Language)

Borrado – TRUNCATE statement


Para eliminar el contenido al completo de una tabla es más eficiente emplear la sentencia
TRUNCATE, en lugar que un DELETE FROM sin clausula WHERE. Tras ejecutar la sentencia
la tabla estará vacía.

TRUNCATE TABLE <table_name>;

o <table_name>: nombre de tabla a truncar.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 91


SQL DML (Data Manipulation Language)

Caso práctico 17 - BD employees


o Modificar/actualizar la fecha de nacimiento del empleado 10046.

o Eliminar el departamento Customer Service.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 92


SQL DDL (Data Definition
4 Language)

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 93


SQL DDL (Data Definition Language)

Creación/Eliminación de base de datos –


CREATE/DROP DATABASE statement
• Sentencia para crear una base de datos vacía.

CREATE DATABASE <database_name>;


• Sentencia para eliminar una base de datos.

DROP DATABASE <database_name>;

<database_name>: nombre de la base de datos a crear o eliminar.

¡Atención! Si eliminamos una base de datos perderemos todo su contenido,


tanto datos como objetos.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 94


SQL DDL (Data Definition Language)

Uso de base de datos – USE DATABASE


statement
Sentencia para usar una base de datos en concreto.

USE <database_name>;
Desde el momento en que ejecutemos esta sentencia todas las operaciones (querys, updates,
creates, etc.) se ejecutarán en la base de datos seleccionada.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 95


SQL DDL (Data Definition Language)

Uso de base de datos – USE DATABASE


statement

Desde MySQL Workbench, podemos seleccionar la base de datos


en uso haciendo botón derecho sobre la misma y seleccionando
la opción “Set as Default Schema”.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 96


SQL DDL (Data Definition Language)

Creación de tablas – CREATE TABLE statement


Sentencia usada para crear nuevas tablas en base de datos.

CREATE TABLE <table_name>


(
<column_name1> data_type1,
<column_name2> data_type2,
<column_name3> data_type3,

);
o <table_name>: nueva tabla a crear.
o <column_name1> data_type1…: columnas de la tabla junto con el tipo de datos que tiene
cada una de ellas.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 97


SQL DDL (Data Definition Language)

Creación de tablas – Restricciones


Las restricciones (CONSTRAINTS) sirven para establecer reglas y comprobaciones sobre los
datos. En el caso de que no se cumpla la restricción, la acción realizada sobre la tabla
(inserción o actualización) se aborta y el motor de base de datos lanzará un error. Existen los
siguientes tipos:

▪ PRIMARY KEY
▪ FOREIGN KEY
▪ DEFAULT
▪ NOT NULL
▪ UNIQUE
▪ CHECK

¡Atención! Las restricciones garantizan la integridad de la información de la base de datos, pero a su vez
consumen recursos en el momento de inserción/actualización/borrado. Sacrifican rendimiento por integridad.
Esto puede ser problemático en entornos con grandes volúmenes de información, en los que la velocidad de
procesado es crítica.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 98


SQL DDL (Data Definition Language)

Creación de tablas – PRIMARY KEY constraint


Es posible añadir una clave primaria a una tabla en el momento de creación de la misma. La
clave primaria debe contener valores únicos y no nulos. Al crear una clave primaria se creará
un índice asociado.

CREATE TABLE <table_name>


(
<column_name> data_type,
…,
[CONSTRAINT <pk_name>] PRIMARY KEY (<column_name>, …)
);
o <pk_name>: nombre de la clave primaria a crear. El nombre es opcional, si no se pone uno,
el sistema de base de datos asignará uno por defecto.
o <column_name>…: columna o columnas que formarán parte de la clave primaria de la
tabla.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 99


SQL DDL (Data Definition Language)

Creación de tablas – FOREIGN KEY constraint


Es posible añadir una clave foránea a una tabla en el momento de creación de la misma. La
clave foránea hace referencia a una campo que es clave primaria de otra tabla.

CREATE TABLE <table_name> (


<column_name> data_type,
…,
[CONSTRAINT <fk_name>] FOREIGN KEY (<column_name>)
REFERENCES <table_name_ref>(<pk_table_name_ref>)
);
o <fk_name>: nombre de la clave foránea a crear. El nombre es opcional, si no se pone uno,
el sistema de base de datos asignará uno por defecto.
o <column_name>…: columna que tiene la restricción.
o <table_name_ref>…: nombre de la tabla a la que hace referencia la clave foránea.
o <pk_table_name_ref>…: campo de la tabla a la que hace referencia la clave foránea.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Creación de tablas – DEFAULT constraint


Permite establecer un valor por defecto para una columna en el caso de dejarla vacía en el
momento de la inserción.

CREATE TABLE <table_name>


(
<column_name> data_type DEFAULT <default_value>,
…,
);
o <default_value>…: valor por defecto de la columna. Tiene que estar acorde con el tipo de
dato que almacena la columna.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Creación de tablas – NOT NULL constraint


Establece que un campo/columna no puede contener nunca valores nulos.

CREATE TABLE <table_name>


(
<column_name> data_type NOT NULL,
…,
);

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Creación de tablas – UNIQUE constraint


Establece que un campo/columna no puede contener nunca valores repetidos, su valor siempre
tiene que ser único.

CREATE TABLE <table_name>


(
<column_name> data_type UNIQUE,
…,
);

Las columnas de una clave primaria, simplemente por el hecho de serlo, siempre tienen dos
restricciones: son únicas (UNIQUE) y no puede contener valores nulos (NOT NULL).

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Creación de tablas – CHECK constraint


Es posible añadir condiciones de manera que limiten los valores que pueden tomar los registros
en una columna. Por ejemplo: column_value1 > 10 AND column_value2 = 1000

CREATE TABLE <table_name>


(
<column_name> data_type,
…,
[CONSTRAINT <chk_name>] CHECK (<chk_condition>)
);

o <chk_name>: nombre de la comprobación/restricción que se creará. El nombre es opcional,


si no se pone uno, el sistema de base de datos asignará uno por defecto.
o <chk_condition>…: expresión booleana para comprobar el contenido del registro.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (I)
Mediante esta sentencia se pueden añadir nuevas columnas a una tabla de base de datos.
Las columnas nuevas se añadirán al final de la tabla.

ALTER TABLE <table_name>


ADD COLUMN <column_name> <data_type>;

Es posible establecer restricciones como las que hemos visto antes en el momento de creación
de las nuevas columnas.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (II)
Mediante esta sentencia se pueden eliminar columnas existentes de una tabla de base de
datos.

ALTER TABLE <table_name>


DROP COLUMN <column_name>;

¡Atención! El proceso de eliminación de columnas debe realizarse con cuidado de que no se


pierda información.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (III)
Mediante esta sentencia se puede modificar el tipo de dato que contiene una columna de una
tabla de base de datos.

ALTER TABLE <table_name>


MODIFY COLUMN <column_name> <data_type>;

¡Atención! Al cambiar una columna de tipo de dato los registros ya guardados en la tabla deben ser
compatibles con el tipo de dato. En caso contrario se producirá un error o una perdida de información
(por ejemplo al cambiar la precisión de un campo numérico).

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (IV)
Mediante esta sentencia se puede modificar el nombre de una columna de una tabla de
base de datos.

ALTER TABLE <table_name>


CHANGE <old_column_name> <new column_name> <data_type>;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (V)
También es posible añadir una clave primaria a una tabla después de su creación (en el caso
de que no la tuviera).

ALTER TABLE <table_name>


ADD [CONSTRAINT < pk_name >] PRIMARY KEY (<column_name>, …);

Y borrarla:

ALTER TABLE <table_name>


DROP PRIMARY KEY;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 10


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (VI)
También es posible añadir claves foráneas a una tabla después de su creación.

ALTER TABLE <table_name>


ADD [CONSTRAINT <fk_name>] FOREIGN KEY (<column_name>)
REFERENCES <table_name_ref>(<pk_table_name_ref>);

Y borrarlas:

ALTER TABLE <table_name>


DROP FOREIGN KEY <fk_name>;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 110


SQL DDL (Data Definition Language)

Modificación de tablas – ALTER TABLE


statement (VII)
También es posible añadir restricciones a una tabla después de su creación.

ALTER TABLE <table_name>


ADD [CONSTRAINT <chk_name>] CHECK (<chk_condition>);

Y borrarlas.

ALTER TABLE <table_name>


DROP CONSTRAINT <chk_name>;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 111


SQL DDL (Data Definition Language)

Borrado de tablas – DROP TABLE statement

Elimina una tabla y todo su contenido de la base de datos.

DROP TABLE <table_name>;

¡Atención! Al borrar una tabla perderemos todo su contenido.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 112


SQL DDL (Data Definition Language)

Creación de vistas – CREATE VIEW statement


Sentencia empleada para la creación de una vista. Una vista es una tabla virtual que se crea
como el resultado de una SELECT.

CREATE VIEW <view_name> AS


SELECT <column_list>
FROM <table_list>
[WHERE <conditions>];

o <view_name>: nombre de la vista.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 113


SQL DDL (Data Definition Language)

Modificación de vistas – CREATE OR REPLACE


VIEW statement
Sentencia empleada para la modificación de una vista.

CREATE OR REPLACE VIEW <view_name> AS


SELECT <column_list>
FROM <table_list>
[WHERE <conditions>];

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 114


SQL DDL (Data Definition Language)

Eliminación de vistas – DROP VIEW statement

Sentencia empleada para la eliminación de una vista de la base de datos.

DROP VIEW <view_name>;

¡Atención! Al borrar una vista no se produce borrado de registros de base de datos.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 115


SQL DML (Data Manipulation Language)

Caso práctico 18 - BD employees


o Crear una base de datos para el caso práctico 1.

o Elaborar las sentencias de creación de las tablas del ejercicio 1.

o Insertar registros de prueba en las tablas creadas (INSERT).

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 116


Materiales
6

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 117


Materiales

Materiales
o Try SQL: https://www.codeschool.com/courses/try-sql
o SQL Tutorial: http://www.w3schools.com/sql/

o SQL and Relational Theory


o SQL Pocket Guide
o Learning SQL
o MySQL Cookbook

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 118


Anexo: SQL avanzado

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 119


SQL avanzado

Transacciones (I)
Mediante estas sentencias SQL podemos crear una transacción (operación ACID) sobre la
información de la base de datos. Al finalizar la modificación de información, podemos confirmar
los cambios o descartarlos.

START TRANSACTION;
<insert|update|delete statements>;
COMMIT|ROLLBACK;
o START TRANSACTION: comienza la transacción en base de datos.
o COMMIT: finaliza la transacción confirmando los cambios.
o ROLLBACK: finaliza la transacción descartando los cambios.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 120


SQL avanzado

Transacciones (II)
Por defecto, MySQL se ejecuta con el modo autocommit habilitado. Esto quiere decir, que
tan pronto se ejecuta una actualización de información en base de datos, los cambios se
convierten en permanentes. No se puede dar marcha atrás a los cambios. Se puede cambiar
este modo de funcionamiento con la siguiente sentencia.

SET autocommit = 0|1;

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 121


SQL avanzado

Ejecución de scripts
Para ejecutar un script (fichero con sentencias secuenciales de SQL) desde línea de
comandos.

source <file_path>;
o <file_path>: ruta al fichero/script que se desea ejecutar.

Desde MySQL Workbench existe una opción para ejecutar un fichero abierto en la aplicación
como un script.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 122


SQL avanzado

Carga de tablas desde ficheros


Es muy común realizar cargas de datos en tablas desde ficheros. Tanto en MySQL como en
otras bases de datos comerciales existe una sentencia que realiza dicha tarea. Es posible
configurar el formato del fichero donde se encuentran los datos, de manera que el gestor de
base de datos detecte el comienzo y final de cada columna correctamente.

LOAD DATA INFILE <file_path> INTO TABLE <table_name>


FIELDS TERMINATED BY ‘<field_separator>’
LINES TERMINATED BY ‘<line_separator>’;
o <file_path>: ruta al fichero que contiene los datos a cargar.
o <table_name>: nombre de la tabla donde se realizará la carga.
o <field_separator>: carácter separador de columnas/campos. Normalmente la coma o el
tabulador.
o<line_separator>: carácter separador de líneas. Normalmente el salto de línea.
https://dev.mysql.com/doc/refman/5.7/en/load-data.html

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 123


SQL avanzado

Descarga de tablas a ficheros


También es posible realizar el proceso inverso y guardar el resultado de una tabla/query a
fichero. Igual que antes, es posible configurar el formato del fichero de salida obtenido.

SELECT <column_list> INTO OUTFILE <file_path>


FIELDS TERMINATED BY ‘<field_separator>’
LINES TERMINATED BY ‘<line_separator>’
FROM <table_list>
[WHERE <conditions>];
o <file_path>: ruta del fichero que se generará con el resultado de la query.
o <field_separator>: carácter separador de columnas/campos. Normalmente la coma o el
tabulador.
o<line_separator>: carácter separador de líneas. Normalmente el salto de línea.
https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 124


SQL avanzado

Creación de usuarios
Los usuarios de una base de datos determinan quién puede tener acceso a la misma. También
se puede establecer a que objetos de la base de datos y que tipo de permisos sobre los objetos
tienen los usuarios (lectura, escritura, lectura/escritura…).

CREATE USER ‘<user>’@’<server>’ IDENTIFIED BY ‘<pass>’;

GRANT <priv_type> ON <object> TO ‘<user>’@’<server>’;


o<user>: nombre del usuario a crear.
o <server>: base de datos donde se creará el usuario.
o <priv_type>: tipo de privilegio que se dará al usuario.
o<object>: objeto o objetos para los que se dará privilegios al usuario.
https://dev.mysql.com/doc/refman/5.7/en/create-user.html
https://dev.mysql.com/doc/refman/5.7/en/grant.html

Afi Escuela de Finanzas, 2021. Todos los derechos reservados 125


© 2021 Afi Escuela de Finanzas. Todos los derechos reservados.

Afi Escuela de Finanzas, 2021. Todos los derechos reservados


Afi Escuela de Finanzas, 2016. Todos los derechos reservados

También podría gustarte