Cơ bảnKiến thức cơ bản

SQL là gì? Hướng dẫn SQL cơ bản từ đầu

8 phút đọc0 lượt xem
#sql#database#mysql#postgresql#cơ sở dữ liệu

SQL là gì?

Định nghĩa SQL đơn giản

SQL là viết tắt của Structured Query Language (Ngôn ngữ truy vấn có cấu trúc). Đây là ngôn ngữ dùng để giao tiếp với cơ sở dữ liệu — bạn ra lệnh cho database "lấy dữ liệu này", "thêm dữ liệu kia", "cập nhật thông tin này" bằng SQL.

Nói đơn giản: SQL là ngôn ngữ để "nói chuyện" với database.

Hãy tưởng tượng bạn đến thư viện và nhờ thủ thư: "Cho tôi xem tất cả sách về lập trình". Thủ thư sẽ tìm và đưa cho bạn kết quả. SQL hoạt động y hệt — bạn viết câu lệnh, database trả về kết quả.

SQL dùng để làm gì?

SQL thực hiện 4 thao tác chính, gọi là CRUD:

  • Create (Tạo mới) — Thêm dữ liệu mới vào database
  • Read (Đọc) — Tìm kiếm và hiển thị dữ liệu
  • Update (Cập nhật) — Thay đổi dữ liệu đã có
  • Delete (Xóa) — Xóa dữ liệu không cần

Từ website, ứng dụng mobile, đến hệ thống doanh nghiệp — hầu hết mọi ứng dụng đều dùng SQL ở phía backend.

Cơ sở dữ liệu (Database) là gì?

Giống bảng Excel khổng lồ

Cách dễ nhất để hiểu database là nghĩ đến bảng Excel:

  • Table (Bảng) = Sheet trong Excel
  • Row (Hàng) = Một bản ghi dữ liệu (ví dụ: thông tin 1 sinh viên)
  • Column (Cột) = Loại thông tin (ví dụ: tên, tuổi, email)

Ví dụ bảng quản lý sinh viên:

| id | ho_ten            | tuoi | email          | nganh    |
|----|-------------------|------|----------------|----------|
| 1  | Nguyễn Văn Minh   | 20   | minh@email.com | CNTT     |
| 2  | Trần Thị Lan      | 21   | lan@email.com  | CNTT     |
| 3  | Lê Hoàng Nam      | 19   | nam@email.com  | Kinh tế  |

Cơ sở dữ liệu quan hệ (Relational Database)

Trong database quan hệ, nhiều bảng được liên kết với nhau thông qua "khóa" (key). Ví dụ:

  • Bảng "Sinh viên" và bảng "Điểm thi" liên kết qua sinh_vien_id
  • Bảng "Đơn hàng" và bảng "Sản phẩm" liên kết qua san_pham_id

Nhờ cơ chế này, dữ liệu không bị trùng lặp và được quản lý hiệu quả hơn.

Tại sao cần học SQL?

SQL có mặt ở khắp nơi

  • Ứng dụng web: Đăng ký tài khoản, đăng nhập, lưu bài viết
  • E-commerce: Quản lý sản phẩm, đơn hàng, kho hàng (Shopee, Lazada...)
  • Phân tích dữ liệu: Phân tích doanh thu, hành vi người dùng
  • Ứng dụng mobile: SQLite lưu dữ liệu cục bộ

Cơ hội nghề nghiệp với SQL

SQL là kỹ năng bắt buộc cho:

  • Backend Developer — Thao tác dữ liệu trong ứng dụng
  • Data Analyst — Trích xuất và phân tích dữ liệu
  • Data Scientist — Xử lý dữ liệu lớn
  • QA Engineer — Kiểm tra dữ liệu trong quá trình test

Năm 2026, hầu hết các tin tuyển dụng IT trên TopDev và ITviec đều yêu cầu SQL — đây là kỹ năng không thể thiếu.

Dễ học cho người mới

Cú pháp SQL gần giống tiếng Anh tự nhiên, rất dễ hiểu:

-- "Lấy tất cả từ bảng sinh_vien"
SELECT * FROM sinh_vien;

-- Đọc như tiếng Anh: "SELECT everything FROM students"
-- Gần như câu tiếng Anh bình thường!

Các hệ quản trị cơ sở dữ liệu phổ biến

  • MySQL — Miễn phí, phổ biến nhất thế giới, dùng nhiều cho web
  • PostgreSQL — Miễn phí, nhiều tính năng mạnh mẽ, được startup và doanh nghiệp ưa chuộng
  • SQLite — Siêu nhẹ, không cần cài đặt server, phù hợp cho mobile và prototype
  • SQL Server — Sản phẩm của Microsoft, dùng trong doanh nghiệp lớn

Nếu bạn là người mới, hãy dùng SQLiteOnline.com — không cần cài đặt gì cả, chỉ cần trình duyệt là luyện tập được ngay.

Cú pháp SQL cơ bản

Hãy bắt đầu viết SQL! Đầu tiên, tạo bảng để luyện tập:

Tạo bảng (CREATE TABLE)

-- Tạo bảng quản lý sinh viên
CREATE TABLE sinh_vien (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    ho_ten TEXT NOT NULL,        -- Họ tên (bắt buộc nhập)
    tuoi INTEGER,                -- Tuổi
    email TEXT,                  -- Email
    nganh TEXT                   -- Ngành học
);

INSERT — Thêm dữ liệu

-- Thêm một sinh viên
INSERT INTO sinh_vien (ho_ten, tuoi, email, nganh)
VALUES ('Nguyễn Văn Minh', 20, 'minh@email.com', 'CNTT');

