Está en la página 1de 54

SQL

Curso Especialización IA y Big Data


COMANDOS
Existen tres tipos de comandos SQL:

● Los DDL (Data Definition Language) que permiten crear y definir nuevas bases de
datos, campos e índices.
● Los DML (Data Manipulation Language) que permiten generar consultas para ordenar,
filtrar y extraer datos de la base de datos.
● Los DCL (Data Control Language) que se encargan de definir las permisos sobre los
datos

Revisaremos los dos primeros

Curso Especialización IA y Big Data 2


DDL
CREATE

Este comando crea un objeto dentro del gestor de base de datos. Puede ser una base de
datos, tabla, índice, procedimiento almacenado o vista.

CREATE DATABASE menagerie;

CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),species VARCHAR(20),


sex CHAR(1), birth DATE, death DATE);

Curso Especialización IA y Big Data 3


DDL
ALTER

Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar


campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla,
modificar un trigger, etc.

Ejemplo:

ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT;

Curso Especialización IA y Big Data 4


DDL
DROP

Este comando elimina un objeto de la base de datos. Se puede combinar con la sentencia
ALTER.

Ejemplos:

● DROP TABLE 'NOMBRE_TABLA';


● DROP DATABASE 'BASEDATOS';
● ALTER TABLE 'NOMBRE_TABLA' DROP COLUMN NOMBRE_COLUMNA;

Curso Especialización IA y Big Data 5


DDL
TRUNCATE

Este comando borra todo el contenido de una tabla, pero no borra la tabla.

Ejemplo:

● TRUNCATE TABLE 'NOMBRE_TABLA';

Curso Especialización IA y Big Data 6


DML
INSERT

Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una
base de datos relacional.

Forma básica:

● INSERT INTO ''tabla'' (''columna1'', [''columna2,...'']) VALUES


(''valor1'', [''valor2,...''])

Ejemplo:

● INSERT INTO agenda_telefonica VALUES ('Jhonny Aguiar', 080473968);

Curso Especialización IA y Big Data 7


DML
UPDATE

Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.

Ejemplo:

● UPDATE mi_tabla SET campo1 = 'nuevo valor campo1' WHERE campo2 = 'N';

Curso Especialización IA y Big Data 8


DML
DELETE

Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

Forma básica:

● DELETE FROM 'tabla' WHERE 'columna1' = 'valor1'

Ejemplo:

● DELETE FROM My_table WHERE field2 = 'N';

Curso Especialización IA y Big Data 9


CLAUSULAS
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea
seleccionar o manipular.

FROM Utilizada para especificar la tabla de la cual se van a seleccionar los


registros

GROUP BY Utilizada para separar los registros seleccionados en grupos específicos

HAVING Utilizada para expresar condición que debe satisfacer cada grupo

ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un


orden específico

WHERE Utilizada para determinar los registros seleccionados en la clausula FROM

Curso Especialización IA y Big Data 10


CLAUSULAS
SELECT campos FROM tabla

WHERE campo=X

ORDER BY campo2

GROUP BY campos3 HAVING suma>3

Curso Especialización IA y Big Data 11


OPERADORES
Operadores Lógicos : AND, OR y NOT

Operadores de comparación: <, >, <>,<=, >=, BETWEEN, LIKE, In

Curso Especialización IA y Big Data 12


FUNCIONES DE AGREGADO
Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros
para devolver un único valor que se aplica a un grupo de registros.

Funciones:

● AVG
● COUNT
● SUM
● MAX
● MIN

Curso Especialización IA y Big Data 13


CONSULTAS
Consultas de selección

Las consultas de selección se utilizan para indicar al motor de datos que devuelva
información de las bases de datos, esta información es devuelta en forma de conjunto de
registros. Este conjunto de registros es modificable.

Curso Especialización IA y Big Data 14


CONSULTAS DE SELECCIÓN BÁSICAS
● SELECT Campos FROM Tabla;
● SELECT Nombre, Telefono FROM Clientes;

Ordenar los registros ORDER BY

● SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY


CodigoPostal DESC , Nombre ASC;

Curso Especialización IA y Big Data 15


CONSULTAS CON PREDICADO
TOP

Devuelve un cierto número de registros que entran en un rango especificado por una
cláusula ORDER BY.

● SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;

Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25


registros de la tabla Estudiantes.
Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de
registros.
● SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota
DESC;

Curso Especialización IA y Big Data 16


CONSULTAS CON PREDICADO
*

El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la
instrucción SQL:

● SELECT * FROM Empleados;

Curso Especialización IA y Big Data 17


CONSULTAS CON PREDICADO
DISTINCT

