Skip to content

Commit e1ad6d8

Browse files
author
llonardo798
committed
#1 - SQL
1 parent 4bbc82d commit e1ad6d8

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
* Este ejercicio se resuelve en base a SQL Server
3+
* EJERCICIO:
4+
* - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje:
5+
* Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits...
6+
* (Ten en cuenta que cada lenguaje puede poseer unos diferentes)
7+
* - Utilizando las operaciones con operadores que tú quieras, crea ejemplos
8+
* que representen todos los tipos de estructuras de control que existan
9+
* en tu lenguaje:
10+
* Condicionales, iterativas, excepciones...
11+
* - Debes hacer print por consola del resultado de todos los ejemplos.
12+
*
13+
* DIFICULTAD EXTRA (opcional):
14+
* Crea un programa que imprima por consola todos los números comprendidos
15+
* entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3.
16+
*
17+
* Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo.
18+
*/
19+
20+
-- Tipos de operadores en SQL
21+
22+
-- 1. Operadores Aritméticos
23+
24+
DECLARE @numero1 INT = 10;
25+
DECLARE @numero2 INT = 5;
26+
DECLARE @numero3 INT = 3;
27+
28+
DECLARE @suma INT = @numero1 + @numero2; -- Suma
29+
DECLARE @resta INT = @numero1 - @numero2; -- Resta
30+
DECLARE @multiplicacion INT = @numero1 * @numero2; -- Multiplicación
31+
DECLARE @division INT = @numero1 / @numero2; -- División entera
32+
DECLARE @producto INT = @numero1 % @numero3; -- Resto de la división
33+
34+
PRINT CONCAT('Suma: ', @suma); -- Imprime 15
35+
PRINT CONCAT('Resta: ', @resta); -- Imprime 5
36+
PRINT CONCAT('Multiplicación: ', @multiplicacion); -- Imprime 50
37+
PRINT CONCAT('División: ', @division); -- Imprime 2
38+
PRINT CONCAT('Producto: ', @producto); -- Imprime 1
39+
40+
41+
42+
-- 2. Operadores de Comparación
43+
44+
DECLARE @igualQue VARCHAR(5) = CASE WHEN @numero1 = @numero2 THEN 'TRUE' ELSE 'FALSE' END; -- Igual
45+
DECLARE @mayorQue VARCHAR(5) = CASE WHEN @numero1 > @numero2 THEN 'TRUE' ELSE 'FALSE' END; -- Mayor que
46+
DECLARE @menorQue VARCHAR(5) = CASE WHEN @numero1 < @numero2 THEN 'TRUE' ELSE 'FALSE' END; -- Menor que
47+
DECLARE @mayorIgual VARCHAR(5) = CASE WHEN @numero1 >= @numero2 THEN 'TRUE' ELSE 'FALSE' END; -- Mayor o igual que
48+
DECLARE @menorIgual VARCHAR(5) = CASE WHEN @numero1 <= @numero2 THEN 'TRUE' ELSE 'FALSE' END; -- Menor o igual que
49+
DECLARE @distinto VARCHAR(5) = CASE WHEN @numero1 <> @numero2 THEN 'TRUE' ELSE 'FALSE' END; -- Distinto
50+
51+
PRINT CONCAT('Igual que: ', @igualQue); -- Imprime 0
52+
PRINT CONCAT('Mayor que: ', @mayorQue); -- Imprime 1
53+
PRINT CONCAT('Menor que: ', @menorQue); -- Imprime 0
54+
PRINT CONCAT('Mayor o igual que: ', @mayorIgual); -- Imprime 1
55+
PRINT CONCAT('Menor o igual que: ', @menorIgual); -- Imprime 0
56+
PRINT CONCAT('Distinto: ', @distinto); -- Imprime 1
57+
58+
59+
60+
-- 3. Operadores Lógicos
61+
62+
DECLARE @edad INT = 16;
63+
DECLARE @estaAcompanado BIT = 0;
64+
65+
DECLARE @puedeVerPelicula BIT = CASE WHEN @edad >= 18 OR (@edad >= 16 AND @estaAcompanado = 1) THEN 1 ELSE 0 END;
66+
PRINT CONCAT('Puede ver la película: ', @puedeVerPelicula); -- Imprime 1
67+
PRINT CONCAT('Puede ver la película: ', CASE WHEN NOT @puedeVerPelicula = 1 THEN 'TRUE' ELSE 'FALSE' END); -- Imprime FALSE
68+
69+
70+
71+
-- 4. Operadores de Conjuntos
72+
73+
-- Crear tabla CLIENTES
74+
CREATE TABLE CLIENTES (ID INT PRIMARY KEY,Nombre VARCHAR(50),Ciudad VARCHAR(50));
75+
-- Insertar datos en CLIENTES
76+
INSERT INTO CLIENTES (ID, Nombre, Ciudad) VALUES (1, 'Ana', 'Madrid'), (2, 'Juan', 'Barcelona'), (3, 'María', 'Valencia'), (4, 'Pedro', 'Madrid'), (5, 'Laura', 'Sevilla');
77+
78+
-- Crear tabla EMPLEADOS
79+
CREATE TABLE EMPLEADOS (ID INT PRIMARY KEY, Nombre VARCHAR(50), Departamento VARCHAR(50), Activo BIT);
80+
-- Insertar datos en EMPLEADOS
81+
INSERT INTO EMPLEADOS (ID, Nombre, Departamento, Activo) VALUES(101, 'Juan', 'Ventas', 1),(102, 'María', 'Recursos Humanos', 0),(103, 'Carlos', 'IT', 1),(104, 'Ana', 'Marketing', NULL),(105, 'Pedro', 'Finanzas', 0);
82+
83+
SELECT Nombre FROM CLIENTES UNION SELECT Nombre FROM EMPLEADOS; -- UNION: Obtener todos los nombres de CLIENTES y EMPLEADOS (sin duplicados)
84+
SELECT Nombre FROM CLIENTES UNION ALL SELECT Nombre FROM EMPLEADOS; -- UNION ALL: Obtener todos los nombres de CLIENTES y EMPLEADOS (con duplicados)
85+
SELECT Nombre FROM CLIENTES INTERSECT SELECT Nombre FROM EMPLEADOS; -- INTERSECT: Obtener los nombres de los CLIENTES que también son EMPLEADOS
86+
SELECT Nombre FROM CLIENTES EXCEPT SELECT Nombre FROM EMPLEADOS; -- EXCEPT: Obtener los nombres de los CLIENTES que no son EMPLEADOS
87+
88+
89+
90+
-- 5. Operadores de Cadenas
91+
92+
SELECT Nombre + ' del departamento de ' + Departamento AS INFORMACIÓNCLIENTE FROM EMPLEADOS; -- Concatenar cadenas
93+
SELECT * FROM EMPLEADOS WHERE Nombre LIKE 'A%'; -- LIKE: Buscar nombres que empiecen por 'A'
94+
SELECT * FROM CLIENTES WHERE Nombre LIKE '____a'; -- LIKE: Buscar nombres que tengan 5 letras y terminen en 'a'
95+
SELECT LEN(Nombre) AS LongitudNombre FROM EMPLEADOS; -- LEN: Obtener la longitud de los nombres
96+
SELECT SUBSTRING(Departamento, 1, 5) AS Primeros10Caracteres FROM EMPLEADOS; -- SUBSTRING: Obtener los primeros 5 caracteres del Departamento
97+
SELECT REPLACE(Nombre, 'a', 'o') AS NuevoNombreRaro FROM CLIENTES; -- REPLACE: Reemplazar 'a' por 'o' en los nombres
98+
SELECT UPPER(Nombre) AS NombreMayusculas, LOWER(Departamento) AS DepartamentoMinusculas FROM EMPLEADOS; -- UPPER Convertir a mayúsculas y LOWER Convertir a minúsculas
99+
100+
-- 6. Otros Operadores de verificación
101+
102+
SELECT * FROM CLIENTES WHERE ID BETWEEN 2 AND 4; -- Obtener los clientes cuyo ID está entre 2 y 4
103+
SELECT * FROM CLIENTES WHERE CIUDAD IN ('Madrid', 'Barcelona'); -- Obtener los clientes que son de Madrid o Barcelona
104+
SELECT * FROM EMPLEADOS WHERE Activo IS NULL; -- Obtener los empleados que no están activos
105+
SELECT * FROM EMPLEADOS WHERE Nombre IS NOT NULL; -- Obtener los empleados cuyo nombre está registrado
106+
SELECT Nombre FROM CLIENTES c WHERE EXISTS (SELECT * FROM EMPLEADOS e WHERE e.Nombre = c.Nombre AND e.Activo = 1); -- Obtener los clientes que se llaman igual que los empleados activos
107+
108+
109+
-- DIFICULTAD EXTRA - Crea un programa que imprima por consola todos los números comprendidos entre 10 y 55 (incluidos)
110+
-- pares, y que no son ni el 16 ni múltiplos de 3.
111+
112+
DECLARE @numero INT = 10;
113+
DECLARE @limite INT = 55;
114+
115+
WHILE @numero <= @limite
116+
BEGIN
117+
IF @numero % 2 = 0 AND @numero <> 16 AND @numero % 3 <> 0
118+
BEGIN
119+
PRINT @numero;
120+
END
121+
SET @numero = @numero + 1;
122+
END

0 commit comments

Comments
 (0)