sql
SKILL.md
SQL Skill
Comprehensive SQL assistance for database operations.
1. Query Writing
Basic Queries:
-- SELECT with WHERE
SELECT name, email FROM users WHERE active = true;
-- JOIN operations
SELECT u.name, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- Aggregate functions
SELECT category, COUNT(*), AVG(price)
FROM products
GROUP BY category
HAVING COUNT(*) > 5;
-- Subqueries
SELECT * FROM users
WHERE id IN (SELECT user_id FROM orders WHERE total > 1000);
2. Query Optimization
Use EXPLAIN:
EXPLAIN ANALYZE
SELECT * FROM users WHERE email = 'test@example.com';
-- Look for:
-- - Sequential scans (add indexes)
-- - High cost values
-- - Nested loops on large tables
Add Indexes:
-- Single column index
CREATE INDEX idx_users_email ON users(email);
-- Multi-column index
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at);
-- Unique index
CREATE UNIQUE INDEX idx_users_username ON users(username);
-- Partial index
CREATE INDEX idx_active_users ON users(email) WHERE active = true;
3. Schema Design
Tables:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
total DECIMAL(10,2) NOT NULL,
status VARCHAR(50) DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4. Migrations
Add Column:
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
-- Add with default
ALTER TABLE users ADD COLUMN verified BOOLEAN DEFAULT false;
Modify Column:
ALTER TABLE users ALTER COLUMN email TYPE VARCHAR(320);
ALTER TABLE users ALTER COLUMN name SET NOT NULL;
5. Transactions
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- With error handling
BEGIN;
-- operations
SAVEPOINT sp1;
-- more operations
ROLLBACK TO sp1;
COMMIT;
6. Common Patterns
Pagination:
SELECT * FROM products
ORDER BY created_at DESC
LIMIT 20 OFFSET 40;
Upsert:
INSERT INTO users (email, name)
VALUES ('test@example.com', 'Test')
ON CONFLICT (email)
DO UPDATE SET name = EXCLUDED.name;
Window Functions:
SELECT
name,
salary,
RANK() OVER (ORDER BY salary DESC) as rank
FROM employees;
When to Use This Skill
Use /sql when working with databases, optimizing queries, or designing schemas.
Weekly Installs
2
Repository
thechandanbhaga…e-skillsGitHub Stars
2
First Seen
Mar 1, 2026
Security Audits
Installed on
opencode2
gemini-cli2
codebuddy2
github-copilot2
codex2
kimi-cli2