1
Ban học tập
Khoa Công Nghệ Phần Mềm
Trường ĐH Công Nghệ Thông
Tin
Our Phone
0932 470 201
0936 645 393
01666 27 27 03
Email / Group
Bht.cnpm.uit@gmail.com
fb.com/groups/bht.cnpm.uit/
BAN HỌC TẬP ĐOÀN KHOA CNPM
Chuỗi Training cuối I năm học 2019 - 2020
2
Cơ Sở
Dữ Liệu
Cơ Sở
Dữ Liệu
8h ngày 27/12
Giảng đường 3 (A3)
Xuân Tùng KTPM2018
Đỗ Trung Thuận – KTPM2018
Training cuối
NỘI DUNG
NỘI DUNG
Phần 1: Các câu lệnh thực thi dữ liệu trong SQL (DML)
Phần 2: Ràng buộc toàn vẹn
Phần 3: Phụ thuộc hàm, các dạng chuẩn
PHẦN 1: Các câu lệnh thực thi dữ liệu
trong SQL (DML)
Truy vấn bản (Mệnh đề SELECT, FROM, WHERE)
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
Trong đó:
+ Danh sách các cột tên các cột hiện thị trong kết quả
truy vấn
+ Danh sách các bảng gồm tên các bảng liên quan đến
câu truy vấn
+ Điều kiện gồm biểu thức boolean, toán tử so sánh,
LIKE, …
Mệnh đề ORDER BY
Dùng để hiện thị kết quả truy vấn theo một thứ tự
nào đó
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
ORDER BY <danh sách các cột>
Trong đó mệnh đề ORDER BY gồm:
+ ASC (tăng, mặc định)
+ DESC (giảm)
Các phép toán tập hợp trong SQL (UNION, INTERSECT, EXCEPT)
+ Phép hội (UNION)
+ Phép giao (INTERSECT)
+ Phép trừ (EXCEPT)
SELECT <danh sách cột> FROM <danh sách
bảng> WHERE <điều kiện>
UNION/INTERSECT/EXCEPT
SELECT <danh sách cột> FROM <danh sách
bảng> WHERE <điều kiện>
Truy vấn lồng trong SQL
Trong SQL, thể gọi kết quả của một phép truy vấn khác
mệnh đề WHERE.
SELECT <danh sách cột> FROM <danh sách bảng>
WHERE <so sánh tập hợp> (SELECT <danh sách cột>
FROM <danh sách bảng>
WHERE <điều kiện>)
Trong đó, phép so sánh tập hợp thể :
+ IN/ NOT IN
+ ALL
+ ANY/SOME
+ EXIST/ NOT EXIST
+ Các toán tử so sánh
Phép chia trong SQL
Sử dụng phép so sánh NOT EXIST 2 lần để biểu diễn
Phép chia trong SQL
Xét dụ trên, ta biểu diễn như sau:
SELECT R1.A, R1.B, R1.C
FROM R R1
WHERE NOT EXISTS ( SELECT *
FROM S
WHERE NOT EXISTS ( SELECT *
FROM R R2 WHERE R2.D=S.D
AND R2.E=S.E
AND R1.A=R2.A
AND R1.B=R2.B
AND R1.C=R2.C ))
Hàm kết hợp gom nhóm
Gồm các hàm kết hợp COUNT, MAX, MIN, SUM,
AVG được đặt mệnh đề SELECT
pháp:
SELECT <cột cần gom nhóm>, <hàm kết hợp>
FROM <danh sách bảng>
WHERE <điều kiện>
GROUP BY <cột gom nhóm>
Hàm kết hợp gom nhóm
Ngoài ra còn thêm điều kiện trên nhóm bằng
mệnh đề HAVING đặt sau mệnh đề GROUP BY
SELECT <cột cần gom nhóm>, <hàm kết
hợp>
FROM <danh sách bảng>
WHERE <điều kiện>
GROUP BY <cột gom nhóm>
HAVING <điều kiện trên nhóm>
Câu lệnh INSERT
Dùng để thêm một hay nhiều dòng vào bảng
pháp
INSERT INTO <tên bảng>(<danh sách thuộc
tính>)
VALUES(<danh sách giá trị>)
Cấu trúc Case trong SQL
Dùng để kiểm tra điều kiện, xuất thông tin
theo từng trường hợp
CASE <tên cột>
WHEN <giá trị> THEN <biểu thức>
WHEN <giá trị> THEN <biểu thức>
[ELSE <biểu thức>]
END
VÍ DỤ
a. Hiển thị thông tin các tài khoản của các khách hàng (sotk,
trangthai, sodu) đã mở tài khoản vào ngày ‘01/01/2017’
(NgayMo) và sắp xếp kết quả theo số dư tăng dần.
TAIKHOAN (sotk, makh, maltk, ngaymo, sodu, laisuat, trangthai))
(17 18 HK1)
SELECT sotk, trangthai, sodu
FROM TAIKHOAN WHERE ngaymo = ‘01/01/2017’
ORDER BY sodu
VÍ DỤ
b. Cho biết những khách hàng (makh, hoten, cmnd) đã mở cả
hai loại tài khoản: tiết kiệm (tenltk = ‘Tiết kiệm’) và thanh toán
(tenltk = ‘Thanh toán’).
TAIKHOAN (sotk, makh, maltk, ngaymo, sodu, laisuat, trangthai))
(17 18 HK1)
KHACHHANG (makh, hoten, ngaysinh, diachi, sodt, cmnd)
LOAITAIKHOAN (maltk, tenltk, mota)
VÍ DỤ
C1:
(SELECT kh.makh, kh.hoten, kh.cmnd
FROM TAIKHOAN tk, LOAITAIKHOAN ltk, KHACHHANG kh
WHERE kh.makh = tk.makh AND tk.maltk = ltk.maltk AND
ltk.tenltk = ‘Thanh toán’)
INTERSECT
(SELECT kh.makh, kh.hoten, kh.cmnd
FROM TAIKHOAN tk, LOAITAIKHOAN ltk, KHACHHANG kh
WHERE kh.makh = tk.makh AND tk.maltk = ltk.maltk AND
ltk.tenltk = Tiết kiệm’)
.
VÍ DỤ
C2:
SELECT kh.makh, kh.hoten, kh.cmnd
FROM KHACHHANG kh, TAIKHOAN tk, LOAITAIKHOAN ltk
WHERE kh.makh = tk.makh AND tk.maltk = ltk.maltk AND
ltk.tenltk = ‘Thanh toán’) AND kh.makh IN
(SELECT tk.makh
FROM TAIKHOAN tk, LOAITAIKHOAN ltk
WHERE tk.maltk = ltk.maltk AND ltk.tenltk = Tiết kiệm’)
VÍ DỤ
c. Liệt các loại giao dịch cùng tổng số tiền giao dịch
tương ứng.
LOAIGIAODICH (malgd, tenlgd, mota)
GIAODICH (magd, sotk, malgd, ngaygd, sotien, noidung)
(17 18 HK1)
SELECT malgd, sum(sotien) as tongtien
FROM GIAODICH
GROUP BY malgd

