📦 PROCEDIMIENTOS, TRIGGERS Y SUBCONSULTAS EN SQL
🔧 PROCEDIMIENTOS ALMACENADOS (STORED PROCEDURES)
Un procedimiento almacenado (PROCEDURE) es un conjunto de instrucciones SQL precompiladas que pueden tomar parámetros y devolver resultados.
🧠 ¿Para qué sirven?
- Ejecutan tareas repetitivas.
- Mejoran el rendimiento (se ejecutan desde el servidor).
- Separan la lógica del negocio del código cliente.
✅ Sintaxis Básica
CREATE PROCEDURE NombreProc ([parametros])
AS
BEGIN
-- Instrucciones SQL
END
🧪 Ejemplos:
CREATE PROCEDURE procSimple
AS
SELECT * FROM HIJOS;
GO
EXEC procSimple;
CREATE PROCEDURE procSuma @p1 INT = 0 OUTPUT, @p2 INT = 100
AS
BEGIN
SET @p1 = @p1 + @p2;
END;
-- Procedimiento con parámetros:
CREATE PROCEDURE SelectAllCustom
@City NVARCHAR(30),
@PostalCode NVARCHAR(10)
AS
SELECT *
FROM Customers
WHERE City = @City AND PostalCode = @PostalCode;
⚡ TRIGGERS (DISPARADORES)
Un TRIGGER es un procedimiento automático que se ejecuta ante eventos INSERT, UPDATE o DELETE.
💡 ¿Cuándo se usa?
Cuando necesitas:
- Auditar cambios.
- Validar datos automáticamente.
- Ejecutar acciones relacionadas (como actualizar un stock).
⚙️ Ejemplo:
CREATE TRIGGER nombre_trigger
ON tabla
AFTER INSERT
AS
BEGIN
-- Código que se ejecuta después del INSERT
END;
CREATE TRIGGER tr_AfterInsert_Alumno
ON Alumnos
AFTER INSERT
AS
INSERT INTO Padres (id, nombre)
SELECT id, nombre FROM INSERTED;
🔁 INSERTED y DELETED: Tablas temporales con los datos afectados por el trigger.
🔍 SUBCONSULTAS EN SQL
🧠 ¿Qué son?
Consultas internas que devuelven valores para comparar con una consulta externa principal.
🔤 Lógicos y operadores clave:
AND,OR,NOT- Comparaciones:
=,>,<,LIKE,BETWEEN,IN,ANY,ALL
🧪 Ejemplos:
-- Obtener productos con precio superior al promedio:
SELECT * FROM PRODUCTOS
WHERE PRECIO > (SELECT AVG(PRECIO) FROM PRODUCTOS);
-- Subconsulta con IN:
SELECT * FROM PRODUCTOS
WHERE SECCION IN (SELECT SECCION FROM PRODUCTOS WHERE UNIDADES > 20);
🔗 JOINS DEL SQL
Los JOINS permiten combinar filas de dos o más tablas según una condición relacionada.
| Tipo de JOIN | Resultado |
|---|---|
INNER JOIN | Registros comunes en ambas tablas |
LEFT JOIN | Todos los registros de A y los coincidentes de B |
RIGHT JOIN | Todos los registros de B y los coincidentes de A |
FULL OUTER JOIN | Todos los registros de A y B, combinados |
CROSS JOIN | Producto cartesiano entre A y B |
LEFT JOIN ... IS NULL | Registros de A sin correspondencia en B |
RIGHT JOIN ... IS NULL | Registros de B sin correspondencia en A |
🧪 Ejemplo gráfico (visualización incluida en tu imagen):
SELECT *
FROM A
LEFT JOIN B
ON A.Clave = B.Clave;
Muestra todos los registros de A y los de B que coincidan. Si no hay coincidencia, los valores de B serán NULL.
💾 MECANISMOS DE ALMACENAMIENTO EN MYSQL
ISAM vs MyISAM vs InnoDB
| Característica | ISAM / MyISAM | InnoDB |
|---|---|---|
| Integridad referencial | ❌ No soportada | ✅ Soportada |
| Transacciones | ❌ No | ✅ Sí |
| Velocidad lectura | ✅ Muy alta | 🚫 Menor que MyISAM |
| Seguridad ante fallos | ❌ Pérdida posible de datos | ✅ Recuperación automática |
| Almacenamiento | Archivos separados .MYD y .MYI | Tabla en espacio compartido |
🧪 Ejemplo de creación con motor específico:
CREATE TABLE ejemplo (
id INT PRIMARY KEY,
nombre VARCHAR(50)
) ENGINE = InnoDB;
🔁 OPERADORES LÓGICOS EN SQL
| A | B | A OR B | A AND B | A XOR B |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |


Deja un comentario