Omite los registros que contienen datos duplicados en los campos seleccionados. Para que
los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta
deben ser únicos:

● SELECT DISTINCT Apellido FROM Empleados;

Curso Especialización IA y Big Data 18


CRITERIOS DE SELECCIÓN
Operadores lógicos

● SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50;
● SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100;
● SELECT * FROM Empleados WHERE NOT Estado = 'Soltero';
● SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR
(Provincia = 'Madrid' AND Estado = 'Casado');

Curso Especialización IA y Big Data 19


CRITERIOS DE SELECCIÓN
Operador BETWEEN

● SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;

Curso Especialización IA y Big Data 20


CRITERIOS DE SELECCIÓN
Operador LIKE

Se utiliza para comparar una expresión de cadena con una expresión SQL.

● SELECT * FROM personas WHERE nombre LIKE 'AN%'

% Cualquier número de caracteres, incluso 0.


_ Un único carácter.

Operador IN

● SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona',


'Sevilla');

Curso Especialización IA y Big Data 21


AGREGACIÓN
AVG

● SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100;

MAX, MIN

● SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Costa Rica';


● SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Costa Rica';

SUM

● SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;

Curso Especialización IA y Big Data 22


AGREGACIÓN
GROUP BY

● SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;

HAVING

● SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING


Sum(Stock) > 100 AND NombreProducto Like BOS*;

Curso Especialización IA y Big Data 23


CLAVES
Claves Primarias y Ajenas:

CREATE TABLE Orders (

OrderID int NOT NULL,

OrderNumber int NOT NULL,

PersonID int,

PRIMARY KEY (OrderID),

FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)

Curso Especialización IA y Big Data 24


CONSULTAS MULTITABLA
Trabajaremos con estas tablas:

Curso Especialización IA y Big Data 25


CONSULTAS MULTITABLA
JOIN

La sentencia SQL JOIN se utiliza para relacionar varias tablas. Nos permitirá obtener un
listado de los campos que tienen coincidencias en ambas tablas:

● select nombre, telefono, accion, cantidad from Clientes join Acciones on


Clientes.cid=Acciones.cid;

+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| maria | 222 | REDHAT | 10 |
| jesus | 4444 | NOVELL | 20 |
| jesus | 4444 | SUN | 30 |
+--------+----------+--------+----------+

Curso Especialización IA y Big Data 26


CONSULTAS MULTITABLA
LEFT JOIN

La sentencia LEFT JOIN nos dará el resultado anterior más los campos de la tabla de la
izquierda del JOIN que no tienen coincidencias en la tabla de la derecha:

● select nombre, telefono, accion, cantidad from Clientes left join


Acciones on Clientes.cid=Acciones.cid;

+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| jose | 111 | NULL | NULL |
| maria | 222 | REDHAT | 10 |
| manuel | 333 | NULL | NULL |
| jesus | 4444 | NOVELL | 20 |
| jesus | 4444 | SUN | 30 |
+--------+----------+--------+----------+ 27
Curso Especialización IA y Big Data
CONSULTAS MULTITABLA
RIGHT JOIN

Idéntico funcionamiento que en el caso anterior pero con la tabla que se incluye en la
consulta a la derecha del JOIN:

● select nombre, telefono, accion, cantidad from Clientes right join


Acciones on Clientes.cid=Acciones.cid;

+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| maria | 222 | REDHAT | 10 |
| jesus | 4444 | NOVELL | 20 |
| jesus | 4444 | SUN | 30 |
| NULL | NULL | FORD | 100 |
+--------+----------+--------+----------+
Curso Especialización IA y Big Data 28
CONSULTAS MULTITABLA
UNION y UNION ALL

Podemos combinar el resultado de varias sentencias con UNION o UNION ALL. UNION no
nos muestra los resultados duplicados, pero UNION ALL si los muestra:

select nombre, telefono, accion,


cantidad from Clientes left join
Acciones on Clientes.cid=Acciones.cid
+--------+----------+--------+----------+
where accion is null | nombre | telefono | accion | cantidad |
union +--------+----------+--------+----------+
select nombre, telefono, accion, | jose | 111 | NULL | NULL |
| manuel | 333 | NULL | NULL |
cantidad from Clientes right join | NULL | NULL | FORD | 100 |
Acciones on Clientes.cid=Acciones.cid +--------+----------+--------+----------+
where nombre is null;
Curso Especialización IA y Big Data 29
RESUMEN JOIN

Curso Especialización IA y Big Data 30


