IFCD0210/Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DDL.sql
2024-03-11 13:53:37 +01:00

83 lines
2.9 KiB
SQL

-- Principales comandos DDL (Data Definition Language): Utilizado para definir estructuras de bases de datos y objetos como tablas, índices, y vistas.
-- CREATE DATABASE: permite crear una base de datos
CREATE DATABASE MiBaseDeDatos
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- CREATE TABLE: Se utiliza para crear una nueva tabla en la base de datos.
USE MiBaseDeDatos; -- indicamos que tabla vamos a usar
CREATE TABLE departamentos (
id INT PRIMARY KEY,
nombre VARCHAR(50)
);
CREATE TABLE Empleados (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50),
dni VARCHAR(50) UNIQUE,
salario DECIMAL(10, 2),
fecha_contratacion DATE,
departamento_id INT,
CHECK (salario < 10000),
CONSTRAINT fk_departamento
FOREIGN KEY (departamento_id)
REFERENCES departamentos(id)
);
-- Restricciones
Restricción Descripción
NOT NULL Indica que una columna no puede contener un valor NULL
UNIQUE Indica que cada fila de la columna debe tener un valor único
PRIMARY KEY Combinación entre NOT NULL y UNIQUE. Asegura que una o más columnas tienen una identidad única
FOREIGN KEY Asegura la integridad referencial de los datos
CHECK Asegura que el valor de una columna cumple con una condición específica
DEFAULT Establece un valor por defecto en una columna
-- ALTER TABLE: Se utiliza para modificar una tabla existente, agregando, modificando o eliminando columnas.
ALTER TABLE Empleados
ADD COLUMN departamento VARCHAR(50), -- Añade
MODIFY COLUMN salario DECIMAL(12, 2), -- Modifica el tipo
DROP COLUMN fecha_contratacion, --Elimina
RENAME TO Empleados2; -- Renombra la tabla
-- Añadir una restricción
ALTER TABLE orders -- Tabla sobre la que actuamos
ADD CONSTRAINT fk_customerNumber -- Nombre restricción
FOREIGN KEY (customerNumber) -- Restricción
REFERENCES customers(customerNumber); -- Tabla de la clave primaria
-- CREATE INDEX: Se utiliza para crear un índice en una tabla para acelerar la búsqueda de registros.
CREATE INDEX idx_nombre ON Empleados(nombre);
-- DROP INDEX: Se utiliza para eliminar un índice existente de la base de datos.
DROP INDEX idx_nombre ON Empleados;
--CREATE VIEW: Se utiliza para crear una vista, que es una tabla virtual basada en los resultados de una consulta
CREATE VIEW VistaEmpleados AS
SELECT id, nombre, salario FROM Empleados WHERE departamento = 'Ventas';
--DROP VIEW VistaEmpleados; para borrarla
--CREATE PROCEDURE: Se utiliza para crear un procedimiento almacenado, que es un conjunto de instrucciones SQL que se pueden ejecutar de forma repetida.
DELIMITER //
CREATE PROCEDURE ObtenerPedidosUsuario(usu_id INT )
BEGIN
SELECT * FROM pedidos WHERE cliente_id = usu_id;
END//
DELIMITER ;
--Para ejecutarlo
CALL ObtenerPedidosUsuario('ID_DEL_USUARIO');
--Para borrarlo
DROP PROCEDURE ObtenerPedidosUsuario;