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