Colección completa de ejemplos prácticos para descargar y ejecutar
Puedes descargar todos los ejemplos en un archivo SQL para ejecutarlos en tu entorno local:
📥 Descargar ejemplos-completos.sqlEjemplosSQL con tablas y datos de prueba.
-- Seleccionar todas las columnas
SELECT * FROM dbo.Categorias;
-- Seleccionar columnas específicas
SELECT Nombre, Precio, Stock FROM dbo.Productos;
-- Seleccionar con alias
SELECT
Nombre AS Producto,
Precio AS 'Precio Unitario',
Stock AS 'Existencias'
FROM dbo.Productos;
-- Seleccionar valores únicos
SELECT DISTINCT CategoriaID FROM dbo.Productos;
-- Seleccionar con TOP
SELECT TOP 5 * FROM dbo.Productos;
-- Filtrar por condición simple
SELECT * FROM dbo.Productos WHERE Precio > 100;
-- Filtrar por múltiples condiciones (AND)
SELECT * FROM dbo.Productos
WHERE Precio > 50 AND Stock > 20;
-- Filtrar con IN
SELECT * FROM dbo.Productos
WHERE CategoriaID IN (1, 3);
-- Filtrar con LIKE (búsqueda de texto)
SELECT * FROM dbo.Clientes
WHERE Nombre LIKE 'J%';
-- Filtrar con BETWEEN (rango)
SELECT * FROM dbo.Productos
WHERE Precio BETWEEN 50 AND 500;
-- Filtrar con IS NULL
SELECT * FROM dbo.Clientes
WHERE Telefono IS NULL;
-- INNER JOIN: Solo registros coincidentes
SELECT
p.Nombre AS Producto,
c.Nombre AS Categoria,
p.Precio
FROM dbo.Productos p
INNER JOIN dbo.Categorias c
ON p.CategoriaID = c.CategoriaID;
-- LEFT JOIN: Todos los de la izquierda + coincidentes
SELECT
c.Nombre AS Cliente,
p.PedidoID,
p.Total
FROM dbo.Clientes c
LEFT JOIN dbo.Pedidos p
ON c.ClienteID = p.ClienteID;
-- Muestra todos los clientes, incluso sin pedidos
-- Productos con precio mayor al promedio
SELECT Nombre, Precio
FROM dbo.Productos
WHERE Precio > (
SELECT AVG(Precio) FROM dbo.Productos
);
-- Clientes con total de pedidos
SELECT
c.Nombre,
(SELECT COUNT(*)
FROM dbo.Pedidos p
WHERE p.ClienteID = c.ClienteID) AS TotalPedidos
FROM dbo.Clientes c;
-- Procedure con parámetro opcional
CREATE PROCEDURE dbo.sp_ObtenerProductos
@CategoriaID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
p.ProductoID,
p.Nombre,
p.Precio,
p.Stock,
c.Nombre AS Categoria
FROM dbo.Productos p
LEFT JOIN dbo.Categorias c
ON p.CategoriaID = c.CategoriaID
WHERE @CategoriaID IS NULL
OR p.CategoriaID = @CategoriaID
ORDER BY p.Nombre;
END
GO
-- Ejecutar procedure
EXEC dbo.sp_ObtenerProductos;
EXEC dbo.sp_ObtenerProductos @CategoriaID = 1;
-- Trigger que se ejecuta después de INSERT
CREATE TRIGGER dbo.trg_Pedidos_Insert
ON dbo.Pedidos
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
-- Actualizar el total del pedido
UPDATE p
SET Total = (
SELECT SUM(dp.Subtotal)
FROM dbo.DetallePedidos dp
WHERE dp.PedidoID = inserted.PedidoID
)
FROM dbo.Pedidos p
INNER JOIN inserted
ON p.PedidoID = inserted.PedidoID;
END
GO
BEGIN TRANSACTION;
BEGIN TRY
-- Insertar pedido
INSERT INTO dbo.Pedidos (ClienteID, Total, Estado)
VALUES (1, 0, 'Pendiente');
DECLARE @NuevoPedidoID INT = SCOPE_IDENTITY();
-- Insertar detalle
INSERT INTO dbo.DetallePedidos
(PedidoID, ProductoID, Cantidad, PrecioUnitario)
VALUES (@NuevoPedidoID, 1, 2, 899.99);
-- Actualizar stock
UPDATE dbo.Productos
SET Stock = Stock - 2
WHERE ProductoID = 1;
COMMIT TRANSACTION;
PRINT 'Transacción completada exitosamente.';
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH