Bài 3: Câu lệnh truy vấn dữ liệu trong SQL | Tìm ở đây

Tóm Tắt

Sơ đồ thực thể link cơ sở tài liệu Sinh Viên

Nắm rõ sơ đồ thực thể liên kết và cấu trúc các bảng phục vụ cho phần truy vấn sau.
Sơ đồ thực thể liên kết cơ sở dữ liệu Sinh viên

1. Cú pháp truy vấn tài liệu tổng quát


SELECT 
FROM 
WHERE 
GROUP BY 
HAVING <Điều kiện dựa trên GROUP BY>
ORDER BY 

2. Dạng truy vấn đơn thuần


SELECT 
FROM 

=> lấy ra một số cột trong một bảng nào đó.

Ví dụ : lấy ra mã sinh viên, họ đệm và tên của những sinh viên trong bảng SINHVIEN


SELECT MaSV, Hodem, Ten
FROM SINHVIEN;

3. Ký tự đại diện thay mặt *

Ký tự * đại diện cho tất cả các cột


SELECT *
FROM 

Ví dụ : Lấy ra list những khoa


SELECT *
FROM KHOA;

4. Mệnh đề WHERE

  • Dùng để thiết lập điều kiện lấy dữ liệu

SELECT 
FROM 
WHERE 

Ví dụ : lấy ra mã sinh viên, họ đệm và tên của những sinh viên nữ


SELECT MaSV, HoDem, Ten
FROM SINHVIEN
WHERE GioiTinh = "Nữ";
  • Các phép toán trong mệnh đề WHERE:
    • Toán tử so sánh: >, <, >=, <=, =, <>
    • Toán tử Logic: And, Or, Not

Ví dụ : lấy ra Mã sinh viên, Họ đệm và Tên của những sinh viên nữ học lớp K55CNSHA


SELECT MaSV, HoDem, Ten
FROM SINHVIEN
WHERE GioiTinh = "Nữ" and MaLop = "K55CNSHA";
  • Toán tử BETWEEN AND

Ví dụ : Lấy ra list những môn học có từ 2 đến 5 tín chỉ


SELECT * 
FROM MONHOC 
WHERE SoTC BETWEEN 2 and 5;
  • Toán tử [NOT] LIKE: tìm một mẫu ký tự
  • Sử dụng với các ký tự đại diện: _(1 ký tự), % (1 chuỗi bất kỳ)

Ví dụ : lấy ra list Sinh viên có Họ đệm khởi đầu là “ Nguyễn ”


SELECT *
FROM SINHVIEN 
WHERE HoDem LIKE  "Nguyễn%";
  • Toán tử [NOT] IN: phép toán so sánh trong 1 tập hợp, 1 danh sách

Ví dụ : lấy ra thông tin của những lớp thuộc khoa công nghệ thông tin ( mã CNTT ), nông học ( mã NH ) và chăn nuôi thú y ( mã CNTY ) .


SELECT *
FROM LOP
WHERE MaKhoa IN ("CNTT",  "NH",  "CNTY");

5. Truy vấn tài liệu từ nhiều bảng

  • Khi thông tin cần lấy ra có từ nhiều bảng khác nhau, cần thực hiện truy vấn từ nhiều bảng

SELECT  
FROM  
WHERE 
  • Lưu ý:
    • Cần liên kết các bảng lại với nhau. Với n bảng cần có n-1 điều kiện liện kết.
    • Các tên cột giống nhau ở nhiều bảng thì cần chỉ định rõ theo quy tắc [Tên Bảng].[Tên cột]

Ví dụ : Hiển thị thông tin về những sinh viên với những hiệu quả học tập của họ. Thông tin hiển thị cần ( Mã sinh viên, Họ tên, Ngày sinh, Giới tính, Tên môn học, Kết quả )


SELECT SINHVIEN.MaSV, Hodem, Ten, NgaySinh, GioiTinh, TenMH, KetQua
FROM SINHVIEN, KETQUA, MONHOC
WHERE SINHVIEN.MaSV = KETQUA.MaSV AND KETQUA.MaMH = MONHOC.MaMH;

