Ejercicios Prácticos de SQL: Consultas, Modificaciones y Creación de Tablas
Enviado por Chuletator online y clasificado en Economía
Escrito el en español con un tamaño de 5,41 KB
Consultas SQL
Selección de Datos
SELECT * FROM pedidos WHERE DATE(FECHA_PEDIDO) BETWEEN '1999-06-01' AND '1999-11-30';
SELECT * FROM productos WHERE DESCRIPCION LIKE '%mesa%' AND DESCRIPCION LIKE '%despacho%' AND PRECIO_ACTUAL < 100000;
SELECT NOMBRE, PRECIO_ACTUAL FROM productos ORDER BY PRECIO_ACTUAL DESC, NOMBRE ASC;
SELECT empleados.* FROM empleados JOIN departamentos ON empleados.DEP_NO = departamentos.DEP_NO WHERE (departamentos.LOCALIDAD = 'BARCELONA' OR departamentos.LOCALIDAD = 'SEVILLA') AND empleados.FOTO IS NULL;
SELECT pedidos.* FROM pedidos WHERE CLIENTE_NO = (SELECT CLIENTE_NO FROM pedidos WHERE PEDIDO_NO = 1080);
SELECT COUNT(*) FROM empleados WHERE DEP_NO = 30 AND OFICIO = 'VENDEDOR' AND COMISION IS NOT NULL;
SELECT * FROM productos WHERE PRECIO_ACTUAL = (SELECT MAX(PRECIO_ACTUAL) FROM productos);
SELECT empleados.*, departamentos.DNOMBRE FROM empleados LEFT JOIN departamentos ON empleados.DEP_NO = departamentos.DEP_NO;
SELECT empleados.* FROM empleados JOIN departamentos ON empleados.DEP_NO = departamentos.DEP_NO WHERE (OFICIO = 'VENDEDOR' OR OFICIO = 'DIRECTOR') AND (departamentos.DNOMBRE IN ('CONTABILIDAD', 'VENTAS', 'PRODUCCION'));
SELECT departamentos.DEP_NO, departamentos.DNOMBRE, SUM(empleados.SALARIO + IFNULL(empleados.COMISION, 0)) AS Gasto_Total FROM departamentos JOIN empleados ON departamentos.DEP_NO = empleados.DEP_NO GROUP BY departamentos.DEP_NO, departamentos.DNOMBRE HAVING COUNT(empleados.EMP_NO) >= 3;
SELECT * FROM EMPLEADO WHERE SALARIO < (SELECT AVG(SALARIO) FROM EMPLEADO);
SELECT D.NOMBRE_DEP, COUNT(E.EMP_NO) AS NUM_TRABAJADORES FROM DEPARTAMENTO D LEFT JOIN EMPLEADO E ON D.DEP_NO = E.DEP_NO GROUP BY D.NOMBRE_DEP;
SELECT D.NOMBRE_DEP, COUNT(E.EMP_NO) AS NUM_TRABAJADORES FROM DEPARTAMENTO D LEFT JOIN EMPLEADO E ON D.DEP_NO = E.DEP_NO GROUP BY D.NOMBRE_DEP;
SELECT LOCALIDAD, COUNT(CLIENTE_NO) AS NUM_CLIENTES FROM CLIENTE GROUP BY LOCALIDAD HAVING COUNT(CLIENTE_NO) > 1 ORDER BY NUM_CLIENTES DESC;
SELECT * FROM PRODUCTO WHERE DESCRIPCION LIKE '%mesa%' AND DESCRIPCION LIKE '%gaviota%';
SELECT COUNT(*) FROM EMPLEADO WHERE OFICIO = 'VENDEDOR' AND (COMISION IS NULL OR COMISION = 0) AND DEP_NO = (SELECT DEP_NO FROM DEPARTAMENTO WHERE NOMBRE_DEP = 'VENTAS');
SELECT * FROM CLIENTE WHERE LOCALIDAD IN ('BARCELONA', 'MADRID');
SELECT NUM_PEDIDO, FECHA_PEDIDO FROM PEDIDO WHERE YEAR(FECHA_PEDIDO) = 1999 AND FECHA_PEDIDO < '1999-11-15';
SELECT APELLIDO1, NOMBRE, SALARIO, OFICIO FROM EMPLEADO WHERE DEP_NO IN (SELECT DEP_NO FROM DEPARTAMENTO WHERE NOMBRE_DEP IN ('CONTABILIDAD', 'VENTAS')) AND SALARIO BETWEEN 100000 AND 220000;
Modificaciones de Datos
Inserción de Datos
INSERT INTO clientes (CLIENTE_NO, NIF, NOMBRE, LOCALIDAD) VALUES (1585, '11223344M', 'Comercial Nos', 'Lugo');
INSERT INTO EMPLEADO (EMP_NO, NIF, NOMBRE, APELLIDO1, OFICIO, JEFE, FECHA_ALTA, SALARIO, COMISION, DEP_NO, TELEFONO, FOTO) VALUES (9328, '123456782', 'Concepcion', 'Arenilla', 'ABOGADA', 10, '1981-11-17', 30000, 10, 98145678, '963852741', NULL);
INSERT INTO clientes (CLIENTE_NO, NIF, LOCALIDAD) VALUES (777, '11223444M', 'Lugo');
Actualización de Datos
UPDATE productos SET PRECIO_ACTUAL = PRECIO_ACTUAL * 0.98;
UPDATE PRODUCTO SET PRECIO = PRECIO * 1.053 WHERE PRODUCTO_NO = 80;
Eliminación de Datos
-- Iniciar transacción
START TRANSACTION;
-- Borrar el producto
DELETE FROM PRODUCTO WHERE PRODUCTO_NO = 60;
Creación de Tablas
Definición de Estructuras
-- Creación de la tabla de socios
CREATE TABLE socio (
dni VARCHAR(9) PRIMARY KEY,
nombre VARCHAR(45),
direccion VARCHAR(45),
fecha_ingreso DATE,
telefono VARCHAR(45)
);
-- Creación de la tabla de barcos
CREATE TABLE barco (
matricula VARCHAR(10) PRIMARY KEY,
numero_fiscal VARCHAR(45),
manga DECIMAL,
eslora DECIMAL,
tipo VARCHAR(20),
nombre VARCHAR(45),
socio_dni VARCHAR(9),
amarre_id INT,
fecha_asignacion DATE,
FOREIGN KEY (socio_dni) REFERENCES socio(dni),
FOREIGN KEY (amarre_id) REFERENCES amarre(id)
);
-- Creación de la tabla de amarres
CREATE TABLE amarre (
id INT PRIMARY KEY,
electricidad TINYINT,
agua TINYINT,
muelle_id VARCHAR(1),
FOREIGN KEY (muelle_id) REFERENCES muelle(letra)
);
-- Creación de la tabla de muelles
CREATE TABLE muelle (
letra VARCHAR(1) PRIMARY KEY,
tipo VARCHAR(20),
profundidad DECIMAL,
anchura DECIMAL
);
-- Creación de la tabla de compras
CREATE TABLE compra (
socio_dni VARCHAR(9),
amarre_id INT,
fecha_compra VARCHAR(45),
PRIMARY KEY (socio_dni, amarre_id),
FOREIGN KEY (socio_dni) REFERENCES socio(dni),
FOREIGN KEY (amarre_id) REFERENCES amarre(id)
);