Mục tiêu:
- SQL là một loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan hệ. — [nguồn: wikipedia], nội dung trong các bài này chỉ tập trung vào 1 chữ LẤY.
- Hiểu được Lược đồ CSDL
- Biết được cách ghi chú trong SQL (comment your SQL code)
- Hiểu được cú pháp SQL (SQL syntax)
- Biết được cách truy vấn dữ liệu từ 1 BẢNG
- Biết được cách sắp xếp (SORT) kết quả truy vấn
Tham khảo:
Nội dung
1. Khái niệm cơ bản
Định nghĩa
SQL là gì?
SQL ( /ˈɛs kjuː ˈɛl/,[4] hoặc /ˈsiːkwəl/;[5] Structured Query Language[6][7][8][9]) hay ngôn ngữ truy vấn mang tính cấu trúc, là một loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan hệ. — [nguồn: wikipedia]
Ghi chú trong SQL:
--đây là ghi chú một dòng
/*Đây là ghi
chú nhiều dòng*/Ký hiệu kết thúc câu lệnh:
Sử dụng dấu “;” để kết thúc 1 câu lệnh;
Ví dụ:
SELECT * FROM Employees;SELECT *
FROM Employees;
Case Sensitivity
SQL không phân biệt hoa thường trong các từ khóa, tên bảng, tên thuộc tính,…
2. Lược đồ CSDL
SQL bao gồm tạo, sửa và lấy dữ liệu, trong khuôn khổ các bài viết này chỉ tập trung vào chữ Lấy. Như vậy, chúng ta muốn lấy được thì phải hiểu được cấu trúc của dữ liệu là gì.
Ví dụ: Đi siêu thị mua cái bàn chải đánh răng của P/S thì cũng phải biết được là khu vực nào bán hàng nha khoa, dãy nào trưng hàng P/S và kệ nào chứa bàn chải chứ không phải kem đánh răng.
Túm lại, do chúng ta đi tắt đón đầu (học lấy trước khi học tạo và sửa) cho nên cần phải hiểu và hiểu rõ DB có cấu trúc như thế nào, chứa bao nhiêu bảng, mỗi bảng chứa thông tin gì, thông tin đó là kiểu dữ liệu gì.
Lược Đồ CSDL sẽ cho chúng ta những thông tin nêu trên.

3. Truy vấn
Tưởng tượng bạn có 1 bảng tính excel như thế này:

Yêu cầu: Lấy Danh sách tất cả nhân viên thuộc khối BD gồm các thuộc tính sau: MSNV, Họ Tên, Loại Hình, Chức danh.
Trả lời: để lấy được kết quả như yêu cầu, cơ bản trả lời được 3 câu hỏi sau:
1. Muốn lấy thuộc tính nào?
2. Lấy từ đâu?
3. Điều kiện là gì?
Áp dụng:
- Muốn lấy thuộc tính nào? → MSNV, Họ Tên, Loại Hình, Chức danh.
- Lấy từ đâu? → Bảng bảng tính hiện tại (tên sheet)
- Điều kiện là gì? → Thuộc khối BD.
Cú pháp SQL
SELECT column, column /*Lấy thuộc tính nào?*/
FROM table /*Lấy từ đâu?*/
WHERE conditions; /*Điều kiện là gì?*/Viết SQL (code giả lập)
select MSNV, Họ tên, Loại hình, Chức danh
from sheet1/*Tên sheet là sheet1*/
where Khối = 'LOG/d-TRAN/BD'4. Cú pháp SELECTing Specific Columns (Lấy cái gì, lấy từ đâu)
Cú pháp
SELECT table_name.column_name, table_name.column_name
FROM table; -- ORSELECT column, column
FROM table;
Ví dụ
/*
Lấy MSNV và Tên Nhân viên từ bảng Employee
Trong CSDL, tên thuộc tính, tên bảng theo format: viết liền, không dấu (unicode)
Đúng: name
sai: Họ tên
Đúng: hoTen
*/
select employee.MSNV, employee.name
from employeeĐặc biệt:
Sao (*) là tất cả
Muốn lấy tất cả thuộc tính của bảng, sử dụng ký hiệu: *
5. Sorting Records
DESC: là giảm, ASC: là tăng
ORDER BY là để sắp cho tăng giảm
Cú pháp
- Sắp xếp theo 1 cột
SELECT column, column
FROM table
ORDER BY column;- Sắp xếp theo nhiều cột
SELECT column, column
FROM table
ORDER BY column, column;- Sắp xếp theo thứ tự cột
SELECT column, column
FROM table
ORDER BY column_position, column_position;- Sắp tăng giảm:
SELECT column, column
FROM table
ORDER BY column_position DESC, column_position ASC;Ví dụ
/*
Select MSNV và Họ Tên từ bảng Employee.
Sắp xếp theo Họ Tên
*/SELECT id, fullname
FROM Employee
ORDER BY fullname;/*
Select MSNV, Họ Tên và Phòng ban từ bảng Employee.
Sắp xếp theo Phòng ban, Họ Tên
*/
SELECT id, fullname, department
FROM Employee
ORDER BY department, fullname;/*
Select MSNV, Họ Tên và Phòng ban từ bảng Employee.
Sắp xếp theo Phòng ban, Họ Tên
*/
SELECT id, fullname, department
FROM Employee
ORDER BY 3, 2;/*
Select MSNV, Họ Tên và Phòng ban từ bảng Employee.
Sắp xếp theo Phòng ban giảm dần, Họ Tên tăng dần
*/
SELECT id, fullname, department
FROM Employee
ORDER BY department DESC, fullname ASC;
THỰC HÀNH
Tới đây rồi có vẻ hơi hoang mang: Giờ muốn thực hành thì mần sao?
Có nhiều cách để thực hành:
- Tự dựng CSDL để thực hành: có nhiều cách để tự dựng, từ dễ đến khó. Xem thêm bài viết: Xây dựng CSDL để thực hành SQL (chưa viết :), sẽ cập nhật sau).
- Xài CSDL có sẵn: có nhiều CSDL dựng sẵn và public trên Internet cũng như môi trường để thực hiện truy vấn dữ liệu. Tinhte.vn cũng có đề cập đến môi trường này. Ngoài ra, cũng có thể thực hành tại: w3schools.com (đây là site có tất tần tật các hướng dẫn về sql và nhiều thứ khác nữa).

w3schools.com dựng sẵn tập dữ liệu gồm các bảng: Customers, Categories,.. (góc trên bên phải), chúng ta có thể thực hành trực tiếp trên tập dữ liệu này.
Nhập câu truy vấn SQL vào Khung SQL Statement, sau đó bấm Run SQL, xem kết quả ở khung Result.
Ví dụ:
Trong bảng Suppliers đang có dữ liệu như sau:

Yêu cầu: Cần lấy ra Danh sách Suppliers (toàn bộ thông tin)
Phân tích:
- Muốn lấy thuộc tính nào? → Lấy toàn bộ thông tin
- Lấy từ đâu? → bảng Suppliers
- Điều kiện là gì? → lấy hết danh sách
SQL:
select * /* (*) là lấy toàn bộ thông tin */
from Suppliers /* Tên bảng */Kết quả:

BÀI TẬP:
- Lấy tên Supplier và Thành Phố của tất cả các Suppliers đang có
- Lấy tên Supplier và Thành Phố của tất cả các Suppliers đang có và sắp xếp tăng dần theo Thành phố
- Liệt kê danh sách các Sản phẩm (Products) theo thứ tự Giá bán tăng dần.
- Liệt kê danh sách các Khách Hàng (Customers) và sắp xếp tăng theo Tên Quốc gia.