1. Trang chủ
  2. » Công Nghệ Thông Tin

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

13 14K 27
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 313,6 KB

Nội dung

NGÔN NGỮ SQLCá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 p

Trang 1

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

Trang 2

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);

Trang 3

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

Trang 4

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

Trang 5

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);

Trang 6

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’);

Trang 7

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’) );

Trang 8

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)

Trang 9

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ệ

Trang 10

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’

Trang 11

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.

Trang 12

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 92) có thể viết như sau:

SELECT ma_phong, luong_tb

FROM (SELECT ma_dv, AVG(luong)

FROM nhan_vien

GROUP BY ma_dv)

AS ket_qua (ma_phong, luong_tb)

WHERE luong_tb > 2 100 000

Trang 13

Xin cảm ơn !

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

TỪ KHÓA LIÊN QUAN

w