Top Banner
22

Truy vấn nâng cao

Jan 14, 2016

Download

Documents

umika

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 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Truy vấn nâng cao
Page 2: Truy vấn nâng cao

Nội dungNội dung

Truy vấn lồng nhauTruy vấn lồng nhau

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Truy vấn hợpTruy vấn hợp

Truy vấn sử dụng cube, rollup trong mệnh đề Group Truy vấn sử dụng cube, rollup trong mệnh đề Group byby

Page 3: Truy vấn nâng cao

Truy vấn lồngTruy vấn lồng

Ví dụ 1Ví dụ 1: Đưa ra danh sách họ tên các nhân viên làm việc : Đư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? ở phòng kinh doanh hoặc phòng kỹ thuật?

SelectSelect hoten hoten

FromFrom NHANVIEN NV NHANVIEN NV

Inner joinInner join PHONG P PHONG P

On On NV.MAPHONG = P.MAPHONG NV.MAPHONG = P.MAPHONG

WhereWhere Tenphong in ( “Kinh doanh”, “Kỹ thuật”) Tenphong in ( “Kinh doanh”, “Kỹ thuật”)

Page 4: Truy vấn nâng cao

Truy vấn lồngTruy vấn lồng

… …

Page 5: Truy vấn nâng cao

Truy vấn lồng nhauTruy vấn lồng nhau

Ví dụ 1Ví dụ 1: Đưa ra danh sách các nhân viên làm : Đưa ra danh sách các nhân viên làm việc ở phòng kinh doanh hoặc kỹ thuật? việc ở phòng kinh doanh hoặc kỹ thuật?

Select Select hoten hoten FromFrom NHANVIEN NHANVIEN WhereWhere Maphong in Maphong in ((SelectSelect Maphong Maphong

FromFrom PHONG PHONG WhereWhere tenphong in (‘Kinh tenphong in (‘Kinh

doanh’, doanh’, ‘Kỹ thuật’) ‘Kỹ thuật’)))

Page 6: Truy vấn nâng cao

Truy vấn lồngTruy vấn lồng

… …

…(KDA, KTA)

IN

Page 7: Truy vấn nâng cao

Truy vấn lồngTruy vấn lồng

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

Page 8: Truy vấn nâng cao

Truy vấn lồngTruy vấn lồng

Ví dụ 2Ví dụ 2: Cho biết họ tên các nhân viên có lương : Cho biết họ tên các nhân viên có lương lớn nhất? lớn nhất?

Select Select hoten hoten FromFrom NHANVIEN NHANVIEN WhereWhere luong = luong =((SelectSelect max(luong) max(luong)

FromFrom NHANVIEN NHANVIEN ))

Page 9: Truy vấn nâng cao

Truy vấn lồngTruy vấn lồng

Ví dụ 3Ví dụ 3: Đưa ra danh sách các nhân viên có : Đư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 lương lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh?Kinh doanh?

Select Select * *FromFrom NHANVIEN NHANVIEN Where Where luong >luong > ((SelectSelect max(luong) max(luong)

FromFrom NHANVIEN NHANVIEN WhereWhere Maphong in Maphong in ((SelectSelect Maphong Maphong FromFrom Phong Phong

WhereWhere Tenphong = ‘Kinh Tenphong = ‘Kinh doanh’doanh’))))

Page 10: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Lượng từ Lượng từ Exists (tồn tại)Exists (tồn tại)

Where Where ExistsExists (<Tập hợp| truy vấn con>) (<Tập hợp| truy vấn con>)

True: True: nếu tập hợp khác rỗng nếu tập hợp khác rỗng

FalseFalse: ngược lại: ngược lại

Page 11: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Ví dụ 4Ví dụ 4: Cho biết danh sách các nhân viên đã học : Cho biết danh sách các nhân viên đã học ít nhất một ngoại ngữ?ít nhất một ngoại ngữ?

SelectSelect * * FromFrom NHANVIEN nv NHANVIEN nvWhereWhere ExistsExists ((SelectSelect * * FromFrom TDNN td TDNN td

WhereWhere nv.Manv=td.Manv) nv.Manv=td.Manv)

Page 12: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Lượng từ Lượng từ AllAll

WhereWhere <Tên thuộc tính> <Phép so sánh> <Tên thuộc tính> <Phép so sánh> AllAll (<Tập hợp giá trị | truy vấn con> )(<Tập hợp giá trị | truy vấn con> )

TRUETRUE:: khi khi một giá trịmột giá trị của thuộc tính thỏa mãn của thuộc tính thỏa mãn phép phép so sánh so sánh với với mọi mọi phần tử trong tập hợp phần tử trong tập hợp

giá trị giá trị (hoặc tập giá trị do truy vấn con (hoặc tập giá trị do truy vấn con trả ra).trả ra).

FALSEFALSE: Ngược lại: Ngược lại

Page 13: Truy vấn nâng cao

Sử dụng các lượng từ trong truy vấnSử dụng các lượng từ trong truy vấn

Ví dụ 5Ví dụ 5: Cho biết danh sách họ tên các nhân viên có : Cho biết danh sách họ tên các nhân viên có lương lớn nhất? lương lớn nhất?

Select Select * * FromFrom NHANVIEN NHANVIEN WhereWhere luong >= luong >= ALLALL ( (SelectSelect luong luong

FromFrom NHANVIEN NHANVIEN ))

Page 14: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Ví dụ 6Ví dụ 6: Đưa ra danh sách các nhân viên có lương : Đư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 lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh?doanh?