6. Mệnh đề ORDER BY

Sắp xếp kết quả theo thứ tự mong muốn
ORDER BY [ASC | DESC]

Ví dụ : lấy ra những sinh viên nữ học lớp K55CNSHA, được sắp xếp theo vần alphabet của họ và tên


SELECT MaSV, HoDem, Ten
FROM SINHVIEN
WHERE GioiTinh = "Nữ" and MaLop = "K55CNSHA"
ORDER BY Ten, HoDem;

7. Mệnh đề GROUP BY

  • Nhóm dữ liệu lại theo từng nhóm để thực hiện các phép toán thống kê.

GROUP BY  

Ví dụ : In ra list những lớp và số sinh viên trong mỗi lớp từ bảng SinhVien


SELECT SINHVIEN.MaLop, LOP.TenLop, COUNT(SINHVIEN.MaSV) AS 'Số sinh viên'
FROM SINHVIEN, LOP
WHERE SINHVIEN.MaLop = LOP.MaLop
GROUP BY SINHVIEN.MaLop, LOP.TenLop;
  • Một số hàm thông dụng:
    • AVG: giá trị trung bình
    • MIN: giá trị nhỏ nhất
    • MAX: giá trị lớn nhất
    • COUNT: đếm số phần tử
    • SUM: Tổng các phần tử

8. Mệnh đề HAVING

  • Đặt điều kiện chọn sau khi đã nhóm dữ liệu bằng mệnh đề GROUP BY.

Ví dụ : In ra list những lớp có số sinh viên > 2 từ bảng SINHVIEN


SELECT SINHVIEN.MaLop, LOP.TenLop, COUNT(SINHVIEN.MaSV) AS 'Số sinh viên'
FROM SINHVIEN, LOP
WHERE SINHVIEN.MaLop = LOP.MaLop
GROUP BY SINHVIEN.MaLop, LOP.TenLop
HAVING  COUNT(SINHVIEN.MaSV)>=2

9. Phát biểu Select với AS

  • Đặt lại tên cột khi hiển thị kết quả

Ví dụ : Hiển thị thông tin về những sinh viên với những hiệu quả học tập của họ. Khi hiển thị cột KetQua đổi tên thành cột DiemTB


SELECT SINHVIEN.MaSV, HoDem, Ten, NgaySinh, GioiTinh, TenMH, KetQua AS DiemTB
FROM SINHVIEN, KETQUA, MONHOC 
WHERE  SINHVIEN.MaSV = KETQUA.MaSV AND KETQUA.MaMH = MONHOC.MaMH;

10. Phát biểu Select với DISTINCT

  • Nếu kết quả truy vấn có nhiều bản ghi trùng nhau, để chỉ các bản tin duy nhất (không trùng nhau) ta dùng từ khoá DISTINCT

Ví dụ : In ra list những lớp trong bảng SINHVIEN


SELECT DISTINCT MaLop
FROM SINHVIEN;

11. Truy vấn con

  • Đôi khi ta cần sử dụng kết quả của 1 câu truy vấn để làm điều kiện cho 1 câu truy vấn khác, khi đó ta gọi là truy vấn con.
  • Khi thực hiện, truy vấn con sẽ được thực hiện trước, rồi lấy kết quả để thực hiện truy vấn chính.
  • Dạng tổng quát:

SELECT  
FROM  
WHERE  IN ( NOT IN, =, <>, …)
(SELECT  
FROM  
WHERE )

Ví dụ : Hiển thị thông tin về những sinh viên đã đăng kí học và không phải thi lại môn học nào


SELECT SINHVIEN.MaSV, HoDem, Ten, NgaySinh, MaMH, KetQua
FROM SINHVIEN, KETQUA
WHERE (SINHVIEN.MaSV=KETQUA.MaSV) AND SINHVIEN.MaSV IN  
 	(SELECT MaSV
	FROM KETQUA
	WHERE KetQua>=5);

Chúc những bạn thành công xuất sắc !