5 ejercicios de base de datos sql
Sql Database Query Sql
En el mundo de la informática, las bases de datos desempeñan un papel crucial. Por esta razón, el papel del programador debe tener un amplio conocimiento de las bases de datos y su uso. Para interactuar con una base de datos, el lenguaje universal adoptado es SQL, que desde hace años se ha integrado como un estándar para gestionar las bases de datos.
¿Qué es una base de datos?
Según Oracle, una base de datos es un conjunto de información (o datos) estructurados y almacenados electrónicamente en un sistema informático. Por lo general, la base de datos es controlada por un sistema DBMS (Database Management System). Los datos, el sistema DBMS y las aplicaciones asociadas se refieren como sistema de base de datos, a menudo abreviado como base de datos. Una base de datos puede ser de varios tipos, el más utilizado y conocido es la base de datos relacional.
Para familiarizarse con las bases de datos, es necesario aprender que es sql.
¿Qué es sql?
El significado de SQL corresponde a un acrónimo: Structured Query Language, es un lenguaje de programación utilizado por casi todas las bases de datos relacionales para ejecutar consultas, manipular y definir datos, así como proporcionar control de acceso. Fue desarrollado por primera vez en la década de 1970 y aún es fundamental para la gestión de las bases de datos.
Una vez que se han establecido estos conceptos, para aprender el lenguaje SQL y la lógica detrás de las bases de datos relacionales, es importante practicar. Forma parte del proceso de aprendizaje, al igual que con todos los lenguajes de programación.
Para ello, veremos una serie de ejercicios sobre el lenguaje SQL, de dificultad gradual, para cubrir todas las peculiaridades del lenguaje.
- Escribe una instrucción SQL para crear un producto cartesiano entre vendedor y cliente, es decir, cada vendedor aparecerá para todos los clientes y viceversa para ese vendedor que pertenece a esa ciudad.
Nombre tabla: vendedor
Vendedor_id |
Nombre_vendedor |
Ciudad |
Comisión |
5001 |
Mario Rossi |
Napoli |
0.15 |
5002 |
Franco Neri |
Palermo |
0.13 |
5005 |
Gigi Proietti |
Roma |
0.11 |
5006 |
Michele Chetone |
Treviso |
0.14 |
5007 |
Davide Guidi |
Pordenone |
0.13 |
Nombre tabla: cliente
Cliente_id |
Nombre_cliente |
Ciudad |
Categoria |
Vendedor_id |
3002 |
Giuseppe Verdi |
Roma |
100 |
5001 |
3007 |
Max Angioni |
Roma |
200 |
5001 |
3005 |
Nicola di Bari |
Bari |
200 |
5002 |
3008 |
Antonio Clerici |
Napoli |
300 |
5002 |
3004 |
Simone Vespa |
Venezia |
300 |
5006 |
3009 |
Ezio Greggio |
Treviso |
100 |
5007 |
- A partir de la siguiente tabla, escribe una query SQL para encontrar todos los clientes. Ordena el conjunto de resultados por cliente_id. Devuelve el nombre_cliente, la ciudad y la categoría.
Nombre tabla: cliente
Cliente_id |
Nombre |
Ciudad |
Categoria |
Vendedor_id |
3002 |
Giuseppe Verdi |
Roma |
100 |
5001 |
3007 |
Max Angioni |
Roma |
200 |
5001 |
3005 |
Nicola di Bari |
Bari |
200 |
5002 |
3008 |
Antonio Clerici |
Napoli |
300 |
5002 |
3004 |
Simone Vespa |
Venezia |
300 |
5006 |
3009 |
Ezio Greggio |
Treviso |
100 |
5007 |
- Dadas las tablas proporcionadas en el ejercicio 1, escribe una consulta SQL para encontrar todos los clientes y el vendedor que trabaja para ellos. Devuelve el nombre del cliente y el nombre del vendedor.
- A partir de la siguiente tabla, escribe una consulta SQL para encontrar todos los correos electrónicos duplicados (sin mayúsculas) de los empleados. Devuelve email_id.
Nombre tabla: empleados
Empleados_id |
Nombre_empleados |
e-mail_id |
100 |
Giuseppe Verdi |
giu.verdi@abc.com |
101 |
Paolo Limiti |
limiti@abc.com |
102 |
Davide Guidi |
guidi@abc.com |
103 |
Antonio Clerici |
clerici@abc.com |
104 |
Simone Vespa |
vespa@abc.com |
- A partir de las siguientes tablas, escribe una consulta SQL para encontrar a aquellos estudiantes que hayan obtenido el 100% de las calificaciones en todas las materias durante todo el año. Devuelve el ID de la materia, el nombre de la materia y los estudiantes durante todo el año.
Nombre tabla: test_examen
Examen_id |
Materia_id |
Año_examen |
Num_estudiantes |
71 |
201 |
2017 |
5146 |
71 |
201 |
2018 |
3545 |
71 |
202 |
2018 |
5945 |
71 |
202 |
2019 |
2500 |
71 |
203 |
2017 |
2500 |
72 |
201 |
2018 |
3500 |
72 |
202 |
2017 |
3651 |
73 |
201 |
2018 |
2647 |
Muchas operaciones se pueden realizar utilizando el lenguaje SQL, es posible cruzar datos de diferentes formas, partiendo de simples tablas, realizando operaciones de cálculo sobre los datos contenidos, cuando sea posible, o creando nuevas vistas en base a la información que tenemos disponible. Es un requisito fundamental para la carrera de un programador, especialmente para un desarrollador web. Es uno de los lenguajes donde más importa la práctica, porque solo viendo los resultados de una consulta realmente entiendes cómo modelar datos y cómo los diversos operadores lógicos (y no lógicos) los tratan en SQL. Veamos las soluciones juntos:
-
La consulta a escribir en este ejercicio es muy básica. Para empezar, te ayuda a entender cómo funcionan las distintas palabras clave del lenguaje SQL (SELECT, FROM, etc…)
SELECT *
FROM vendedor a
CROSS JOIN cliente b
WHERE a.ciudad IS NOT NULL;
-
Ordenar tablas a menudo ayuda mucho a comprender cómo estructurar la consulta. En este ejercicio puede aprender la funcionalidad del operador de agrupación ORDER BY.
SELECT nombre,ciudad,categoria
FROM cliente
ORDER BY cliente_id;
-
En el párrafo anterior, hablamos de "datos cruzados". Este ejercicio te muestra cómo hacerlo, escribiendo una consulta muy simple entre dos tablas con alguna información en común.
SELECT cliente.nombre_cliente, nombre_vendedor
FROM cliente,vendedor
WHERE vendedor.vendedor_id = cliente.vendedor_id;
-
Este ejercicio un poco más articulado reúne todos los conceptos vistos hasta ahora, además nos ayuda a entender cómo crear una nueva vista (tabla) cruzando los datos de las existentes.
CREATE TABLE IF NOT EXISTS empleados (empleados_id int, nombre_empleado varchar(255), email_id varchar(255));
TRUNCATE TABLE empleados;
INSERT INTO empleados (empleados_id, nombre_empleados, email_id) VALUES ('100','Giuseppe Verdi', ' giu.verdi@abc.com ');
INSERT INTO empleados (empleados_id, nombre_empleados, email_id) VALUES ('101','Paolo Limiti', 'limiti@abc.com');
INSERT INTO empleados (empleados_id, nombre_empleados, email_id) VALUES ('102','Davide Guidi', 'guidi@abc.com');
INSERT INTO empleados (empleados_id, nombre_empleados, email_id) VALUES ('103','Antonio Clerici', 'clerici@abc.com');
INSERT INTO empleados (empleados_id, nombre_empleados, email_id) VALUES ('104','Simone Vespa', 'vespa@abc.com');
SELECT * FROM empleados;
SELECT email_id FROM
(
SELECT email_id, COUNT(email_id) AS nuOfAppearence
FROM empleados
GROUP BY email_id
) AS countEmail
WHERE nuOfAppearence> 1;
-
Para finalizar, otro ejercicio más completo: en este caso tendrás que trabajar mucho los datos individuales, yendo a utilizar más operadores, cálculo, inserción y manejo de tablas.
CREATE TABLE test_examen (examen_id int NOT NULL, materia_id int NOT NULL, año_examen int NOT NULL, num_estudiantes int,
PRIMARY KEY (examen_id, materia_id, año_examen));
INSERT INTO test_examen VALUES (71,201,2017,5146);
INSERT INTO test_examen VALUES (72,202,2017,3651);
INSERT INTO test_examen VALUES (73,202,2018,4501);
INSERT INTO test_examen VALUES (71,202,2018,5945);
INSERT INTO test_examen VALUES (73,201,2018,2647);
INSERT INTO test_examen VALUES (71,201,2018,3545);
INSERT INTO test_examen VALUES (73,201,2019,2647);
CREATE TABLE test_materia (materia_id int NOT NULL unique, nombre_materia varchar(255));
INSERT INTO test_materia VALUES (201,Matemáticas);
INSERT INTO test_materia VALUES (202,Física);
INSERT INTO test_materia VALUES (203,química);
SELECT s.materia_id, p.nome_materia,
SUM(s.num_estudiante) 'Estudiantes para todo el año'
FROM test_examen s
JOIN test_materia p
ON s. materia_id = p. materia_id
GROUP BY s. materia_id;
SELECT s1.materia_id, p.nombre_materia,s1.año_examen as primer_año, s1.num_estudiantes
FROM test_esame s1
JOIN test_materia p on s1.materia_id = p.materia_id
JOIN (SELECT materia_id, min(año_examen) min_año
FROM test_examen GROUP BY materia_id) s2
ON s1.materia_id = s2.materia_id
AND s1.año_examen = s2.min_año;
Realizar ejercicios de codificación online para familiarizarte con las bases de datos, sus tablas y los operadores del lenguaje SQL es un paso necesario para poder gestionar datos sin tener que ralentizar tu camino de aprendizaje.
© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad