Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL SERVER Truy vấn nâng cao.

Similar presentations


Presentation on theme: "SQL SERVER Truy vấn nâng cao."— Presentation transcript:

1 SQL SERVER Truy vấn nâng cao

2 Nội dung Truy vấn lồng nhau Sử dụng lượng từ trong truy vấn Truy vấn hợp Truy vấn sử dụng cube, rollup trong mệnh đề Group by

3 Truy vấn lồng Ví dụ 1: Đưa ra danh sách họ tên các nhân viên làm việc ở phòng kinh doanh hoặc phòng kỹ thuật? Select hoten From NHANVIEN NV Inner join PHONG P On NV.MAPHONG = P.MAPHONG Where Tenphong in ( “Kinh doanh”, “Kỹ thuật”)

4 Truy vấn lồng

5 Truy vấn lồng nhau Ví dụ 1: Đưa ra danh sách các nhân viên làm việc ở phòng kinh doanh hoặc kỹ thuật? Select hoten From NHANVIEN Where Maphong in (Select Maphong From PHONG Where tenphong in (‘Kinh doanh’, ‘Kỹ thuật’))

6 Truy vấn lồng IN (KDA, KTA)

7 Truy vấn lồng Ví dụ 2: Cho biết danh sách các nhân viên có lương lớn nhất?

8 Truy vấn lồng Ví dụ 2: Cho biết họ tên các nhân viên có lương lớn nhất? Select hoten From NHANVIEN Where luong = (Select max(luong) From NHANVIEN )

9 Truy vấn lồng Ví dụ 3: Đưa ra danh sách các nhân viên có lương lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh? Select * From NHANVIEN Where luong > (Select max(luong) From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’))

10 Sử dụng lượng từ trong truy vấn
Lượng từ Exists (tồn tại) Where Exists (<Tập hợp| truy vấn con>) True: nếu tập hợp khác rỗng False: ngược lại

11 Sử dụng lượng từ trong truy vấn
Ví dụ 4: Cho biết danh sách các nhân viên đã học ít nhất một ngoại ngữ? Select * From NHANVIEN nv Where Exists (Select * From TDNN td Where nv.Manv=td.Manv)

12 Sử dụng lượng từ trong truy vấn
Lượng từ All Where <Tên thuộc tính> <Phép so sánh> All (<Tập hợp giá trị | truy vấn con> ) TRUE: khi một giá trị của thuộc tính thỏa mãn phép so sánh với mọi phần tử trong tập hợp giá trị (hoặc tập giá trị do truy vấn con trả ra). FALSE: Ngược lại

13 Sử dụng các lượng từ trong truy vấn
Ví dụ 5: Cho biết danh sách họ tên các nhân viên có lương lớn nhất? Select * From NHANVIEN Where luong >= ALL (Select luong From NHANVIEN )

14 Sử dụng lượng từ trong truy vấn
Ví dụ 6: Đưa ra danh sách các nhân viên có lương lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh? Select * From NHANVIEN Where luong >= ALL (Select luong From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’)) ( , , , , ) (‘KDA’)

15 Sử dụng lượng từ trong truy vấn
Ví dụ 6: Đưa ra tên phòng có nhiều nhân viên nhất? (‘Ky Thuat’) Select Tenphong From PHONG Where Maphong in (Select Maphong From NHANVIEN Group by Maphong Having count (*) >= ALL (Select count(*) From NHANVIEN Group by Maphong )) (‘KTA’) (4,6,9) 4, 6, 9

16 Sử dụng lượng từ trong truy vấn
Lượng từ any | some WHERE <Tên thuộc tính> <Phép so sánh> Any | Some (<Tập giá trị| Truy vấn con>) TRUE: khi một giá trị của thuộc tính thỏa mãn phép so sánh với ít nhất một phần tử trong tập hợp giá trị (hoặc tập giá trị do truy vấn con trả ra). FALSE: Ngược lại

17 Sử dụng lượng từ trong truy vấn
Ví dụ 7: Cho biết các nhân viên có lương lớn hơn ít nhất một nhân viên phòng kinh doanh? Select * From NHANVIEN Where luong > ANY (Select luong From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’)) ( , , , , )

18 Truy vấn hợp Cú pháp: { < query specification > | ( < query expression > ) } UNION[ALL] < query specification | ( < query expression > ) [ UNION [ ALL ] < query specification | ( < query expression > )     [ ...n ] ]

19 Truy vấn hợp Ví dụ 8: Cho biết danh sách mã nhân viên, họ tên các nhân viên học ngoại ngữ mã ‘01’ hoặc mã ‘03’ ? Select Manv, Hoten From NHANVIEN nv, TDNN td Where nv.Manv = td.Manv and Mann =‘01’ Union all Where nv.Manv = td.Manv and Mann =‘03’

20 Truy vấn hợp Chú ý: Số lượng, thứ tự các cột phải giống nhau trong mọi truy vấn. Kiểu dữ liệu của các cột tương ứng trong các truy vấn phải tương thích.

21 Truy vấn sử dụng rollup trong mệnh đề group by
Select tenphong, gioitinh, count(*) tongnv from phong, nhanvien where phong.maphong = nhanvien.maphong group by tenphong, gioitinh with rollup

22 Truy vấn sử dụng cube trong mệnh đề group by
Select tenphong, gioitinh, count(*) tongnv from phong, nhanvien where phong.maphong = nhanvien.maphong group by tenphong, gioitinh with CUBE


Download ppt "SQL SERVER Truy vấn nâng cao."

Similar presentations


Ads by Google