VISTAS
La cláusula CREATE VIEW permite la creación de vistas. La cláusula asigna un nombre a la
vista y permite especificar la consulta que la define. Su sintaxis es:

● CREATE VIEW id_vista [(columna,…)]AS especificación_consulta;

create view ClientesConAcciones as select nombre, telefono, accion,


cantidad from Clientes join Acciones on Clientes.cid=Acciones.cid;

Opcionalmente se puede asignar un nombre a cada columna de la vista. Si se especifica, la


lista de nombres de las columnas debe de tener el mismo número de elementos que el
número de columnas producidas por la consulta. Si se omiten, cada columna de la vista
adopta el nombre de la columna correspondiente en la consulta.

Curso Especialización IA y Big Data 31


FUNCIONES SQL PARA BIG DATA
● Funciones de agregación ● Funciones de cadena
○ Count ○ Lower and Upper
○ Sum ○ Concat
○ Average ○ Trim
○ Min y Max
● Funciones matemáticas
○ Absolute
○ Ceil and Floor
○ Truncate
○ Módulo

Curso Especialización IA y Big Data 32


FUNCIONES SQL PARA BIG DATA
● Funciones de Fecha y hora
○ Date and Time
■ Extraen los valores de fecha y hora de un campo que incluye ambos date()
y time()
○ Extract
■ Para extraer algún valor de un campo de fecha y hora
■ La sintaxis es: extract(unit from date)
■ Unit puede ser year, month, minute o second.
○ Date format
■ Para dar formato a la fecha
■ La sintaxis es: date_format(date, format)

Curso Especialización IA y Big Data 33


FUNCIONES SQL PARA BIG DATA
Funciones de Ventana

○ ¿Alguna vez ha querido recorrer los resultados de su consulta para obtener una
clasificación, una lista x superior o similar?
○ ¿Ha tenido algún proyecto de análisis en el que deseaba preparar sus datos
correctamente para una herramienta de visualización, pero le resultó casi
imposible o tan complejo que no valía la pena?

Las funciones de la ventana pueden simplificar las consultas que necesitan encontrar totales
en ejecución, promedios móviles o lagunas en los datos

Curso Especialización IA y Big Data 34


FUNCIONES SQL PARA BIG DATA
● Funciones de Ventana
○ Las funciones de ventana son funciones importantes pero pueden ser difíciles de
entender. Por lo tanto, primero comenzamos por comprender la función básica de
la ventana.
○ Una función de ventana realiza un cálculo similar a una función agregada, pero
con un ligero giro. Mientras que las funciones agregadas regulares agrupan las
filas en un solo valor de salida, la función de ventana no hace eso.
○ La función de ventana funciona en un subconjunto de filas pero no reduce el
número de filas. Las filas conservan su identidad individual.

Curso Especialización IA y Big Data 35


FUNCIONES VENTANA O RANGO
Para entenderlo mejor, comparemos una función agregada simple sum ().

Aquí, obtenemos el valor agregado de todas las filas.

Curso Especialización IA y Big Data 36


FUNCIONES VENTANA O RANGO
Ahora usemos la función de ventana para esta función agregada y veamos qué sucede.

Como habrás notado, todavía obtenemos los valores de la suma agregada, pero están
segregados por los diferentes grupos de ciudades. Observe que calculamos la salida para
cada fila.

Curso Especialización IA y Big Data 37


FUNCIONES VENTANA O RANGO
Sintaxis:

función_ventana (<expresión>) OVER (<cláusula_partición> <cláusula_orden> <enmarcado>)

Curso Especialización IA y Big Data 38


FUNCIONES VENTANA
La parte antes de la cláusula OVER es la función agregada o una función de ventana.

La parte que sigue a la cláusula OVER se puede dividir en tres partes:

● <cláusula_partición> define la partición entre filas. La función de ventana opera


dentro de cada partición. La cláusula Partition by lo define.
● <cláusula_orden> ordena las filas dentro de la partición. La cláusula Order by lo
define.
● <enmarcado> establecer límites de inicio y fin dentro de una partición de ventana

Curso Especialización IA y Big Data 39


FUNCIONES VENTANA
OVER define una ventana o conjunto de filas que debe utilizar una función de ventana,
incluyendo cualquier orden.

Curso Especialización IA y Big Data 40


FUNCIONES VENTANA
PARTITION BY

● El particionamiento limita un conjunto a filas con el mismo valor en la columna de


particionamiento
● Sin una cláusula PARTITION BY definida, OVER () crea una sola partición de todas las
filas

Curso Especialización IA y Big Data 41


FUNCIONES VENTANA
ORDER BY

● El ordenamiento de ventanas proporciona un contexto al marco, si lo hay

