08 Jul
Usuarios
— Crear usuarios en MySQL
CREATE USER ‘bibliotecario’@’localhost’ IDENTIFIED BY ‘contraseña’;
CREATE USER ‘lector’@’localhost’ IDENTIFIED BY ‘contraseña’;
— Otorgar permisos al bibliotecario
GRANT SELECT, INSERT, UPDATE, DELETE ON biblioteca.* TO ‘bibliotecario’@’localhost’;
— Otorgar permisos al lector
GRANT SELECT ON biblioteca.* TO ‘lector’@’localhost’;
Transacciones
— Ejemplo de transacción en MySQL
START TRANSACTION;
UPDATE cuentas_bancarias SET saldo = saldo – 100 WHERE id_cuenta = 123;
INSERT INTO registros_transacciones (id_cuenta, monto, tipo) VALUES (123, 100, ‘retiro’);
COMMIT;
Índices
— Crear un índice en MySQL
CREATE INDEX idx_nombre_producto ON productos (nombre);
Motores
— Crear una tabla en MySQL utilizando el motor InnoDB
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(100)
) ENGINE=InnoDB;
Procedimientos almacenados
— Crear un procedimiento almacenado en MySQL
DELIMITER //
CREATE PROCEDURE calcular_stock(IN producto_id INT)
BEGIN
SELECT SUM(cantidad) AS total_stock FROM inventario WHERE producto_id = producto_id;
END //
DELIMITER ;
Triggers
— Crear un trigger en MySQL
CREATE TRIGGER actualizar_nomina AFTER INSERT ON empleados
FOR EACH ROW
BEGIN
INSERT INTO nomina (empleado_id, salario) VALUES (NEW.id, NEW.salario);
END;
Vistas
— Crear una vista en MySQL
CREATE VIEW estudiantes_aprobados AS
SELECT nombre, apellido, curso
FROM estudiantes
WHERE resultado = ‘Aprobado’;
Permisos
— Otorgar permisos en MySQL
GRANT SELECT ON base_de_datos.tabla TO ‘usuario’@’localhost’;
Claro, aquí tienes una explicación de para qué sirve cada uno de los elementos mencionados:
Componentes de un Trigger:
Evento: Es la acción que desencadena la ejecución del trigger, como INSERT, UPDATE o DELETE.
Tabla: Es la tabla en la que se produce el evento que activa el trigger.
Condición: Es una expresión booleana opcional que se evalúa antes de ejecutar el trigger. Si la condición se cumple, el trigger se dispara; de lo contrario, no se ejecuta.
Acción: Es el bloque de código que se ejecuta cuando se activa el trigger. Puede contener una o varias instrucciones SQL.
Tipos de Triggers:
BEFORE: Se ejecuta antes de que se realice la acción que desencadena el trigger. Se utiliza principalmente para validar o modificar los datos antes de que se inserten, actualicen o eliminen.
AFTER: Se ejecuta después de que se haya completado la acción que desencadena el trigger. Se utiliza para realizar acciones posteriores a la modificación de los datos, como auditar los cambios o actualizar otras tablas.
INSTEAD OF: Se utiliza en vistas y tablas con triggers de actualización o eliminación para reemplazar la operación estándar de actualización o eliminación. Permite realizar acciones personalizadas en lugar de la operación estándar.
Transacción para procesar una compra: START TRANSACTION;
SELECT stock INTO @stock_actual FROM productos WHERE id = producto_id;
IF @stock_actual >= cantidad THEN
UPDATE productos SET stock = stock – cantidad WHERE id = producto_id;
INSERT INTO compras (producto_id, cantidad, total) VALUES (producto_id, cantidad, precio * cantidad);
END IF;
COMMIT;
Transacción para realizar una reserva y generar una factura: START TRANSACTION;
INSERT INTO reservas (cliente_id, articulo_id, cantidad) VALUES (cliente_id, articulo_id, cantidad);
INSERT INTO facturas (cliente_id, total) VALUES (cliente_id, precio * cantidad); COMMIT;
Otorgar permiso de SELECT:
GRANT SELECT ON nombre_tabla TO ‘nombre_usuario’@’localhost’;
Otorgar permiso de INSERT:
GRANT INSERT ON nombre_tabla TO ‘nombre_usuario’@’localhost’;
Otorgar permiso de UPDATE:
GRANT UPDATE ON nombre_tabla TO ‘nombre_usuario’@’localhost’;
Otorgar permiso de DELETE:
GRANT DELETE ON nombre_tabla TO ‘nombre_usuario’@’localhost’;
Otorgar todos los permisos:
GRANT ALL PRIVILEGES ON nombre_tabla TO ‘nombre_usuario’@’localhost’;
Otorgar permiso específico sobre columnas:
GRANT SELECT (columna1, columna2) ON nombre_tabla TO ‘nombre_usuario’@’localhost’;
Procedimientos
Procedimiento para obtener datos de un empleado:
DELIMITER //
CREATE PROCEDURE obtener_empleado(IN empleado_id INT)
BEGIN
SELECT * FROM empleados WHERE id = empleado_id;
END//
DELIMITER ;
Procedimiento para insertar un nuevo empleado:
DELIMITER //
CREATE PROCEDURE insertar_empleado(IN nif VARCHAR(10), IN nombre VARCHAR(50), IN sueldo DECIMAL(10,2))
BEGIN
INSERT INTO empleados (nif, nombre, sueldo) VALUES (nif, nombre, sueldo);
END//
DELIMITER ;
Transacciones
Transacción para realizar una transferencia entre cuentas: START TRANSACTION;
UPDATE cuentas SET saldo = saldo – monto WHERE numero_cuenta = cuenta_origen;
UPDATE cuentas SET saldo = saldo + monto WHERE numero_cuenta = cuenta_destino;
COMMIT;
Crear una vista simple:
CREATE VIEW vista_empleados AS
SELECT id, nombre, salario FROM empleados;
Crear una vista con una cláusula WHERE:
CREATE VIEW vista_empleados_departamento AS
SELECT id, nombre, departamento FROM empleados WHERE departamento = ‘Ventas’;
Crear una vista con JOIN:
CREATE VIEW vista_empleados_departamento AS
SELECT e.id, e.nombre, d.nombre AS departamento
FROM empleados e
JOIN departamentos d ON e.departamento_id = d.id;
Actualizar una vista:
CREATE OR REPLACE VIEW vista_empleados AS
SELECT id, nombre, salario, departamento FROM empleados;
Eliminar una vista:
DROP VIEW IF EXISTS vista_empleados;
Utilizar una vista en una consulta:
SELECT * FROM vista_empleados;
Deja un comentario