Bảng tra cứu MySQL
Một tài liệu tham khảo MySQL có thể tìm kiếm và in được — truy vấn, join, chỉ mục, hàm, kiểu dữ liệu và các lệnh quản trị. Miễn phí.
Truy vấn
10SELECT * FROM users;
Chọn tất cả cột và hàng
SELECT id, name FROM users;
Chọn các cột cụ thể
SELECT DISTINCT city FROM users;
Chỉ giá trị duy nhất
WHERE age > 18 AND active = 1
Lọc hàng theo điều kiện
WHERE name LIKE 'A%'
Khớp mẫu (% = ký tự bất kỳ)
WHERE id IN (1, 2, 3)
Khớp giá trị bất kỳ trong tập
WHERE age BETWEEN 18 AND 30
Lọc khoảng bao gồm
ORDER BY created_at DESC
Sắp xếp giảm dần
LIMIT 10 OFFSET 20
Phân trang kết quả
WHERE email IS NULL
Khớp giá trị null
Phép join
8INNER JOIN orders ON orders.user_id = users.id
Hàng khớp ở cả hai bảng
LEFT JOIN orders ON ...
Tất cả hàng trái + khớp
RIGHT JOIN orders ON ...
Tất cả hàng phải + khớp
CROSS JOIN colors
Tích Descartes
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
Join bảng với chính nó
USING (user_id)
Join trên cột cùng tên
UNION / UNION ALL
Kết hợp các tập kết quả
SELECT u.*, o.total FROM users u JOIN orders o
Đặt bí danh bảng cho rõ ràng
Tổng hợp
9COUNT(*)
Đếm hàng
SUM(amount)
Tổng của cột số
AVG(price)
Giá trị trung bình
MIN(price), MAX(price)
Nhỏ nhất và lớn nhất
GROUP BY country
Nhóm hàng để tổng hợp
HAVING COUNT(*) > 5
Lọc trên nhóm đã tổng hợp
GROUP_CONCAT(name)
Nối các giá trị đã nhóm
COUNT(DISTINCT city)
Đếm giá trị duy nhất
ROW_NUMBER() OVER (ORDER BY id)
Xếp hạng bằng hàm cửa sổ
Sửa đổi dữ liệu
8INSERT INTO users (name) VALUES ('Sam');
Chèn một hàng
INSERT INTO users (name) VALUES ('A'),('B');
Chèn nhiều hàng
UPDATE users SET active = 1 WHERE id = 5;
Cập nhật hàng khớp
DELETE FROM users WHERE id = 5;
Xóa hàng khớp
TRUNCATE TABLE logs;
Xóa nhanh tất cả hàng
INSERT ... ON DUPLICATE KEY UPDATE
Upsert trên key duy nhất
REPLACE INTO users ...
Xóa + chèn khi xung đột
INSERT IGNORE INTO ...
Bỏ qua hàng gây lỗi
Schema / DDL
9CREATE TABLE users (id INT PRIMARY KEY);
Tạo bảng mới
AUTO_INCREMENT
Cột tự đánh số
ALTER TABLE users ADD COLUMN age INT;
Thêm một cột
ALTER TABLE users DROP COLUMN age;
Xóa một cột
ALTER TABLE users MODIFY name VARCHAR(100);
Đổi kiểu của cột
DROP TABLE IF EXISTS users;
Xóa một bảng
FOREIGN KEY (user_id) REFERENCES users(id)
Tham chiếu bảng khác
ON DELETE CASCADE
Xóa lan truyền tới bảng con
CREATE TABLE t2 LIKE t1;
Sao chép cấu trúc bảng
Index & key
8PRIMARY KEY (id)
Định danh hàng duy nhất
UNIQUE (email)
Bắt buộc giá trị duy nhất
CREATE INDEX idx_name ON users (name);
Tăng tốc tra cứu trên cột
CREATE INDEX idx_ab ON t (a, b);
Index ghép (nhiều cột)
DROP INDEX idx_name ON users;
Xóa một index
FULLTEXT (body)
Index tìm kiếm toàn văn
EXPLAIN SELECT ...;
Hiện kế hoạch truy vấn
SHOW INDEX FROM users;
Liệt kê index trên bảng
Kiểu dữ liệu
9INT, BIGINT, TINYINT
Kiểu số nguyên theo kích thước
DECIMAL(10, 2)
Số dấu phẩy cố định chính xác
VARCHAR(255)
Chuỗi độ dài thay đổi
TEXT, LONGTEXT
Khối văn bản lớn
DATE, DATETIME, TIMESTAMP
Kiểu ngày và giờ
BOOLEAN (TINYINT(1))
True/false lưu dạng 0/1
JSON
Cột tài liệu JSON nguyên bản
ENUM('a', 'b')
Một trong tập giá trị cố định
UNSIGNED
Bổ ngữ số không âm
Type sizes & limits
20TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155
Hàm
9NOW(), CURDATE()
Ngày giờ / ngày hiện tại
DATE_FORMAT(d, '%Y-%m-%d')
Định dạng một ngày
DATEDIFF(a, b)
Số ngày giữa hai ngày
CONCAT(a, ' ', b)
Nối các chuỗi
COALESCE(a, b, 'n/a')
Giá trị không null đầu tiên
IFNULL(x, 0)
Thay null bằng mặc định
CASE WHEN x > 0 THEN '+' ELSE '-' END
Biểu thức điều kiện
CAST(x AS CHAR)
Chuyển đổi kiểu giá trị
ROUND(x, 2)
Làm tròn tới số thập phân
Giao dịch & quản trị
9START TRANSACTION;
Bắt đầu một giao dịch
COMMIT;
Lưu giao dịch
ROLLBACK;
Hoàn tác giao dịch
SAVEPOINT sp1;
Đặt điểm rollback
SHOW TABLES;
Liệt kê bảng trong cơ sở dữ liệu
DESCRIBE users;
Hiện cấu trúc bảng
SHOW PROCESSLIST;
Liệt kê kết nối đang chạy
GRANT ALL ON db.* TO 'u'@'%';
Cấp quyền cho người dùng
mysqldump -u root db > db.sql
Sao lưu cơ sở dữ liệu (CLI)
Không có mục nào khớp với “:q”.
Cần trợ giúp?
Gặp sự cố với công cụ này? Hãy cho đội ngũ của chúng tôi biết.