+1

SQL là gì? "Ngôn ngữ vạn năng" để trò chuyện với dữ liệu

1. SQL thực chất là gì?

SQL (Structured Query Language) – Ngôn ngữ truy vấn có cấu trúc – là ngôn ngữ tiêu chuẩn dùng để giao tiếp với các Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như MySQL, PostgreSQL, SQL Server hay Oracle.

Nếu Database là một thư viện khổng lồ, thì SQL chính là "phiếu yêu cầu" mà bạn đưa cho thủ thư. Thay vì phải tự đi lục lọi từng kệ sách, bạn chỉ cần viết một dòng lệnh SQL, và "ông thủ thư" DBMS sẽ mang đúng cuốn sách bạn cần ra tận nơi.

2. Sự khác biệt: Nói "Cái gì" thay vì nói "Như thế nào"

Điểm thú vị nhất của SQL so với các ngôn ngữ lập trình như Go, PHP hay Java là nó thuộc nhóm Declarative Language (Ngôn ngữ khai báo).

  • Ngôn ngữ thông thường: Bạn phải chỉ dẫn từng bước: "Đi đến ngăn kệ A, đếm từ trái sang phải 5 quyển, lấy quyển đó ra".
  • SQL: Bạn chỉ cần nói kết quả mình muốn: "Lấy cho tôi quyển sách có tên là 'Lập trình Go' của tác giả Nguyễn Văn A".

Bạn không cần quan tâm Database tìm kiếm bằng thuật toán gì (B-Tree hay Hash), bạn chỉ cần ra lệnh đúng cú pháp, SQL sẽ lo phần còn lại.

3. "Tứ trụ" của SQL: Các nhóm lệnh chính

Đừng để hàng trăm câu lệnh làm bạn rối. SQL thực tế được chia thành các nhóm mục đích rõ ràng:

  • DQL (Data Query Language): Đây là nhóm bạn dùng nhiều nhất. Lệnh SELECT thần thánh dùng để trích xuất dữ liệu.
  • DML (Data Manipulation Language): Dùng để thay đổi dữ liệu. Bao gồm INSERT (thêm), UPDATE (sửa), DELETE (xóa).
  • DDL (Data Definition Language): Dùng để định nghĩa cấu trúc. Ví dụ: CREATE TABLE để xây cái "khung" cho bảng, ALTER để sửa cột.
  • DCL & TCL (Control Language): Dùng để quản lý quyền truy cập (ai được xem, ai không) và quản lý các giao dịch (Transaction) để đảm bảo tính ACID mà mình đã nhắc ở bài trước.

4. Tại sao SQL vẫn là "vua" sau hơn 50 năm?

Ra đời từ những năm 1970, đến nay SQL vẫn đứng vững trước làn sóng NoSQL. Tại sao vậy?

  1. Tính chuẩn hóa: Cú pháp SQL gần như giống nhau ở mọi nền tảng. Bạn học SQL cho MySQL thì có thể dùng được 80-90% cho PostgreSQL hay SQL Server.
  2. Khả năng phân tích mạnh mẽ: SQL cực kỳ giỏi trong việc gộp dữ liệu (Join), thống kê (Aggregate) và lọc theo những điều kiện phức tạp.
  3. Cộng đồng khổng lồ: Gặp lỗi SQL? Chỉ cần 5 giây trên Google hoặc StackOverflow là có lời giải.

5. SQL có "chết" trước NoSQL không?

Câu trả lời là KHÔNG. Thực tế, xu hướng hiện nay là NewSQL hoặc các hệ thống NoSQL cũng đang cố gắng hỗ trợ cú pháp giống SQL (ví dụ: Couchbase với N1QL) vì sự tiện lợi và phổ biến của nó. SQL và NoSQL giờ đây thường chung sống hòa bình trong cùng một hệ thống (Polyglot Persistence).

Lời kết

Học SQL không chỉ là học thuộc lòng các câu lệnh SELECT * FROM.... Cái khó và cái hay của SQL nằm ở tư duy tập hợp (Set-based logic) và cách tối ưu câu lệnh để chạy nhanh trên hàng triệu bản ghi.

Ở bài viết tới, mình sẽ hướng dẫn các bạn cách viết một câu JOIN sao cho chuẩn và tránh các lỗi "chết người" về hiệu năng. Anh em cùng chờ xem nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí