Jan 14, 2016
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
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”)
Truy vấn lồngTruy vấn lồng
… …
…
…
…
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’)))
Truy vấn lồngTruy vấn lồng
… …
…(KDA, KTA)
IN
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
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 ))
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’))))
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
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)
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
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 ))
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)
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
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
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)
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 ] ] ] ]
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’
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.
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
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