1 / 22

Truy vấn nâng cao

SQL SERVER. Truy vấn nâng cao. 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. 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

umika
Télécharger la présentation

Truy vấn nâng cao

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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: Đưaradanhsáchcácnhânviênlàmviệc ở phòngkinhdoanhhoặckỹthuật? • Select hoten • From NHANVIEN • Where Maphong in (Select Maphong • From PHONG • Where tenphong in (‘Kinh doanh’, ‘Kỹ thuật’))

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

  7. 3000000 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 WhereMaphong in (SelectMaphong • FromPhong • WhereTenphong = ‘Kinhdoanh’))

  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 • WhereExists(Select * From TDNN td • Wherenv.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’)) (2500000,2600000,27000000,16000000, 2000000) (‘KDA’)

  15. Sử dụng lượng từ trong truy vấn Vídụ 6: Đưaratênphòngcónhiềunhânviênnhất? (‘Ky Thuat’) • Select Tenphong • From PHONG WhereMaphongin (SelectMaphong • From NHANVIEN • Group byMaphong • Having count (*) >= ALL (Select count(*) • From NHANVIEN Group byMaphong)) (‘KTA’) (4,6,9) 4, 6, 9

  16. Sử dụng lượng từ trong truy vấn • Lượngtừany | some WHERE <Tênthuộctính> <Phép so sánh> Any | Some (<Tậpgiátrị| Truyvấn con>) TRUE: khimộtgiátrịcủathuộctínhthỏamãnphép so sánhvớiítnhấtmộtphầntửtrongtậphợpgiátrị (hoặctậpgiátrị do truyvấn con trảra). FALSE: Ngượclạ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’)) (2500000,2600000,27000000,16000000, 2000000)

  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 • Select Manv, Hoten From NHANVIEN nv, TDNN td • 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 Selecttenphong, gioitinh, count(*) tongnv fromphong, nhanvien wherephong.maphong = nhanvien.maphong group bytenphong, gioitinhwith 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

More Related