13.1 Thực hành truy vấn cơ bản1
13.1.1 Nhắc lại lý thuyết.
Cú pháp cơ bản của câu lệnh select + Gồm 3 mệnh đề
SELECT<danh sách các cột>
FROM <danh sách các bảng>
WHERE<điều kiện>
-<danh sách các cột>: Tên các cột cần được hiển thị trong kết quả truy vấn -<danh sách các bảng>: Tên các bảng liên quan đến câu truy vấn
-<điều kiện>: Biểu thức boolean xác định dòng nào sẽ được rút trích Nối các biểu thức: AND, OR, và NOT
Phép toán:<,>,<=, >=,<>,=,LIKE và BETWEEN Cú pháp
Cú pháp của câu lệnh SELECT như sau: SELECT tên_các_cộtFROM tên_bảng
Để truy xuất nhiều cột ta liệt kê các cột sao cho mỗi cột đặt cách nhau bởi dấu phẩy. Ví Dụ: Để truy xuất maTG và tenTG trong bảng tblTacGia ta thực hiện câu truy vấn sau: SELECT maTG, tenTG
FROM tblTacGia Truy xuất tất cả các cột
Để truy xuất tất cả các cột từ bảng nào đó ta dùng ký hiệu * thay cho danh sách các cột: SELECT * FROM tên_Bảng;
Cú pháp mệnh đề WHERE trong câu lệnh SELECT như sau:
SELECT tên_cột[,. . .] FROM tên_bảng[,. . .]WHERE tên_cột phép_toán giá_trị[and/or. . .] Trong mệnh đề WHERE, các phép toán được sử dụng là
Phép toán Mô tả= So sánh bằng<> So sánh không bằng> Lớn hơn< Nhỏ hơn>= Lớn hơn hoặc bằng<= Nhỏ hơn hoặc bằngBETWEEN Nằm giữa một khoảngLIKE So sánh mẫu chuỗi
Lưu ý: Trong một số phiên bản của SQL, phép toán<>có thể được viết dưới dạng !=
Ví dụ 1: Để lấy về tất cả các cuốn sách được xuất bản từ năm 2004 đến năm 2008 ta có câu truy vấn sau:
Select *
From tblDauSach
1This content is available online at <http://voer.edu.vn/content/m18649/1.2/>.
Where (namXB>= 2004) and (namXB<= 2008);
Ví dụ 2: Để lấy về tất cả tên các cuốn sách có mã là ‘1010111’. Ta sử dụng câu truy vấn sau: Select tenSach
From tblDauSach
Where maDS = ‘1010111’;
-Để loại bỏ các bộ giá trị (các hàng) trùng nhau ta thêm từ khoá Distinct vào sau SELECT (trước đây SQL thêm từ khoá unique).
13.1.2 Ba`i tâp mâ˜u
1.Du`ng câu lênh SQL thưc hiên ca´c yêu câ`u sau:
• Hiện thị tất cả các nhà xuất bản có trong trong CSDL.
• Hiên thi tâ´t ca ca´c thông tin vê` ca´c đâ`u sa´ch có mã bắt đầu bằng ký tự :’101’
• Hiên thi tâ´t ca tên sa´ch thuôc li˜nh vưc ‘Công nghê thông tin’, tên sa´ch đươc să´p xê´p theo thư´ tư alpha.
• Hiên thi tâ´t ca thông tin cua đôc gia co´ ma˜ the thư viên la` ‘skh20984’ Hươ´ng dâ˜n:
- Ta nhân thâ´y thông tin vê` ca´c nha` xuâ´t ban co´ trong bang tblNXB. Đê hiên thi tâ´t ca ca´c nha` xuâ´t ban co´ trong CSDL ta chi viêc lâ´y ra tâ´t ca ca´c nha` xuâ´t ban co´ trong CSDL.
- Để kiểm tra một xâu có được bắt đầu bằng chuỗi ký tự nào đó ta sử dụng từ khóa like - Thông tin vê` ca´c đôc gia đươc lưu trong bang tblDocGia
- Thông tin vê` đâ`u sa´ch đươc lưu trong bang tblDauSach Lơ`i giai
a) selecttenNXB [Nha` xuâ´t ban]fromtblNXB; b) select*from tblDauSachwheremaDS like ‘101%’; c) selecttenSachfromtblDauSach ds, tblLinhVuc lv
where((ds.MaLV = lv.MaLV) and (tenLV= ‘Công nghê thông tin’))
order by tenSach;
a) select*from tblDocGiawheresoThe =’skh20984’;
13.1.3 Ba`i tâp thưc ha`nh
Sư dung ca´c câu lênh SQL thưc hiên ca´c truy vâ´n sau:
• Hiên thị thông tin về các độc giả mượn sách ngày: 23/03/2005
• Hiên thi tâ´t ca ca´c đâ`u sa´ch cua ta´c gia Qua´ch Tuâ´n Ngoc
• Hiên thi tâ´t ca ca´c sa´ch co´ sô´ lương lơ´n hơn 100
• Hiên thi tâ´t ca ca´c đoc gia đang mươn sa´ch.
• Hiên thi tâ´t ca thông tin vê` sa´ch thuôc vê` li˜nh vưc ‘Kinh tê´’, să´p xê´p kê´t qua theo trươ`ng ngayNhap.
• Hiên thi tâ´t ca ta´c gia viê´t cuô´n sa´ch ‘Pascal nâng cao’.
• Hiên thi tâ´t ca ta´c gia co´ đia chi ơ Ha` Nôi
• Hiên thi tâ´t ca đôc gia sinh nga`y năm 15/10/1988.
Bài 14: Phép hợp, toán tử UNION,EXISTS, IN và Truy vấn lồng