sql
SQL là cách hỏi một câu hỏi về dữ liệu và để cơ sở dữ liệu tự tìm cách trả lời. Ba chặng, đi từ đọc ra một bảng tới giữ cho dữ liệu không sai.
9 cột mốc · 3 có bài trong app
Bắt đầu
1Đọc dữ liệu ra
Lấy đúng những hàng và những cột bạn cần, không nhiều hơn.
- SELECT · FROMcó bàiChọn cột nào, từ bảng nào. Thứ tự viết khác thứ tự chạy — đó là bài học đầu tiên của SQL.
- WHEREcó bàiLọc hàng. Chạy TRƯỚC SELECT, nên nó lọc trên cột gốc chứ không lọc trên cột bạn vừa đặt tên.
- ORDER BY · LIMITcó bàiLIMIT mà không ORDER BY là lấy bừa mấy hàng đầu — cái bẫy hay gặp nhất.
2Nhiều bảng
Nối dữ liệu nằm rải ở nhiều bảng lại thành một câu trả lời.
- Khoá chính · khoá ngoạitự tìm hiểuCách hai bảng biết chúng đang nói về cùng một thứ. Không có nó thì không có JOIN.
- JOINtự tìm hiểuINNER giữ phần chung, LEFT giữ hết bên trái. Chọn sai loại là mất hàng mà không hay biết.
- GROUP BY · HAVINGtự tìm hiểuGộp nhiều hàng thành một con số. HAVING lọc SAU khi gộp, WHERE lọc trước.
3Ghi vào và giữ cho đúng
Thay đổi dữ liệu mà không để lại trạng thái nửa vời.
- INSERT · UPDATE · DELETEtự tìm hiểuUPDATE hay DELETE mà quên WHERE là sửa cả bảng. Chạy thử bằng SELECT trước.
- Transactiontự tìm hiểuNhiều lệnh coi như một: hoặc xong hết, hoặc như chưa từng chạy.
- Indextự tìm hiểuVì sao cùng một câu query mà bảng 10 hàng chạy tức thì còn bảng 10 triệu hàng thì đứng hình.
Đích
Lộ trình dừng ở đây
Ba chặng trên phủ gần hết những câu SQL bạn viết hằng ngày. Phần dưới là hướng đi tiếp.
- EXPLAINHỏi ngược lại cơ sở dữ liệu: mày định chạy câu này thế nào.
- Chuẩn hoá dữ liệuChia bảng thế nào để không lưu cùng một sự thật ở hai chỗ.
- Vấn đề N+1Một query thành một nghìn query mà code nhìn vẫn sạch sẽ.
- MigrationĐổi cấu trúc bảng trên hệ thống đang chạy mà không mất dữ liệu.