Select Select * *FromFrom NHANVIEN NHANVIEN Where Where luong >=luong >= ALL ALL ((SelectSelect luong luong

FromFrom NHANVIEN NHANVIEN WhereWhere Maphong in Maphong in ((SelectSelect Maphong Maphong FromFrom Phong Phong

WhereWhere Tenphong = ‘Kinh Tenphong = ‘Kinh doanh’doanh’))))

(‘KDA’)

(2500000,2600000,27000000,16000000,

2000000)

Page 15: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Ví dụ 6Ví dụ 6: Đưa ra tên phòng có nhiều nhân viên nhất?: Đưa ra tên phòng có nhiều nhân viên nhất?

Select Select Tenphong TenphongFromFrom PHONG PHONG WhereWhere Maphong Maphong in in ((SelectSelect Maphong Maphong

FromFrom NHANVIEN NHANVIEN Group byGroup by Maphong Maphong Having count (*) Having count (*) >= >= ALL ALL ((Select Select count(*)count(*) FromFrom NHANVIEN NHANVIEN

Group byGroup by MaphongMaphong ))

(4,6,9)

(‘KTA’)

(‘Ky Thuat’)

4, 6, 9

Page 16: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Lượng từ Lượng từ anyany | | somesome

WHERE WHERE <Tên thuộc tính> <Phép so sánh> <Tên thuộc tính> <Phép so sánh> Any | Any | SomeSome (<Tập giá trị| Truy vấn con>) (<Tập giá trị| Truy vấn con>)

TRUETRUE: khi : khi một giá trịmột giá trị của thuộc tính thỏa mãn của thuộc tính thỏa mãn phép phép so sánh so sánh với với ít nhất một ít nhất một phần tử trong tập phần tử trong tập hợp hợp giá trị (hoặc tập giá trị do truy vấn con giá trị (hoặc tập giá trị do truy vấn con trả trả ra). ra).

FALSEFALSE: Ngược lại: Ngược lại

Page 17: Truy vấn nâng cao

Sử dụng lượng từ trong truy vấnSử dụng lượng từ trong truy vấn

Ví dụ 7Ví dụ 7: Cho biết các nhân viên có lương lớn hơn ít : 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?nhất một nhân viên phòng kinh doanh?

Select Select * *FromFrom NHANVIEN NHANVIEN Where Where luong >luong > ANY ANY ((SelectSelect luong luong

FromFrom NHANVIEN NHANVIEN WhereWhere Maphong in Maphong in ((SelectSelect Maphong Maphong FromFrom Phong Phong

WhereWhere Tenphong = ‘Kinh Tenphong = ‘Kinh doanh’doanh’))))

(2500000,2600000,27000000,16000000,

2000000)

Page 18: Truy vấn nâng cao

Truy vấn hợpTruy vấn hợp

Cú phápCú pháp::

{ < query specification > | ( < query expression > ) } { < query specification > | ( < query expression > ) } UNION[ALL] UNION[ALL] < query specification | ( < query expression > ) < query specification | ( < query expression > ) [ UNION [ ALL ] [ UNION [ ALL ]

< query specification | ( < query expression > ) < query specification | ( < query expression > )     [ ...    [ ...n n ] ] ] ]

Page 19: Truy vấn nâng cao

Truy vấn hợpTruy vấn hợp

Ví dụ 8Ví dụ 8: Cho biết danh sách mã nhân viên, họ tên các : 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’ ?nhân viên học ngoại ngữ mã ‘01’ hoặc mã ‘03’ ?

SelectSelect Manv, Hoten From NHANVIEN nv, TDNN td Manv, Hoten From NHANVIEN nv, TDNN td WhereWhere nv.Manv = td.Manv nv.Manv = td.Manv and and Mann =‘01’Mann =‘01’Union allUnion all SelectSelect Manv, Hoten From NHANVIEN nv, TDNN td Manv, Hoten From NHANVIEN nv, TDNN td WhereWhere nv.Manv = td.Manv nv.Manv = td.Manv and and Mann =‘03’Mann =‘03’

Page 20: Truy vấn nâng cao

Truy vấn hợpTruy vấn hợp

Chú ýChú ý: : Số lượng, thứ tự các cột phải giống nhau trong mọi truy Số lượng, thứ tự các cột phải giống nhau trong mọi truy

vấn.vấn. Kiểu dữ liệu của các cột tương ứng trong các 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.phải tương thích.

Page 21: Truy vấn nâng cao

Truy vấn sử dụng rollup trong mệnh đề group byTruy vấn sử dụng rollup trong mệnh đề group by

SelectSelect tenphong, gioitinh, count(*) tongnv tenphong, gioitinh, count(*) tongnv

fromfrom phong, nhanvien phong, nhanvien

wherewhere phong.maphong = nhanvien.maphong phong.maphong = nhanvien.maphong

group bygroup by tenphong, gioitinh tenphong, gioitinh with rollupwith rollup

Page 22: Truy vấn nâng cao

Truy vấn sử dụng cube trong mệnh đề group byTruy vấn sử dụng cube trong mệnh đề group by

SelectSelect tenphong, gioitinh, count(*) tongnv tenphong, gioitinh, count(*) tongnv

fromfrom phong, nhanvien phong, nhanvien

wherewhere phong.maphong = nhanvien.maphong phong.maphong = nhanvien.maphong

group bygroup by tenphong, gioitinh tenphong, gioitinh with CUBEwith CUBE