Chƣơng IV:
Transact-SQL và truy vấn dữ liệu
Nội dung chƣơng IV
• Câu lệnh thao tác dữ liệu
–
–
–
–
Truy vấn dữ liệu cơ bản
Truy vấn lồng
Hàm kết hợp và gom nhóm
Một số dạng truy vấn khác
• Khung nhìn
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
2
Cơ sở dữ liệu ví dụ
• Trong suốt phần sau của chương này, ta sử dụng
csdl sau làm ví dụ minh họa:
– NhanVien(manv, honv, tenlot, tennv, ngaysinh, diachi,
phai, luong, manql, phong)
– PhongBan(maphong,tenphong,trphong, ngnhanchuc)
– DDPhong(maphong, diadiem)
– DeAn(tenda, mada, ddiemda, phong)
FROM <danh sách các bảng>
[WHERE] <điều kiện>
Từ khóa DISTINCT để loại
bỏ các dòng trùng nhau
trong bảng kết quả
– <danh sách các cột>:
•
Tên các cột cần được hiển thị trong kết quả truy vấn
– <danh sách các bảng>
•
Tên các bảng liên quan đến câu truy vấn
– <điều kiện>
•
•
•
Biểu thức boolean xác định dòng nào sẽ được rút trích
Nối các biểu thức: AND, OR, và NOT
Phép toán: , , , , , , LIKE và BETWEEN
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
5
Dấu * để chỉ tất cả các cột
– Tương đương với biểu thức đsqh sau:
malop = ‘Ti01’ (SinhVien)
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
7
Truy vấn cơ bản (tt)
• Ví dụ: Cho biết ds sinh viên nam của lớp có mã
„Ti01‟
SELECT masv, hoten, ngaysinh, phai, malop
FROM SinhVien
WHERE malop = ‘Ti01’ and phai = ‘Nam’
– Tương đương với biểu thức đsqh sau:
masv,
hoten, ngaysinh, phai, malop
‘Ti01’and phai=‘Nam’ (SinhVien))
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
(malop
=
WHERE
tenlop = ‘Cong nghe thong tin
01’ AND SinhVien.malop = LopHoc.malop
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
10
Truy vấn cơ bản (tt)
• Tên bí danh cho bảng
– Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của
danh sách sinh viên lớp „công nghệ thông tin 01‟
Select
From
Where
maso, hoten, ngaysinh, tenlop
SinhVien sv, LopHoc lh
tenlop = =‘Cong nghe thong
tin 01’
and sv.malop = lh.malop
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
11
Truy vấn cơ bản (tt)
- Toán tử between, not between, like, not like
hay một tập (ví du: [abcdef])
• [^]: ký tự đơn bất kỳ không nằm trong giới hạn được chỉ định
(ví dụ [^a-f]) hay một tập (ví dụ [^abcdef]).
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
13
Truy vấn cơ bản (tt)
- Toán tử between, not between, like, not like
• LIKE (tt)
– Ví dụ:
SELECT masv, hoten, ngaysinh
FROM SinhVien
WHERE hoten LIKE ‘Nguyen _ _ _ _’
– Hoặc
SELECT masv, hoten, ngaysinh
FROM SinhVien
WHERE hoten LIKE ‘Nguyen %’
• Sử dụng NOT LIKE tƣơng tự
– Lƣu ý:
• Like “ab\%cd%” cho ra những chuỗi bắt đầu với “ab%cd”
• Like “ab\\cd%” cho ra những chuỗi bắt đầu với “ab\cd”
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
14
SELECT <ds các cột>
FROM <ds các bảng>
WHERE <điều kiện>
ORDER BY <danh sách các cột><kiểu sắp>
– Trong đó <kiểu sắp> có thể là:
• ASC: tăng (mặc định)
• DESC: giảm
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
17
Truy vấn cơ bản
- Mệnh đề ORDER BY (tt)
• Ví dụ:
SELECT MANVIEN, SODA
FROM PHANCONG
ORDER BY MANVIEN DESC, SODA
MANVIEN
SODA
999887777
10
999887777
–
–
–
–
Truy vấn dữ liệu cơ bản
Truy vấn lồng
Hàm kết hợp và gom nhóm
Một số dạng truy vấn khác
• Khung nhìn
Ths.Ths.
Lƣơng
ThịThị
Ngọc
Khoa
CNTT
– TĐT
TUD – ĐH TĐT
Lƣơng
NgọcKhánh
Khánh ––Khoa
CNTT
– ĐH
19
Truy vấn lồng
•
•
EXISTS
NOT EXISTS
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
21
Truy vấn lồng (tt)
• Có 2 loại truy vấn lồng
– Lồng phân cấp
•
•
Mệnh đề WHERE của truy vấn con không tham chiếu đến
thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn
cha
Khi thực hiện, câu truy vấn con sẽ được thực hiện trước, 1 lần
– Lồng tương quan
•
•
Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một
thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn
- Ví dụ lồng phân cấp
• Ví dụ: Tìm những nhân viên không có thân nhân
nào
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT
24
Truy vấn lồng (tt)
- Ví dụ lồng tƣơng quan
• Ví dụ:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM PHONGBAN
WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG)
Câu truy vấn trên cho kết quả gì? Tương đương với
câu truy vấn đơn giản nào?
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG
Ths.Ths.
Lƣơng
ThịThị