Databases Cheatsheet

Introduction Types SQL Core SQL Indexes & Keys Normalization Transactions NoSQL Popular DBs Performance Backup Security Best Practices Complexity

Introduction

Intro

Database Types

Types
Type Description Examples
Relational (RDBMS) Table-based, SQL, ACID MySQL, PostgreSQL, SQLite, Oracle
NoSQL - Document JSON-like docs, flexible schema MongoDB, CouchDB, Firebase
NoSQL - Key-Value Simple key-value pairs Redis, DynamoDB, Riak
NoSQL - Column Column-family, scalable Cassandra, HBase
NoSQL - Graph Nodes & edges, relationships Neo4j, ArangoDB
Time-Series Optimized for time-stamped data InfluxDB, TimescaleDB
NewSQL SQL + NoSQL scalability CockroachDB, Google Spanner
In-Memory Data in RAM, ultra-fast Redis, Memcached

SQL Basics

SQL
Category Commands
DDL CREATE, ALTER, DROP, TRUNCATE
DML SELECT, INSERT, UPDATE, DELETE
DCL GRANT, REVOKE
TCL COMMIT, ROLLBACK, SAVEPOINT

Core SQL Syntax

Core SQL
-- SELECT
SELECT * FROM users;
SELECT name, age FROM users WHERE age > 18 ORDER BY age DESC;

-- INSERT
INSERT INTO users (name, age) VALUES ('Alice', 25);

-- UPDATE
UPDATE users SET age = 26 WHERE name = 'Alice';

-- DELETE
DELETE FROM users WHERE age < 18;

-- JOINs
SELECT u.name, o.amount FROM users u
JOIN orders o ON u.id = o.user_id;

-- GROUP BY
SELECT department, COUNT(*) FROM employees GROUP BY department;

-- Subquery
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);

Indexes & Keys

Indexes
Type Description
Primary Key Unique, not null, identifies row
Foreign Key Links to another table's PK
Unique Key Unique, can be null
Composite Key Multiple columns as PK
Index Speeds up search, not unique
-- Create Index
CREATE INDEX idx_name ON users(name);
-- Unique Key
ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE(email);
-- Foreign Key
ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES users(id);

Normalization

Normalization
Form Rule
1NF Atomic values, unique rows
2NF 1NF + no partial dependency
3NF 2NF + no transitive dependency
BCNF Stricter than 3NF

Denormalization: combining tables for performance, at the cost of redundancy.

Transactions & ACID

Transactions
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

NoSQL Concepts

NoSQL
Type Description Example
Document JSON/BSON docs MongoDB
Key-Value Simple pairs Redis
Column Column families Cassandra
Graph Nodes & edges Neo4j
// MongoDB Insert
{
  name: "Alice",
  age: 25,
  skills: ["SQL", "NoSQL"]
}
// Redis Set
SET user:1:name "Alice"
// Cassandra Table
CREATE TABLE users (id UUID PRIMARY KEY, name TEXT);

Performance & Optimization

Performance
EXPLAIN SELECT * FROM users WHERE email = 'a@b.com';

Backup & Recovery

Backup
# MySQL
mysqldump -u user -p dbname > backup.sql
# PostgreSQL
pg_dump dbname > backup.sql
# MongoDB
mongodump --db dbname --out /backup/dir

Security

Security
-- Create user with limited privileges
CREATE USER 'readonly'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON dbname.* TO 'readonly'@'%';
-- Prevent SQL injection
SELECT * FROM users WHERE email = ?;

Best Practices

Best

Complexity Table

Complexity
Operation Time Complexity
SELECT (PK) O(1)
SELECT (no index) O(n)
INSERT O(1)
UPDATE O(1) - O(n)
DELETE O(1) - O(n)
JOIN O(n*m)