Structured Query Language
Lenguaje de consulta estructurada
¿Qué es SQL?:
El lenguaje de consulta estructurada (SQL) es un lenguaje de programación para almacenar y
procesar información en una base de datos relacional. Una base de datos relacional almacena
información en forma de tabla, con filas y columnas que representan diferentes atributos de datos y las
diversas relaciones entre los valores de datos. Puede usar las instrucciones SQL para almacenar,
actualizar, eliminar, buscar y recuperar información de la base de datos. También puede usar SQL para
mantener y optimizar el rendimiento de la base de datos.
¿Por qué es importante SQL?:
El lenguaje de consulta estructurada (SQL) es un lenguaje de consulta popular que se usa con
frecuencia en todos los tipos de aplicaciones. Los analistas y desarrolladores de datos aprenden y usan
SQL porque se integra bien con los diferentes lenguajes de programación. Por ejemplo, pueden incrustar
consultas SQL con el lenguaje de programación Java para crear aplicaciones de procesamiento de datos
de alto rendimiento con los principales sistemas de bases de datos SQL, como Oracle o MS SQL Server.
Además, SQL es muy fácil de aprender, ya que en sus instrucciones se utilizan palabras clave comunes
en inglés.
1) SELECT
Lección 8: [Link]
-- Obtiene todos los datos de la tabla "users"
SELECT * FROM users;
-- Obtiene todos los nombres de la tabla "users"
SELECT name FROM users;
-- Obtiene todos los identificadores y nombres de la tabla "users"
SELECT user_id, name FROM users;
2) DISTINCT
Lección 9.1: [Link]
-- Obtiene todos los datos distintos entre sí de la tabla "users"
SELECT DISTINCT * FROM users;
-- Obtiene todos los valores distintos referentes al atributo edad de la tabla "users"
SELECT DISTINCT age FROM users;
3) WHERE
Lección 9.2: [Link]
-- Filtra todos los datos de la tabla "users" con edad igual a 15
SELECT * FROM users WHERE age = 15;
-- Filtra todos los nombres de la tabla "users" con edad igual a 15
SELECT name FROM users WHERE age = 15;
-- Filtra todos los nombres distintos de la tabla "users" con edad igual a 15
SELECT DISTINCT name FROM users WHERE age = 15;
-- Filtra todas las edades distintas de la tabla "users" con edad igual a 15
SELECT DISTINCT age FROM users WHERE age = 15;
4) ORDER BY
Lección 9.3: [Link]
-- Ordena todos los datos de la tabla "users" por edad (ascendente por defecto)
SELECT * FROM users ORDER BY age;
-- Ordena todos los datos de la tabla "users" por edad de manera ascendente
SELECT * FROM users ORDER BY age ASC;
-- Ordena todos los datos de la tabla "users" por edad de manera descendente
SELECT * FROM users ORDER BY age DESC;
-- Obtiene todos los datos de la tabla "users" con email igual a sara@[Link] y los ordena por
edad de manera descendente
SELECT * FROM users WHERE email='sara@[Link]' ORDER BY age DESC;
-- Obtiene todos los nombres de la tabla "users" con email igual a sara@[Link] y los ordena
por edad de manera descendente
SELECT name FROM users WHERE email='sara@[Link]' ORDER BY age DESC;
5) LIKE
Lección 9.4: [Link]
-- Obtiene todos datos de la tabla "users" que contienen un email con el texto "[Link]" en su
parte final
SELECT * FROM users WHERE email LIKE '%[Link]';
-- Obtiene todos datos de la tabla "users" que contienen un email con el texto "sara" en su parte
inicial
SELECT * FROM users WHERE email LIKE 'sara%';
-- Obtiene todos datos de la tabla "users" que contienen un email una arroba
SELECT * FROM users WHERE email LIKE '%@%';
6) NOT, AND, OR
Lección 9.5: [Link]
-- Obtiene todos datos de la tabla "users" con email distinto a sara@[Link]
SELECT * FROM users WHERE NOT email = 'sara@[Link]';
-- Obtiene todos datos de la tabla "users" con email distinto a sara@[Link] y edad igual a 15
SELECT * FROM users WHERE NOT email = 'sara@[Link]' AND age = 15;
-- Obtiene todos datos de la tabla "users" con email distinto a sara@[Link] o edad igual a 15
SELECT * FROM users WHERE NOT email = 'sara@[Link]' OR age = 15;
7) LIMIT
Lección 9.6: [Link]
-- Obtiene las 3 primeras filas de la tabla "users"
SELECT * FROM users LIMIT 3;
-- Obtiene las 32 primeras filas de la tabla "users" con email distinto a sara@[Link] o edad
igual a 15
SELECT * FROM users WHERE NOT email = 'sara@[Link]' OR age = 15 LIMIT 2;
8) NULL
Lección 10.2: [Link]
-- Obtiene todos datos de la tabla "users" de la tabla "users" con email nulo
SELECT * FROM users WHERE email IS NULL;
-- Obtiene todos datos de la tabla "users" de la tabla "users" con email no nulo
SELECT * FROM users WHERE email IS NOT NULL;
-- Obtiene todos datos de la tabla "users" de la tabla "users" con email no nulo y edad igual a 15
SELECT * FROM users WHERE email IS NOT NULL AND age = 15;
9) IFNULL
Lección 10.14: [Link]
-- Obtiene el nombre, apellido y edad de la tabla "users", y si la edad es nula la muestra como 0
SELECT name, surname, IFNULL(age, 0) AS age FROM users;
10) MIN, MAX
Lección 10.3: [Link]
-- Obtiene el valor menor del campo edad de la tabla "users"
Select MIN(age) FROM users;
-- Obtiene el valor mayor del campo edad de la tabla "users"
Select MAX(age) FROM users;
11) COUNT
Lección 10.4: [Link]
-- Cuenta cuantas filas contiene la tabla "users"
Select COUNT(*) FROM users;
-- Cuenta cuantas filas contienen un dato no nulo en el campo edad de la tabla "users"
Select COUNT(age) FROM users;
12) SUM
Lección 10.5: [Link]
-- Suma todos los valores del campo edad de la tabla "users"
Select SUM(age) FROM users;
13) AVG
Lección 10.6: [Link]
-- Obitne la media de edad de la tabla "users"
Select AVG(age) FROM users;
14) IN
Lección 10.7: [Link]
-- Ordena todos los datos de la tabla "users" con nombre igual a brais y sara
SELECT * FROM users WHERE name IN ('brais', 'sara')
15) BETWEEN
Lección 10.8: [Link]
-- Ordena todos los datos de la tabla "users" con edad comprendida entre 20 y 30
SELECT * FROM users WHERE age BETWEEN 20 AND 30
16) ALIAS
Lección 10.9: [Link]
-- Establece el alias 'Fecha de inicio en programación' a la columna init_date
SELECT name, init_date AS 'Fecha de inicio en programación' FROM users WHERE name = 'Brais'
-- Consulta igual que la anterior. Representa la posibilidad de usar comillas dobles para cadenas
SELECT name, init_date AS "Fecha de inicio en programación" FROM users WHERE name = "Brais"
17) CONCAT
Lección 10.10: [Link]
-- Concatena en una sola columa los campos nombre y apellido
SELECT CONCAT('Nombre: ', name, ', Apellidos: ', surname) FROM users
-- Concatena en una sola columa los campos nombre y apellido y le establece el alias 'Nombre
completo'
SELECT CONCAT('Nombre: ', name, ', Apellidos: ', surname) AS 'Nombre completo' FROM users
18) GROUP BY
Lección 10.11: [Link]
-- Agrupa los resultados por edad diferente
SELECT MAX(age) FROM users GROUP BY age
-- Agrupa los resultados por edad diferente y cuenta cuantos registros existen de cada una
SELECT COUNT(age), age FROM users GROUP BY age
-- Agrupa los resultados por edad diferente, cuenta cuantos registros existen de cada una y los
ordena
SELECT COUNT(age), age FROM users GROUP BY age ORDER BY age ASC
-- Agrupa los resultados por edad diferente mayor de 15, cuenta cuantos registros existen de cada
una y los ordena
SELECT COUNT(age), age FROM users WHERE age > 15 GROUP BY age ORDER BY age ASC
19) HAVING
Lección 10.12: [Link]
-- Cuenta cuantas filas contienen un dato no nulo en el campo edad de la tabla "users" mayor que
3
SELECT COUNT(age) FROM users HAVING COUNT(age) > 3
20) CASE
Lección 10.13: [Link]
-- Obtiene todos los datos de la tabla "users" y establece condiciones de visualización de cadenas
de texto según el valor de la edad
SELECT *,
CASE
WHEN age > 18 THEN 'Es mayor de edad'
WHEN age = 18 THEN 'Acaba de cumplir la mayoría de edad'
ELSE 'Es menor de edad'
END AS '¿Es mayor de edad?'
FROM users;
-- Obtiene todos los datos de la tabla "users" y establece condiciones de visualización de valores
booleanos según el valor de la edad
SELECT *,
CASE
WHEN age > 17 THEN True
ELSE False
END AS '¿Es mayor de edad?'
FROM users;
21) INSERT
Lección 11.1: [Link]
-- Inserta un registro con identificador, nombre y apellido en la tabla "users"
INSERT INTO users (user_id, name, surname) VALUES (8, 'María', 'López')
-- Inserta un registro con nombre y apellido en la tabla "users"
INSERT INTO users (name, surname) VALUES ('Paco', 'Pérez')
-- Inserta un registro con identificador no correlativo, nombre y apellido en la tabla "users"
INSERT INTO users (user_id, name, surname) VALUES (11, 'El', 'Merma')
22) UPDATE
Lección 11.2: [Link]
-- Estable el valor 21 para la edad del registro de la tabla "users" con identificador igual a 11
UPDATE users SET age = '21' WHERE user_id = 11
-- Estable el valor 20 para la edad del registro de la tabla "users" con identificador igual a 11
UPDATE users SET age = '20' WHERE user_id = 11
-- Estable edad y una fecha para registro de la tabla "users" con identificador igual a 11
UPDATE users SET age = 20, init_date = '2020-10-12' WHERE user_id = 11
23) DELETE
Lección 11.3: [Link]
-- Elimina el registro de la tabla "users" con identificador igual a 11
DELETE FROM users WHERE user_id = 11;