Tải bản đầy đủ (.pdf) (61 trang)

Bài giảng cơ sở dữ liệu chương 4 ths lương thị ngọc khánh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (673.96 KB, 61 trang )

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)


– PhanCong(manvien, soda, thoigian)
– ThanNhan(manvien, tentn, phai, ngaysinh, quanhe)

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

3


Truy vấn dữ liệu
• Là ngôn ngữ rút trích dữ liệu
– Thường đi kèm với một số điều kiện nào đó

• Dựa trên
Phép toán ĐSQH



Một số bổ sung

– Cho phép kết quả trả về của bảng có nhiều dòng trùng
nhau

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

4


Truy vấn cơ bản
• Gồm 3 mệnh đề
SELECT [DISTINCT] <danh sách các cột>

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



Truy vấn cơ bản (tt)
• SQL và ĐSQH




SELECT <danh sách các cột>
FROM <danh sách các bảng>



WHERE <điều kiện>

SELECT L

L (C (R))
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

FROM R
WHERE C

6


Truy vấn cơ bản (tt)
• Ví dụ: Cho biết ds sinh viên lớp có mã lớp là „Ti01‟
SELECT *
FROM SinhVien
WHERE malop = ‘Ti01’


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

=


8


Truy vấn cơ bản (tt)
• Tên bí danh:
– Có thể đặt lại tên cho ds các thuộc tính trong bảng kết
quả (gọi là tên bí danh) bằng cách sử dụng cú pháp
sau:
Select <tên cột> AS <tên mới cho cột>
– Ví dụ
SELECT masv AS ma, hoten AS ‘Ho
ngaysinh, phai, malop
FROM SinhVien
WHERE malop = ‘Ti01’ and phai = ‘Nam’

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

ten’,

9


Truy vấn cơ bản (tt)
• 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
maso, hoten, ngaysinh, tenlop
FROM
SinhVien, LopHoc

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


• BETWEEN
– Sử dụng để kiểm tra giá trị dữ liệu nằm trong (ngoài)
một khoảng nào đó.
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG > 20000 AND LUONG < 30000

• Có thể viết:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000

• Sử dụng NOT BETWEEN tƣơng tự
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

12


Truy vấn cơ bản (tt)
- Toán tử between, not between, like, not like

• LIKE
– Từ khóa LIKE (NOT LIKE) được sử dụng trong câu
lệnh select nhằm mô tả khuôn dạng dữ liệu cần tìm
kiếm.
– Thường được kết hợp với các ký tự đại diện sau:
• %: chuỗi ký tự bất kỳ (có thể là không có hoặc nhiều ký tự)
• _: ký tự đơn bất kỳ
• []: ký tự đơn bất kỳ trong giới hạn được chỉ định (ví dụ [a-f])

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



Truy vấn cơ bản (tt)
- Ví dụ

• Với những đề án ở „Ha Noi‟, cho biết mã đề án, mã
phòng ban chủ trì đề án, họ tên trưởng phòng cùng
với ngày sinh và địa chỉ của người ấy

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

15


Truy vấn cơ bản (tt)
- Ví dụ

• Cho biết họ tên của nhân viên phòng số 5 có tham
gia vào đề án “Sản phẩm X” với số giờ làm việc trên
10 giờ

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

16


Truy vấn cơ bản
- Mệnh đề ORDER BY

• Dùng để hiển thị kết quả câu truy vấn theo một thứ
tự nào đó
• Cú pháp:

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


30

987987987

10

987987987

30

987654321

10

987654321

20

987654321

30

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

18


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.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

• Các câu lệnh SELECT có thể lồng nhau ở nhiều
mức
• Các câu truy vấn con trong cùng một mệnh đề
WHERE được kết hợp bằng phép nối logic
• Câu truy vấn con thường trả về một tập các giá trị
• Cú pháp:
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <so sánh tập hợp> (
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>)
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

20


Truy vấn lồng (tt)
• Mệnh đề WHERE của câu truy vấn cha
– <biểu thức> <so sánh tập hợp> <truy vấn con>
– So sánh tập hợp thường đi cùng với một số toán tử




IN, NOT IN
ALL
ANY hoặc SOME

– Kiểm tra sự tồn tại




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

cha
Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần,
mỗi lần tương ứng với một bộ của truy vấn cha

Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

22


Truy vấn lồng (tt)
- Ví dụ lồng phân cấp

• Ví dụ:
SELECT MANV, TENNV
FROM NHANVIEN, DDPhong
WHERE DIADIEM = ‘TP HCM’ AND phong = maphong

• Tương đương với câu truy vấn lồng sau:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHONG IN (SELECT MAPHONG
FROM DDPHONG
WHERE DIADIEM = ‘TP HCM’
)
Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTT – ĐH TĐT

23


Truy vấn lồng (tt)

- 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ị

Ngọc
Khoa
CNTT
– TĐT
TUD – ĐH TĐT
Lƣơng
NgọcKhánh
Khánh ––Khoa
CNTT
– ĐH

25


×