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 [Link] 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 [Link] = [Link];
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 [Link] = [Link];
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 [Link] = [Link];
Es posible eliminar todo el lado derecho de los resultados.
SELECT <column_list>
FROM TableA A LEFT JOIN
TableB B ON [Link] = [Link]
WHERE [Link] 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 [Link] = [Link];
Es posible eliminar todo el lado izquierdo de los resultados.
SELECT <column_list> FROM
TableA A RIGHT JOIN TableB B
ON [Link] = [Link]
WHERE [Link] 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 [Link] = [Link];
SELECT <column_list>
FROM TableAA
FULL OUTER JOIN TableB B
ON [Link] = [Link]
WHERE [Link] IS NULL
OR [Link] 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: [Link]
o SQL Tutorial: [Link]
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.
[Link]
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.
[Link]
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.
[Link]
[Link]
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