Professional Documents
Culture Documents
THANH_PHO(matp, tentp)
NHAN_VIEN(manv, honv, tennv, ngaysinh, phai, mucluong, macn, manvquanly)
THAN_NHAN(manv, tenthannhan, ngaysinh, phai, moiquanhe)
VPHONG_CN(macn, matp)
CONG_TRINH(mact, tenct, ngaybd, ngaykt, matp, macn)
PHAN_CONG(mact, manv, sogiotuan)
1
(2022) Chương 5: Ngôn ngữ SQL
2.1 Kiểu dữ liệu
Kiểu số
● INTEGER
● SMALLINT
● REAL
● DOUBLE PRECISION
● FLOAT, FLOAT(p)
2
(2022) Chương 5: Ngôn ngữ SQL
2.1 Kiểu dữ liệu (tt.)
Kiểu chuỗi ký tự
● CHARACTER, CHARACTER(n)
● CHARACTER VARYING(x)
Kiểu ngày
● DATE
● TIME
● TIMESTAMP
3
(2022) Chương 5: Ngôn ngữ SQL
2.1 Kiểu dữ liệu (tt.)
4
(2022) Chương 5: Ngôn ngữ SQL
2.2 Tạo và xóa CSDL
Tạo CSDL
● Ví dụ:
5
(2022) Chương 5: Ngôn ngữ SQL
2.2 Tạo và xóa CSDL (tt.)
● Ví dụ:
DROP DATABASE QLCT
6
(2022) Chương 5: Ngôn ngữ SQL
2.3 Tạo bảng
● Ví dụ:
CREATE TABLE THANH_PHO (
matp CHAR(2),
tentp NVARCHAR(20)
)
7
(2022) Chương 5: Ngôn ngữ SQL
2.3 Tạo bảng (tt.)
● NOT NULL
● NULL
● DEFAULT
● PRIMARY KEY
● UNIQUE
● CHECK
8
(2022) Chương 5: Ngôn ngữ SQL
2.3 Tạo bảng (tt.)
10
(2022) Chương 5: Ngôn ngữ SQL
2.4 Sửa đổi bảng
11
(2022) Chương 5: Ngôn ngữ SQL
2.4 Sửa đổi bảng (tt.)
Ví dụ:
12
(2022) Chương 5: Ngôn ngữ SQL
2.4 Sửa đổi bảng (tt.)
13
(2022) Chương 5: Ngôn ngữ SQL
2.4 Sửa đổi bảng (tt.)
Ví dụ:
Khóa ngoại nên được tạo SAU khi đã tạo hết các bảng !
14
(2022) Chương 5: Ngôn ngữ SQL
2.4 Sửa đổi bảng (tt.)
Xóa 1 bảng
15
(2022) Chương 5: Ngôn ngữ SQL
Nội dung
1. Mở đầu
● Ví dụ:
INSERT INTO NHAN_VIEN
VALUES ('N09', N'Lê Ngọc', N'An', N'Nam', '1965/11/10', 800000, 'C03', 'N02');
Lưu ý:
● thêm nhiều mẩu tin cùng lúc theo lệnh truy vấn (xem phần 4)
17
(2022) Chương 5: Ngôn ngữ SQL
3. Cập nhật dữ liệu (tt.)
18
(2022) Chương 5: Ngôn ngữ SQL
3. Cập nhật dữ liệu (tt.)
Cú pháp
UPDATE <tên bảng>
SET <tên thuộc tính_1> = <giá trị 1>,
<tên thuộc tính_2> = <giá trị 2>,
…
[WHERE <điều kiện>]
● Ví dụ:
UPDATE CHI_NHANH
SET manvptr = 'N10' WHERE macn = 'C02'
19
(2022) Chương 5: Ngôn ngữ SQL
Nội dung
1. Mở đầu
21
(2022) Chương 5: Ngôn ngữ SQL
4. Truy vấn dữ liệu (tt.)
Toán tử
● số: ^, *, /, mod, +, -
● so sánh: , , , , ,
● LIKE, BETWEEN
22
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chiếu
Ví dụ:
23
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chiếu (tt.)
Bí danh
manv ho_ten
24
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chọn
Ví dụ:
SELECT *
FROM NHAN_VIEN
macn = 'C02' (NHAN_VIEN)
WHERE macn = 'C02'
25
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chọn (tt.)
mucluong
SELECT DISTINCT mucluong
FROM NHAN_VIEN 30000
25000
WHERE macn = 'C02' AND phai = N'Nữ'
38000
26
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chọn (tt.)
27
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chọn (tt.)
Toán tử LIKE: kết hợp với % và _
28
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chọn (tt.)
29
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép chọn (tt.)
30
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Sắp xếp
manv mact
N04 CT01
N04 CT03
N02 CT01
N02 CT03
N01 CT01
N01 CT02
N01 CT03
31
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Tích Đề-các
Ví dụ:
32
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép kết
Cú pháp
33
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép kết (tt.)
Danh sách NV (mã số, họ, tên) của chi nhánh TPHCM
34
(2022) Chương 5: Ngôn ngữ SQL
4.1 Truy vấn cơ bản – Phép kết (tt.)
35
(2022) Chương 5: Ngôn ngữ SQL
4.2 Truy vấn phân nhóm
Cú pháp
36
(2022) Chương 5: Ngôn ngữ SQL
4.2 Truy vấn phân nhóm (tt.)
37
(2022) Chương 5: Ngôn ngữ SQL
4.2 Truy vấn phân nhóm (tt.)
38
(2022) Chương 5: Ngôn ngữ SQL
4.2 Truy vấn phân nhóm (tt.)
Tên những chi nhánh có lương trung bình của nữ > 2000000
39
(2022) Chương 5: Ngôn ngữ SQL
NV làm trên 1 đề án: COUNT()
40
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE
Cú pháp
● <truy vấn con>: kết quả là một bảng tạm (trung gian)
● <toán tử>
IN, ALL, ANY, SOME
EXISTS
Danh sách NV của các chi nhánh tại thành phố có mã số là 01
42
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
SELECT *
FROM NHAN_VIEN
WHERE manv NOT IN (SELECT DISTINCT manv
FROM THAN_NHAN )
SELECT *
FROM NHAN_VIEN
WHERE manv <> ALL (SELECT manv
FROM THAN_NHAN )
43
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
SELECT *
FROM NHAN_VIEN
WHERE mucluong > ANY (SELECT mucluong
FROM NHAN_VIEN
WHERE macn = (SELECT macn
FROM CHI_NHANH
WHERE tencn = N'Chi nhánh TPHCM'
)
)
44
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
SELECT *
FROM NHAN_VIEN
WHERE mucluong > ALL (SELECT mucluong
FROM NHAN_VIEN
WHERE macn = (SELECT macn
FROM CHI_NHANH
WHERE tencn = N'Chi nhánh TPHCM'
)
)
45
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
Danh sách các trưởng chi nhánh có tối thiểu 1 thân nhân
SELECT *
FROM NHAN_VIEN
WHERE manv IN (SELECT manvptr FROM CHI_NHANH)
AND manv IN (SELECT manv FROM THAN_NHAN)
46
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
47
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
SELECT *
FROM NHAN_VIEN NV
WHERE NOT EXISTS (SELECT *
FROM THAN_NHAN TN
WHERE NV.manv = TN.manv)
48
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
SELECT *
FROM NHAN_VIEN N1
WHERE EXISTS (SELECT *
FROM NHAN_VIEN N2
WHERE N1.mucluong > N2.mucluong
AND N2.macn = (SELECT macn
FROM CHI_NHANH
WHERE tencn = N'Chi nhánh TPHCM'
)
)
49
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
Danh sách các trưởng chi nhánh có tối thiểu 1 thân nhân
SELECT *
FROM NHAN_VIEN NV
WHERE EXISTS (SELECT *
FROM THAN_NHAN TN
WHERE NV.manv = TN.manv )
AND EXISTS (SELECT *
FROM CHI_NHANH
WHERE NV.manv = manvptr )
50
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
51
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – WHERE (tt.)
52
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – FROM
Cú pháp
53
(2022) Chương 5: Ngôn ngữ SQL
4.3 Truy vấn con – FROM (tt.)
Những chi nhánh có lương trung bình > 4000000
SELECT macn, AVG(mucluong)
FROM NHAN_VIEN
GROUP BY macn
HAVING AVG(mucluong) > 4000000
Cú pháp
55
(2022) Chương 5: Ngôn ngữ SQL
4.4 Truy vấn khác – Phép chia
Nhắc lại
S(A1, A2, …, Am) và T(A1, A2, …, An), S* T* (n > m)
R(S) và S’(T)
Q* = T* S* = { Am+1, …, An }
Q = R S’ = { q | sS’, (s, q) R }
R A B C D E S D E R S A B C
a a a a 1 a 1 a a c
a a c a 1 b 1 c a c
a a c b 1
b a c a 1
b a c b 3
c a c a 1
c a c b 1
c a b b 1
56
(2022) Chương 5: Ngôn ngữ SQL
4.4 Truy vấn khác – Phép chia (tt.)
Sử dụng EXCEPT
EXCEPT
R1.C=R2.C)
57
(2022) Chương 5: Ngôn ngữ SQL
4.4 Truy vấn khác – Thêm mẩu tin
● Ví dụ:
CREATE TABLE mucluong_CN (
tencn VARCHAR(50), sonv INT, tongcongluong INT)
58
(2022) Chương 5: Ngôn ngữ SQL
Nội dung
1. Mở đầu
● Định nghĩa
Bảng “ảo” được định nghĩa từ một hoặc nhiều bảng trong CSDL
● Tạo View và gán quyền truy cập sử dụng cho một nhóm user nào
đó hạn chế khả năng truy cập vào table gốc đối với những
user không có quyền hạn.
● Đối với các câu lệnh phức tạp, chỉ cần tạo một lần dưới dạng view.
60
(2022) Chương 5: Ngôn ngữ SQL
5.2 Truy vấn dữ liệu
Sau khi tạo View, có thể tiến hành truy vấn dữ liệu trên view đó
bằng các câu lệnh SQL
Ví dụ:
SELECT SUM(mucluong)
FROM NV_C01
61
(2022) Chương 5: Ngôn ngữ SQL
5.2 Truy vấn dữ liệu
Xóa View:
62
(2022) Chương 5: Ngôn ngữ SQL
5.3 Cập nhật dữ liệu cho bảng thông
qua View
Có thể làm điều này khi view định nghĩa trên 1 bảng R và:
● Thành phần SELECT chứa tất cả thuộc tính NOT NULL của R
● Thành phần SELECT không được chứa các hàm / công thức
tính toán
63
(2022) Chương 5: Ngôn ngữ SQL
5.3 Cập nhật dữ liệu cho bảng thông
qua View (tt.)
Ví dụ
CREATE VIEW NV_C02 AS
SELECT manv, honv, tennv, phai, ngaysinh, mucluong, macn, manvquanly
FROM NHAN_VIEN
WHERE macn = 'C02'
UPDATE NV_C02
SET manvquanly=‘N01’
WHERE manv=‘N90’;
Ví dụ
CREATE VIEW NV_C03 AS
SELECT manv, honv, tennv, phai, ngaysinh, mucluong, macn, manvquanly
FROM NHAN_VIEN
WHERE macn = ‘C03’
WITH CHECK OPTION
65
(2022) Chương 5: Ngôn ngữ SQL
5.3 Cập nhật dữ liệu cho bảng thông
qua View (tt.)
Ví dụ
UPDATE NV_C03
SET manvquanly=‘N03’
WHERE manv=‘N04’;
66
(2022) Chương 5: Ngôn ngữ SQL
5.3 Cập nhật dữ liệu cho bảng thông
qua View (tt.)
View định nghĩa trên nhiều bảng
67
(2022) Chương 5: Ngôn ngữ SQL