Preview text:

1
BAN HỌC TẬP ĐOÀN KHOA CNPM
Chuỗi Training cuối kì I năm học 2019 - 2020 Ban học tập Our Phone Email / Group Khoa Công Nghệ Phần Mềm 0932 470 201 Bht.cnpm.uit@gmail.com
Trường ĐH Công Nghệ Thông 0936 645 393 fb.com/groups/bht.cnpm.uit/ Tin 01666 27 27 03 2 Cơ Sở Training cuối kì Cơ Sở Dữ Liệu Dữ Liệu 8h ngày 27/12
Giảng đường 3 (A3)
Lê Xuân Tùng – KTPM2018
Đỗ Trung Thuận – KTPM2018 NỘI DUNG NỘI DUNG
Phần 1: Các câu lệnh thực thi dữ liệu trong SQL (DML)
Phần 2: Ràng buộc toàn vẹn
Phần 3: Phụ thuộc hàm, các dạng chuẩn
PHẦN 1: Các câu lệnh thực thi dữ liệu trong SQL (DML)
Truy vấn cơ bản (Mệnh đề SELECT, FROM, WHERE) SELECT FROM
WHERE <điều kiện> Trong đó:
+ Danh sách các cột là tên các cột hiện thị trong kết quả truy vấn
+ Danh sách các bảng gồm tên các bảng liên quan đến câu truy vấn
+ Điều kiện gồm biểu thức boolean, toán tử so sánh, LIKE, … Mệnh đề ORDER BY
Dùng để hiện thị kết quả truy vấn theo một thứ tự nào đó SELECT FROM
WHERE <điều kiện> ORDER BY
Trong đó ở mệnh đề ORDER BY gồm: + ASC (tăng, mặc định) + DESC (giảm)
Các phép toán tập hợp trong SQL (UNION, INTERSECT, EXCEPT) + Phép hội (UNION) + Phép giao (INTERSECT) + Phép trừ (EXCEPT) SELECT FROM
bảng> WHERE <điều kiện> UNION/INTERSECT/EXCEPT SELECT FROM
bảng> WHERE <điều kiện> Truy vấn lồng trong SQL
Trong SQL, có thể gọi kết quả của một phép truy vấn khác ở mệnh đề WHERE. SELECT FROM WHERE (SELECT FROM
WHERE <điều kiện>)
Trong đó, phép so sánh tập hợp có thể là: + IN/ NOT IN + ALL + ANY/SOME + EXIST/ NOT EXIST + Các toán tử so sánh Phép chia trong SQL
Sử dụng phép so sánh NOT EXIST 2 lần để biểu diễn Phép chia trong SQL
Xét ví dụ trên, ta biểu diễn như sau:
SELECT R1.A, R1.B, R1.C FROM R R1
WHERE NOT EXISTS ( SELECT * FROM S
WHERE NOT EXISTS ( SELECT *
FROM R R2 WHERE R2.D=S.D AND R2.E=S.E AND R1.A=R2.A AND R1.B=R2.B AND R1.C=R2.C )) Hàm kết hợp và gom nhóm
Gồm các hàm kết hợp COUNT, MAX, MIN, SUM,
AVG được đặt ở mệnh đề SELECT Cú pháp: SELECT , FROM
WHERE <điều kiện> GROUP BY Hàm kết hợp và gom nhóm
Ngoài ra còn có thêm điều kiện trên nhóm bằng
mệnh đề HAVING đặt sau mệnh đề GROUP BY SELECT , hợp> FROM
WHERE <điều kiện> GROUP BY
HAVING <điều kiện trên nhóm> Câu lệnh INSERT
Dùng để thêm một hay nhiều dòng vào bảng Cú pháp INSERT INTO ( tính>) VALUES() Cấu trúc Case trong SQL
Dùng để kiểm tra điều kiện, xuất thông tin
theo từng trường hợp CASE WHEN THEN WHEN THEN [ELSE ] END VÍ DỤ (17 – 18 HK1)
TAIKHOAN (sotk, makh, maltk, ngaymo, sodu, laisuat, trangthai))
a. Hiển thị thông tin các tài khoản của các khách hàng (sotk,
trangthai, sodu) đã mở tài khoản vào ngày ‘01/01/2017’
(NgayMo) và sắp xếp kết quả theo số dư tăng dần. SELECT sotk, trangthai, sodu
FROM TAIKHOAN WHERE ngaymo = ‘01/01/2017’ ORDER BY sodu VÍ DỤ (17 – 18 HK1)
KHACHHANG (makh, hoten, ngaysinh, diachi, sodt, cmnd)
TAIKHOAN (sotk, makh, maltk, ngaymo, sodu, laisuat, trangthai))
LOAITAIKHOAN (maltk, tenltk, mota)
b. Cho biết những khách hàng (makh, hoten, cmnd) đã mở cả
hai loại tài khoản: tiết kiệm (tenltk = ‘Tiết kiệm’) và thanh toán (tenltk = ‘Thanh toán’). VÍ DỤ C1:
(SELECT kh.makh, kh.hoten, kh.cmnd
FROM TAIKHOAN tk, LOAITAIKHOAN ltk, KHACHHANG kh
WHERE kh.makh = tk.makh AND tk.maltk = ltk.maltk AND
ltk.tenltk = ‘Thanh toán’) INTERSECT
(SELECT kh.makh, kh.hoten, kh.cmnd
FROM TAIKHOAN tk, LOAITAIKHOAN ltk, KHACHHANG kh
WHERE kh.makh = tk.makh AND tk.maltk = ltk.maltk AND
ltk.tenltk = ‘Tiết kiệm’) . VÍ DỤ C2:
SELECT kh.makh, kh.hoten, kh.cmnd
FROM KHACHHANG kh, TAIKHOAN tk, LOAITAIKHOAN ltk
WHERE kh.makh = tk.makh AND tk.maltk = ltk.maltk AND
ltk.tenltk = ‘Thanh toán’) AND kh.makh IN (SELECT tk.makh
FROM TAIKHOAN tk, LOAITAIKHOAN ltk
WHERE tk.maltk = ltk.maltk AND ltk.tenltk = ‘Tiết kiệm’) VÍ DỤ (17 – 18 HK1)
LOAIGIAODICH (malgd, tenlgd, mota)
GIAODICH (magd, sotk, malgd, ngaygd, sotien, noidung)
c. Liệt kê các mã loại giao dịch cùng tổng số tiền giao dịch tương ứng.
SELECT malgd, sum(sotien) as tongtien FROM GIAODICH GROUP BY malgd