Web Tool
Version 1.0
Updated 2026-02-26
Quick Reference
Type in the box below to filter snippets, or browse by category.
SELECT Basics
Select with filtering & sorting
SELECT col1, col2 FROM Employees WHERE Department = 'Engineering' AND Salary > 80000 ORDER BY col1 DESC;
Distinct values
SELECT DISTINCT Department FROM Employees;
Top N rows (SQL Server) / LIMIT (MySQL/Postgres)
-- SQL Server SELECT TOP 10 * FROM Orders ORDER BY OrderDate DESC; -- -- MySQL / PostgreSQL SELECT * FROM Orders ORDER BY OrderDate DESC LIMIT 10;
GROUP BY & Aggregates
Group with HAVING filter
SELECT Department, COUNT(*) AS HeadCount, AVG(Salary) AS AvgSalary FROM Employees GROUP BY Department HAVING COUNT(*) > 5 ORDER BY AvgSalary DESC;
Common aggregate functions
SELECT COUNT(*), -- row count
COUNT(DISTINCT col), -- unique values
SUM(Amount), -- total
AVG(Amount), -- average
MIN(Amount), -- smallest
MAX(Amount) -- largest
FROM Orders;
JOIN Patterns
INNER JOIN — matching rows only
SELECT o.OrderId, c.CustomerName FROM Orders o INNER JOIN Customers c ON o.CustomerId = c.Id;
LEFT JOIN — all left + matching right
SELECT e.Name, d.DepartmentName FROM Employees e LEFT JOIN Departments d ON e.DeptId = d.Id;
FULL OUTER JOIN — all rows from both tables
SELECT a.Name, b.Name FROM TableA a FULL OUTER JOIN TableB b ON a.Id = b.AId;
CROSS JOIN — cartesian product
SELECT s.Size, c.Color FROM Sizes s CROSS JOIN Colors c;
Self JOIN — table joined to itself
SELECT e.Name AS Employee, m.Name AS Manager FROM Employees e LEFT JOIN Employees m ON e.ManagerId = m.Id;
Subqueries & CTEs
Subquery in WHERE
SELECT Name, Salary FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees);
EXISTS check
SELECT c.CustomerName FROM Customers c WHERE EXISTS ( SELECT 1 FROM Orders o WHERE o.CustomerId = c.Id );
CTE (Common Table Expression)
WITH TopSellers AS ( SELECT SellerId, SUM(Amount) AS Total FROM Sales GROUP BY SellerId HAVING SUM(Amount) > 100000 ) SELECT e.Name, ts.Total FROM TopSellers ts INNER JOIN Employees e ON ts.SellerId = e.Id;
Window Functions
ROW_NUMBER — unique row counter per partition
SELECT Name, Department, Salary,
ROW_NUMBER() OVER (
PARTITION BY Department ORDER BY Salary DESC
) AS RowNum
FROM Employees;
RANK vs DENSE_RANK
SELECT Name, Score,
RANK() OVER (ORDER BY Score DESC) AS Rnk, -- gaps after ties
DENSE_RANK() OVER (ORDER BY Score DESC) AS DenseRnk -- no gaps
FROM Students;
LEAD / LAG — peek at next or previous row
SELECT OrderDate, Amount,
LAG(Amount, 1) OVER (ORDER BY OrderDate) AS PrevAmount,
LEAD(Amount, 1) OVER (ORDER BY OrderDate) AS NextAmount
FROM Orders;
INSERT / UPDATE / DELETE
INSERT — single & multi-row
-- Single row
INSERT INTO Employees (Name, Department, Salary)
VALUES ('Alice', 'Engineering', 95000);
--
-- Multiple rows
INSERT INTO Employees (Name, Department, Salary)
VALUES ('Bob', 'Marketing', 72000),
('Carol', 'Sales', 68000);
UPDATE with JOIN (SQL Server)
UPDATE e SET e.DeptName = d.Name FROM Employees e INNER JOIN Departments d ON e.DeptId = d.Id WHERE d.IsActive = 1;
DELETE with subquery guard
DELETE FROM Logs WHERE CreatedAt < DATEADD(MONTH, -6, GETDATE()) AND Id NOT IN (SELECT LogId FROM AuditTrail);
Indexes & Performance
Create a nonclustered index with INCLUDE
CREATE NONCLUSTERED INDEX IX_Employees_Dept ON Employees (Department) INCLUDE (Name, Salary);
Check existing indexes on a table
SELECT i.name AS IndexName, i.type_desc,
COL_NAME(ic.object_id, ic.column_id) AS ColumnName
FROM sys.indexes i
INNER JOIN sys.index_columns ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE i.object_id = OBJECT_ID('Employees');
Stored Procedures
Basic stored procedure with TRY/CATCH
CREATE PROCEDURE usp_GetEmployeesByDept
@DeptName NVARCHAR(100),
@MinSalary DECIMAL(10,2) = 0
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
SELECT Name, Salary
FROM Employees
WHERE Department = @DeptName
AND Salary >= @MinSalary
ORDER BY Salary DESC;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMsg;
END CATCH
END;
No snippets match your search.