Curso Especialización IA y Big Data 42


FUNCIONES VENTANA
[ <ROWS or RANGE clause>

● El enmarcado de ventana le permite establecer límites de inicio y fin dentro de una


partición de ventana
○ UNBOUNDED significa ir todo el camino al límite en la dirección especificada por
PRECEDING O FOLLOWING (comienzo o final)
○ CURRENT ROW indica inicio o final en la fila actual en la partición
○ ROWS BETWEEN le permite definir un rango de filas entre dos puntos

Curso Especialización IA y Big Data 43


FUNCIONES VENTANA O RANGO
Rank

La función de ventana simple es la función rank(). Como sugiere el nombre, clasifica las
filas dentro de un grupo de particiones según una condición.

Tiene la siguiente sintaxis:

Rank () Over (Partición por <expresión> Ordenar por <expresión>)

Usemos esta función para clasificar las filas en nuestra tabla según la cantidad de pedidos
dentro de cada ciudad.

Curso Especialización IA y Big Data 44


FUNCIONES VENTANA O RANGO
Usemos la función Rank() para clasificar las filas en nuestra tabla según la cantidad de
pedidos dentro de cada ciudad.

En consecuencia, las filas se han clasificado dentro de su respectivo grupo de partición (o


ciudad).
Curso Especialización IA y Big Data 45
FUNCIONES VENTANA O RANGO
Percent_value

Es una función de ventana importante que encuentra el rango relativo de una fila dentro de
un grupo. Determina el valor percentil de cada fila.

Su sintaxis es la siguiente:

Percent_rank () Over (Partición por <expresión> Ordenar por <expresión>)

Aunque la cláusula de partición es opcional.

Curso Especialización IA y Big Data 46


FUNCIONES VENTANA O RANGO
Usemos la función Percent_value para determinar el porcentaje de cantidad de cada cliente
en la tabla.

Curso Especialización IA y Big Data 47


FUNCIONES VENTANA O RANGO
Nth_value

A veces, desea saber qué fila tiene el valor más alto, el más bajo o el enésimo valor más
alto. Por ejemplo, el puntaje más alto en la escuela, el mejor vendedor, etc. se encuentra en
situaciones como estas en las que necesita la función de ventanas nth_value ().

Como resultado, la función devuelve el enésimo valor de fila de un conjunto ordenado de


filas. La sintaxis es la siguiente:

nth_value () orden (partición por <expresión> orden por <expresión>)

Curso Especialización IA y Big Data 48


FUNCIONES VENTANA O RANGO
Usamos Nth_value para averiguar quién fue el principal comprador de la tabla.

Curso Especialización IA y Big Data 49


FUNCIONES MISCALENA
Convert

Convierte el valor de salida en un tipo de datos específico. Además, puede pensar en ello
como una conversión, donde puede cambiar el tipo de datos del valor.

Su sintaxis es simple:

convert (valor, tipo)

Curso Especialización IA y Big Data 50


FUNCIONES MISCALENA
Isnull

Por lo general, si no especifica el valor sin valor para su atributo, es probable que termine
con algunos valores nulos en la columna. Pero puede lidiar con ellos fácilmente usando la
función isnull ().

Solo tienes que escribir la expresión


dentro de la función.
Devolverá 1 para un valor nulo
y 0 en caso contrario.

Curso Especialización IA y Big Data 51


FUNCIONES MISCALENA
If

Finalmente, la función más importante que usará en SQL es la función if (). Le permite
definir la condicionalidad if que se encuentra en cualquier lenguaje de programación.

Tiene una sintaxis simple:

if (expresión, valor_si_verdadero, valor_si_falso)

Curso Especialización IA y Big Data 52


EJERCICIOS
Cargar base de datos para ejemplos:

● mysql -u root -p world </home/luis/Escritorio/Temp/world.sql


● Show databases;
● Show tables;
● Select count(*) from city;
● Select count(*) from country;
● Select count(*) from countrylanguage;

Importar comandos sql:

● Desde la consola de MySQL: source /directorio/subdirectorio/archivo.sql


● Desde el teminal: mysql -u nombre-usuario -p nombre-de-la-bbdd <
fichero.sql
Curso Especialización IA y Big Data 53
BIBLIOGRAFIA
● https://www.analyticsvidhya.com/blog/2020/07/sql-functions-for-data-analysis-tasks/
● https://docs.microsoft.com/es-es/azure/databricks/spark/latest/spark-sql/language-man
ual/sql-ref-syntax-qry-select-window

Curso Especialización IA y Big Data 54

También podría gustarte