-- Thêm nhiều sinh viên cùng lúc
INSERT INTO sinh_vien (ho_ten, tuoi, email, nganh)
VALUES
    ('Trần Thị Lan', 21, 'lan@email.com', 'CNTT'),
    ('Lê Hoàng Nam', 19, 'nam@email.com', 'Kinh tế'),
    ('Phạm Thị Mai', 22, 'mai@email.com', 'CNTT'),
    ('Võ Đức Hùng', 20, 'hung@email.com', 'Marketing');

SELECT — Truy vấn dữ liệu

-- Lấy tất cả dữ liệu
SELECT * FROM sinh_vien;

-- Chỉ lấy tên và ngành
SELECT ho_ten, nganh FROM sinh_vien;

-- Lọc sinh viên ngành CNTT
SELECT * FROM sinh_vien WHERE nganh = 'CNTT';

-- Sắp xếp theo tuổi (từ nhỏ đến lớn)
SELECT * FROM sinh_vien ORDER BY tuoi ASC;

-- Đếm tổng số sinh viên
SELECT COUNT(*) AS so_luong FROM sinh_vien;

-- Đếm theo từng ngành
SELECT nganh, COUNT(*) AS so_luong
FROM sinh_vien
GROUP BY nganh;

UPDATE — Cập nhật dữ liệu

-- Cập nhật email của Minh
UPDATE sinh_vien
SET email = 'minh.nguyen@email.com'
WHERE ho_ten = 'Nguyễn Văn Minh';

-- ⚠ QUAN TRỌNG: Luôn dùng WHERE khi UPDATE!
-- Nếu không có WHERE, TẤT CẢ dữ liệu sẽ bị thay đổi!

DELETE — Xóa dữ liệu

-- Xóa sinh viên có id = 3
DELETE FROM sinh_vien WHERE id = 3;

-- ⚠ CẢNH BÁO: DELETE không có WHERE sẽ xóa HẾT dữ liệu!
-- DELETE FROM sinh_vien; -- NGUY HIỂM! Đừng bao giờ chạy lệnh này!

WHERE — Lọc dữ liệu theo điều kiện

-- Sinh viên CNTT có tuổi từ 20 trở lên
SELECT * FROM sinh_vien
WHERE nganh = 'CNTT' AND tuoi >= 20;

-- Sinh viên CNTT hoặc Marketing
SELECT * FROM sinh_vien
WHERE nganh = 'CNTT' OR nganh = 'Marketing';

-- Tìm sinh viên có tên chứa "Nguyễn"
SELECT * FROM sinh_vien
WHERE ho_ten LIKE '%Nguyễn%';

Tìm hiểu chi tiết hơn tại bài viết Các lệnh SQL cơ bản: SELECT, INSERT, UPDATE, DELETE.

Thực hành: Viết câu lệnh SQL đầu tiên

Luyện tập online (không cần cài đặt)

  1. Truy cập SQLiteOnline.com
  2. Dán đoạn CREATE TABLE ở trên vào ô bên trái
  3. Nhấn nút "Run" để tạo bảng
  4. Dán đoạn INSERT và nhấn "Run" để thêm dữ liệu
  5. Thử các câu SELECT để tìm kiếm dữ liệu

Bài tập thực hành

Sau khi tạo bảng, hãy thử viết SQL cho các yêu cầu sau:

  1. Hiển thị tên và tuổi của tất cả sinh viên
  2. Tìm sinh viên có tuổi từ 20 trở lên
  3. Hiển thị sinh viên ngành CNTT, sắp xếp theo tuổi
  4. Đếm số sinh viên theo từng ngành
  5. Cập nhật email của một sinh viên bất kỳ

Câu hỏi thường gặp (FAQ)

Hỏi: SQL có phải là ngôn ngữ lập trình không?

Trả lời: SQL là "ngôn ngữ chuyên dụng" (domain-specific language), khác với ngôn ngữ lập trình đa năng như Python hay JavaScript. SQL chỉ dùng để thao tác với database.

Hỏi: Nên học MySQL hay PostgreSQL?

Trả lời: Cú pháp SQL cơ bản giống nhau giữa các hệ quản trị. Hãy học SQL chuẩn trước, sau đó chọn MySQL hoặc PostgreSQL tùy dự án.

Hỏi: Học SQL mất bao lâu?

Trả lời: Các lệnh cơ bản (SELECT, INSERT, UPDATE, DELETE) mất khoảng 1 tuần. Các chủ đề nâng cao như JOIN, subquery mất thêm 2–4 tuần.

Hỏi: NoSQL khác SQL như thế nào?

Trả lời: SQL lưu dữ liệu dạng bảng (table). NoSQL (như MongoDB) lưu dạng JSON linh hoạt hơn. Mỗi loại có ưu điểm riêng tùy trường hợp sử dụng.

Bước tiếp theo — Học gì sau SQL cơ bản?

Sau khi nắm vững SQL cơ bản, hãy tiếp tục với:

  1. Học sâu hơn các lệnh SQL — JOIN, subquery, hàm tổng hợp → Các lệnh SQL cơ bản: SELECT, INSERT, UPDATE, DELETE
  2. Cài đặt và sử dụng DBMS thực tế — MySQL hoặc PostgreSQL

SQL là kỹ năng cần thiết trong mọi lĩnh vực IT. Hãy bắt đầu luyện tập từ hôm nay và khám phá thế giới database nhé!

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete SQL Bootcamp: Go from Zero to Hero

SQL từ cơ bản đến nâng cao với PostgreSQL.

4.7399.000 ₫
Xem khóa học →

MongoDB - The Complete Developer's Guide

Học MongoDB toàn diện: CRUD, aggregation, indexing.

4.6499.000 ₫
Xem khóa học →
Quảng cáo