📘 MySQL Basics
-- Login to MySQL
mysql -u root -p
-- Show all databases
SHOW DATABASES;
-- Create new database
CREATE DATABASE mydb;
-- Use a database
USE mydb;
-- Show tables
SHOW TABLES;
-- Describe table structure
DESCRIBE users;
📦 Tables & Data
-- Create table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Insert data
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
-- Select data
SELECT * FROM users;
SELECT name, email FROM users WHERE id = 1;
-- Update data
UPDATE users SET name = 'Alice Smith' WHERE id = 1;
-- Delete data
DELETE FROM users WHERE id = 2;
🔗 Joins
-- Inner Join
SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- Left Join
SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
-- Right Join
SELECT users.name, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
-- Full Outer Join (not directly supported, use UNION)
SELECT users.name, orders.product
FROM users LEFT JOIN orders ON users.id = orders.user_id
UNION
SELECT users.name, orders.product
FROM users RIGHT JOIN orders ON users.id = orders.user_id;
🛡️ Constraints
-- Primary Key
CREATE TABLE categories (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
-- Foreign Key
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
category_id INT,
FOREIGN KEY (category_id) REFERENCES categories(id)
);
-- Unique Constraint
ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE(email);
-- Default Value
ALTER TABLE users ADD COLUMN status VARCHAR(10) DEFAULT 'active';
⚡ Indexes & Performance
-- Create Index
CREATE INDEX idx_email ON users(email);
-- Unique Index
CREATE UNIQUE INDEX idx_unique_email ON users(email);
-- Show Indexes
SHOW INDEX FROM users;
-- Drop Index
DROP INDEX idx_email ON users;
👀 Views
-- Create View
CREATE VIEW active_users AS
SELECT id, name, email
FROM users
WHERE status = 'active';
-- Use View
SELECT * FROM active_users;
-- Drop View
DROP VIEW active_users;
💰 Transactions
-- Start transaction
START TRANSACTION;
-- Example
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- Commit (save changes)
COMMIT;
-- Rollback (undo changes)
ROLLBACK;
🧠 Advanced MySQL
-- Stored Procedure
DELIMITER //
CREATE PROCEDURE GetUsers()
BEGIN
SELECT * FROM users;
END //
DELIMITER ;
CALL GetUsers();
-- Function
DELIMITER //
CREATE FUNCTION getUserCount()
RETURNS INT DETERMINISTIC
BEGIN
DECLARE total INT;
SELECT COUNT(*) INTO total FROM users;
RETURN total;
END //
DELIMITER ;
SELECT getUserCount();
-- Trigger
CREATE TRIGGER before_user_insert
BEFORE INSERT ON users
FOR EACH ROW
SET NEW.created_at = NOW();
💡 Pro Tips
-- Import SQL file
mysql -u root -p mydb < backup.sql
-- Export SQL file
mysqldump -u root -p mydb > backup.sql
-- Optimize Table
OPTIMIZE TABLE users;
-- Check slow queries
SHOW FULL PROCESSLIST;