Tóm tắt SQL nâng cao — Ràng buộc, thiết kế và tinh chỉnh trong một cái nhìn

Tóm tắt loạt bài SQL nâng cao. Tham chiếu chéo UPDATE/DELETE và UPSERT nâng cao, ràng buộc và khóa ngoại, type affinity và STRICT, chuẩn hóa và view, cùng thiết kế chỉ mục và tinh chỉnh bắt đầu từ EXPLAIN QUERY PLAN — kèm sơ đồ và danh mục bài viết.

Bức tranh toàn cảnh những gì bạn đã học trong SQL nâng cao

Trang này gom loạt bài SQL nâng cao về một trang duy nhất, nhìn qua ba lăng kính: ràng buộc và thiết kế giữ dữ liệu an toàn, một schema đúng và dễ đọc, và chỉ mục cùng tinh chỉnh để truy vấn nhanh.

Sau khi nắm cú pháp ở phần Cơ bản và tổng hợp, JOIN, window function ở loạt Trung cấp, phần Nâng cao xoay quanh giữ cho dữ liệu đúng và làm nó chạy nhanh — thiết kế và tinh chỉnh.

Dùng các liên kết tới bất kỳ bài nào để quay lại ôn tập bất cứ lúc nào.

Bức tranh toàn cảnh về những gì SQL nâng cao cho bạn làm
Di chuyểnUPDATE / DELETE / UPSERT nâng caoGiữ đúngRàng buộc / FKs / kiểuSắp xếpChuẩn hóa / view / thiết kếĐọc kế hoạchEXPLAIN / thống kê / joinTăng tốcThiết kế chỉ mụcbảo vệsắp xếpđo lườngcải thiện
Di chuyển dữ liệu với DML nâng cao, giữ nó đúng bằng ràng buộc, khóa ngoại và kiểu dữ liệu, sắp xếp schema bằng thiết kế, và tăng tốc truy vấn với kế hoạch thực thi và chỉ mục.

Giữ cho dữ liệu đúng — ghi nâng cao, ràng buộc, khóa ngoại, kiểu dữ liệu, thiết kế

Chúng ta đã đi qua UPDATE / DELETEUPSERT nâng cao với truy vấn con và JOIN, ràng buộc cột và khóa ngoại, type affinity và STRICT, rồi tới chuẩn hóa, view và thực hành thiết kế.

Sơ đồ dưới đây gom nhóm DML nâng cao với ràng buộc/kiểu dữ liệu, và gom thiết kế/view lại với nhau.

11 bài về ghi nâng cao, ràng buộc, kiểu dữ liệu và thiết kế
Ghi nâng caoDi chuyểnUPDATE / DELETEứng dụngUPSERTON CONFLICTRàng buộc / kiểuGiữ đúngRàng buộc / FKsđổi ràng buộcType affinitySTRICT / ngàyThiết kếSắp xếpChuẩn hóa1NF tới 3NFViewthực hành thiết kế
Di chuyển dữ liệu với ghi nâng cao, bảo vệ tính đúng của nó bằng ràng buộc, khóa ngoại và kiểu dữ liệu, và sắp xếp schema bằng chuẩn hóa, view và thực hành thiết kế.
Phân loạiBài viếtBạn học được gì
Ghi nâng caoUPDATE / DELETE với truy vấn con và JOINCập nhật tương quan, UPDATE … FROM, DELETE với điều kiện truy vấn con
Ghi nâng caoUPSERT (ON CONFLICT) và các ứng dụng bulk INSERTINSERT … ON CONFLICT DO UPDATE, excluded, bulk INSERT
Ràng buộcRàng buộc cột — NOT NULL / UNIQUE / CHECK / PRIMARY KEYNOT NULL / UNIQUE / CHECK / PRIMARY KEY và các vi phạm
Khóa ngoạiRàng buộc khóa ngoại và hành động tham chiếuREFERENCES, ON DELETE / UPDATE, foreign_keys=ON
Đổi ràng buộcThêm/đổi ràng buộc và định nghĩa lại bảngBổ sung ràng buộc về sau, quy trình dựng lại bảng
Kiểu dữ liệuChuỗi, số, boolean và chuyển đổi kiểu ngầm địnhType affinity, chuyển đổi ngầm định, so với kiểu nghiêm ngặt
Kiểu dữ liệuKiểu Date/Time và bảng STRICTLưu và so sánh date/time, bảng STRICT
Thiết kếThiết kế bảng và chuẩn hóa1NF tới 3NF, loại bỏ cột lặp, schema 3 tầng
Thiết kếView (VIEW)CREATE VIEW, dùng view, view có thể cập nhật

Làm truy vấn chạy nhanh — kế hoạch thực thi, chỉ mục, tinh chỉnh

Đọc kế hoạch với EXPLAIN QUERY PLAN, hiểu thống kê, bộ tối ưu và các thuật toán join, nắm được thiết kế chỉ mục, index-only scan, đánh chỉ mục cho sắp xếp và nhóm, các mẫu mà chỉ mục không phát huy tác dụng, rồi kết thúc với việc viết lại truy vấn.

Bảng dưới đây sắp xếp từng bài viết.

Phân loạiBài viếtBạn học được gì
Kế hoạch thực thiĐọc kế hoạch thực thiTừ vựng: SCAN / SEARCH / USE TEMP B-TREE và nhiều hơn
Thống kêThống kê và bộ tối ưuANALYZE, sqlite_stat1, độ chọn lọc và thay đổi kế hoạch
JoinThuật toán Join và Thứ tự JoinNested loop, thứ tự join, chỉ mục tự động
Chỉ mụcChỉ mục — Composite, Partial, Expression, UNIQUEChỉ mục composite, partial, expression, UNIQUE với EXPLAIN
Chỉ mụcThiết kế chỉ mụcThứ tự cột composite, leftmost prefix, điều kiện dùng chỉ mục
Chỉ mụcIndex-Only ScanIndex-only scan, USING COVERING INDEX
Chỉ mụcĐánh chỉ mục ORDER BY / GROUP BYTránh USE TEMP B-TREE, đánh chỉ mục cho sắp xếp và nhóm
Chỉ mụcKhi chỉ mục không hoạt độngHàm trên cột, ép kiểu ngầm, LIKE, OR, và cách sửa bằng chỉ mục expression/partial
Viết lạiViết lại truy vấn ① IN / EXISTS và khử tương quanIN vs EXISTS, khử tương quan, semi-join / anti-join
Viết lạiViết lại truy vấn ② loại bỏ công việc lặp, ví dụ thực hànhLoại bỏ công việc lặp, tối ưu truy vấn con với ví dụ

Làm tốt lắm!

Đến giờ bạn đã gom lại UPDATE / DELETEUPSERT nâng cao, mặt thiết kế với ràng buộc, khóa ngoại, kiểu dữ liệu, chuẩn hóa và view, cùng mặt tinh chỉnh với thiết kế chỉ mục và hơn thế, bắt đầu từ EXPLAIN QUERY PLAN.

Đây cũng đánh dấu việc hoàn thành cả ba cấp của khóa học SQL — Cơ bản, Trung cấp và Nâng cao.

Làm tốt lắm khi đi tới cuối chặng đường.

Hãy quay lại bất kỳ bài nào đã thu hút bạn và tiếp tục thử nghiệm với dữ liệu của riêng mình.