NGÔN NGỮ SQL - Các truy vấn lồng nhau

13 14K 27
NGÔN NGỮ SQL - Các truy vấn lồng nhau

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

NGÔN NGỮ SQL Các truy vấn lồng nhau Để tìm mã số và tên những nhân viên phòng ‘Kỹ thuật’ có thể dùng câu truy vấn sau SELECT manv, ho_ten FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’); 58 59 NGÔN NGỮ SQL Các truy vấn lồng nhau Xét câu hỏi: ‘Tìm tên của những nhân viên có lương đạt trên mức lương trung bình của tất cả các nhân viên, đồng thời cho biết luôn mức chênh lệch này’ SELECT ho_ten , luong – (SELECT AVG(luong) FROM nhan_vien) AS hieu FROM nhan_vien WHERE luong > (SELECT AVG(luong) FROM nhan_vien); 60 NGÔN NGỮ SQL Các truy vấn lồng nhau Câu ORDER BY không được sử dụng trong một câu truy vấn con mặc dù nó có thể được dùng trong câu truy vấn ngoài cùng. Danh sách các mục được liệt kê bởi câu truy vấn con SELECT phải chứa tên của một cột hoặc một biểu thức trừ phi câu truy vấn con này dùng từ khóa EXISTS. 61 NGÔN NGỮ SQL Các truy vấn lồng nhau Theo ngầm định, các tên cột trong câu truy vấn con tham chiếu đến tên bảng trong câu FROM của truy vấn con này, hoặc có thể tham chiếu đến bảng trong câu FROM của truy vấn ngoài bằng việc xác định tên cột đó. Khi một câu truy vấn con là một trong hai toán hạng của một biểu thức so sánh thì truy vấn con này phải xuất hiện ở vế phải của so sánh. 62 NGÔN NGỮ SQL Các truy vấn lồng nhau Muốn biết thông tin về những nhân viên làm việc cho đơn vị có địa điểm là ’23 Lý Thường Kiệt’, có thể dùng truy vấn như sau SELECT * FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM dia_diem_dv WHERE dia_diem = ’23 Lý Thường Kiệt); 63 NGÔN NGỮ SQL Các truy vấn lồng nhau “ Tìm tên và lương của những người có lương cao hơn lương mọi nhân viên thuộc đơn vị mã P2 “. SELECT ho_ten FROM nhan_vien WHERE luong > ALL (SELECT luong FROM nhan_vien WHERE ma_dv = ’P2’); 64 NGÔN NGỮ SQL Các truy vấn lồng nhau Câu hỏi “ Cho biết thông tin về những nhân viên có lương cao hơn ít nhất một nhân viên làm ở phòng kỹ thuật” SELECT ho_ten FROM nhan_vien WHERE luong > SOME (SELECT luong FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’) ); 65 NGÔN NGỮ SQL Các truy vấn lồng nhau “Cho biết tên phòng có trung bình lương cao nhất” sẽ được viết là SELECT ten_phong FROM phong WHERE ma_dv IN (SELECT ma_dv FROM nhan_vien GROUP BY ma_dv HAVING AVG(luong) >= ALL (SELECT AVG(luong) FROM nhan_vien GROUP BY ma_dv) ); 66 NGÔN NGỮ SQL Dùng các biến bộ Để tìm thông tin về tên và lương của trưởng phòng nghiên cứu phát triển SELECT nv.ho_ten, nv.luong FROM nhan_vien nv, phong p WHERE nv.manv = p.ma_tp AND p.ten_phong = ‘Nghiên cứu và phát triển’ Các biến bộ rất hữu ích trong việc so sánh hai bộ trong cùng một quan hệ. 67 NGÔN NGỮ SQL Dùng các biến bộ Có thể tìm nhân viên có lương cao hơn ít nhất lương của một nữ nhân viên bằng câu lệnh sau : SELECT DISTINCT nv.ho_ten, nv.luong FROM nhan_vien a, nhan_vien b WHERE a.luong > b.luong AND b.gioi_tinh = ‘nu’ [...]...NGÔN NGỮ SQL Các quan hệ được dẫn xuất và khung nhìn SQL- 92 cho phép dùng câu hỏi con trong câu FROM, trong đó bảng kết quả của câu hỏi con phải được đặt tên và các cột được phép đổi tên Một kết quả như vậy được gọi là một quan hệ (bảng) được dẫn xuất 68 NGÔN NGỮ SQL Các quan hệ được dẫn xuất và khung nhìn “Tìm lương trung bình của các phòng có lương trung bình lớn hơn 2 100 000”, trong SQL (chuẩn . nhan_vien); 60 NGÔN NGỮ SQL Các truy vấn lồng nhau Câu ORDER BY không được sử dụng trong một câu truy vấn con mặc dù nó có thể được dùng trong câu truy vấn ngoài. EXISTS. 61 NGÔN NGỮ SQL Các truy vấn lồng nhau Theo ngầm định, các tên cột trong câu truy vấn con tham chiếu đến tên bảng trong câu FROM của truy vấn con này,

Ngày đăng: 29/09/2013, 03:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan