SAU BÀI HỌC NÀY EM SẼ:
- Hiểu được lợi ích của ngôn ngữ truy vấn SQL.
- Biết các câu lệnh SQL để: Tạo CSDL, tạo bảng; Thêm, sửa, xoá dữ liệu; Truy xuất dữ liệu; Kiểm soát quyền truy cập.
1. LỢI ÍCH CỦA NGÔN NGỮ TRUY VẤN

Cách 1 – Lập trình trực tiếp
- Phải biết rõ cấu trúc bảng
- Tự viết chương trình đọc, xử lí
- Cần biết nhiều về lập trình
Cách 2 – Dùng ngôn ngữ truy vấn
- Chỉ cần nêu yêu cầu lấy dữ liệu
- Hệ QTCSDL tự xử lí và trả kết quả
👉 SQL giúp truy vấn, cập nhật và quản lí dữ liệu mà không cần tự viết chương trình xử lí CSDL.
SQL (Structured Query Language) là ngôn ngữ truy vấn có cấu trúc, được sử dụng phổ biến để làm việc với CSDL quan hệ.
Các nhóm lệnh chính:
| Nhóm | Chức năng |
|---|---|
| DDL | Định nghĩa CSDL, bảng |
| DML | Truy xuất, thêm, sửa, xoá dữ liệu |
| DCL | Cấp và thu hồi quyền |
⭐ DDL = Định nghĩa | DML = Dữ liệu | DCL = Điều khiển quyền
2. KHỞI TẠO CƠ SỞ DỮ LIỆU
| Câu lệnh | Ý nghĩa |
|---|---|
| CREATE DATABASE | Khởi tạo CSDL |
| CREATE TABLE | Khởi tạo bảng |
| ALTER TABLE | Thay đổi định nghĩa bảng |
| PRIMARY KEY | Khai báo khoá chính |
| FOREIGN KEY ... REFERENCES | Khai báo khoá ngoại |
⭐ CREATE = Tạo | ALTER = Sửa cấu trúc | PRIMARY KEY = Khoá chính | FOREIGN KEY = Khoá ngoại
| Kiểu dữ liệu | Ý nghĩa |
|---|---|
| CHAR(n) | Xâu kí tự cố định |
| VARCHAR(n) | Xâu kí tự có độ dài thay đổi |
| BOOLEAN | Đúng/Sai |
| INT / INTEGER | Số nguyên |
| REAL | Số thực |
| DATE | Ngày |
| TIME | Thời gian |
⭐ CHAR/VARCHAR → chữ | INT → số nguyên | REAL → số thực | DATE → ngày | TIME → giờ
CREATE DATABASE music; CREATE TABLE bannhac ( Mid CHAR(4), TenBN VARCHAR(128) ); ALTER TABLE bannhac ADD PRIMARY KEY (Mid); CREATE TABLE nhacsi ( Aid INT, TenNS VARCHAR(64) );
❓ CÂU HỎI
1. Viết câu truy vấn tạo bảng Ca sĩ (casi).
2. Viết câu truy vấn thêm khoá chính Sid cho bảng casi.
✅ Đáp án:
CREATE TABLE casi ( Sid CHAR(4), TenCS VARCHAR(64) ); ALTER TABLE casi ADD PRIMARY KEY (Sid);
3. CẬP NHẬT VÀ TRUY XUẤT DỮ LIỆU
SELECT <dữ liệu cần lấy> FROM <tên bảng> WHERE <điều kiện chọn> ORDER BY <tiêu chí> INNER JOIN <bảng cần liên kết>;
| Thành phần | Chức năng |
|---|---|
| SELECT | Chọn dữ liệu cần lấy |
| FROM | Chọn bảng |
| WHERE | Lọc theo điều kiện |
| ORDER BY | Sắp xếp |
| INNER JOIN | Liên kết các bảng |
⭐ SELECT → LẤY GÌ? | FROM → Ở ĐÂU? | WHERE → ĐIỀU KIỆN? | ORDER BY → SẮP XẾP? | JOIN → LIÊN KẾT?
| Câu lệnh | Chức năng |
|---|---|
| INSERT INTO | Thêm dữ liệu |
| DELETE FROM | Xoá dữ liệu |
| UPDATE | Sửa dữ liệu |
⭐ INSERT = Thêm | DELETE = Xoá | UPDATE = Sửa
Lấy dữ liệu:
SELECT Mid, TenBN FROM bannhac WHERE Aid = 1 ORDER BY TenBN;
Liên kết bảng:
SELECT bannhac.TenBN, nhacsi.TenNS FROM bannhac INNER JOIN nhacsi ON bannhac.Aid = nhacsi.Aid;
Thêm dữ liệu:
INSERT INTO nhacsi VALUES (5, 'Phú Quang'), (6, 'Phan Huỳnh Điểu');
Xoá dữ liệu:
DELETE FROM bannhac WHERE Mid = '0005';
Cập nhật:
UPDATE nhacsi SET TenNS = 'Hoàng Hiệp' WHERE Aid = 6;
Tính trung bình:
SELECT AVG(tb) FROM diemtoan_11A;
⭐ AVG() → tính giá trị trung bình
❓ CÂU HỎI
1. Viết câu truy vấn lấy tất cả các dòng của bảng nhacsi.
2. Viết câu truy vấn thêm các dòng: ('TK','Nguyễn Trung Kiên'), ('QD','Quý Dương'), ('YM','Y Moan').
✅ Đáp án:
SELECT * FROM nhacsi; INSERT INTO nhacsi VALUES ('TK', 'Nguyễn Trung Kiên'), ('QD', 'Quý Dương'), ('YM', 'Y Moan');
4. KIỂM SOÁT QUYỀN TRUY CẬP
| Câu lệnh | Ý nghĩa |
|---|---|
| GRANT | Cấp quyền |
| REVOKE | Thu hồi quyền |
⭐ GRANT = Cho quyền | REVOKE = Lấy lại quyền
Ví dụ cấp quyền:
GRANT SELECT ON music.* TO guest;
Ví dụ thu hồi quyền:
REVOKE CREATE, ALTER ON bannhac FROM mod;
❓ CÂU HỎI
1. Cấp quyền UPDATE đối với tất cả các bảng trong CSDL music cho người dùng mod.
2. Thu hồi quyền DELETE đối với bảng nhacsi cho người dùng mod.
✅ Đáp án:
GRANT UPDATE ON music.* TO mod; REVOKE DELETE ON music.nhacsi FROM mod;
📝 LUYỆN TẬP
Câu 1. Tạo bảng banthuam (Mid, Sid).
CREATE TABLE banthuam ( Mid CHAR(4), Sid CHAR(4) );
Câu 2. Tạo khoá ngoại Mid và Sid cho bảng banthuam.
ALTER TABLE banthuam ADD FOREIGN KEY (Mid) REFERENCES bannhac(Mid); ALTER TABLE banthuam ADD FOREIGN KEY (Sid) REFERENCES casi(Sid);
Câu 3. Lấy Mid, Sid của banthuam và TenBN của bannhac qua liên kết.
SELECT banthuam.Mid, banthuam.Sid, bannhac.TenBN FROM banthuam INNER JOIN bannhac ON banthuam.Mid = bannhac.Mid;
🔎 VẬN DỤNG
Lấy Mid, Sid, TenBN (bannhac), TenCS (casi) qua liên kết 3 bảng.
SELECT banthuam.Mid, banthuam.Sid, bannhac.TenBN, casi.TenCS FROM banthuam INNER JOIN bannhac ON banthuam.Mid = bannhac.Mid INNER JOIN casi ON banthuam.Sid = casi.Sid;
🧠 SƠ ĐỒ NHỚ TOÀN BÀI
🔑 CÔNG THỨC NHỚ
📌 10 LỆNH/CÚ PHÁP QUAN TRỌNG NHẤT
| Cú pháp | Nhớ là |
|---|---|
| CREATE DATABASE | Tạo CSDL |
| CREATE TABLE | Tạo bảng |
| ALTER TABLE | Thay đổi cấu trúc |
| PRIMARY KEY | Khoá chính |
| FOREIGN KEY | Khoá ngoại |
| SELECT | Lấy dữ liệu |
| INSERT | Thêm dữ liệu |
| UPDATE | Sửa dữ liệu |
| DELETE | Xoá dữ liệu |
| GRANT / REVOKE | Cấp / thu hồi quyền |
🧠 CÔNG THỨC NHỚ NHANH NHẤT
TẠO → CREATE | SỬA CẤU TRÚC → ALTER | LẤY → SELECT | THÊM → INSERT
SỬA DỮ LIỆU → UPDATE | XOÁ → DELETE | CHO QUYỀN → GRANT | THU QUYỀN → REVOKE
LIÊN KẾT → JOIN | ĐIỀU KIỆN → WHERE
