Giới thiệu về SQL (Structured Query Language)
Giới thiệu Định nghĩa dữ liệu Truy vấn dữ liệu Cập nhật dữ liệu Khung nhìn (view) Chỉ mục (index)
Bạn đang xem trước 20 trang tài liệu Giới thiệu về SQL (Structured Query Language), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
SQL
(Structured Query Language)
Nội dung
Giới thiệu
Định nghĩa dữ liệu
Truy vấn dữ liệu
Cập nhật dữ liệu
Khung nhìn (view)
Chỉ mục (index)
Nội dung
Giới thiệu
Định nghĩa dữ liệu
Truy vấn dữ liệu
Cập nhật dữ liệu
Khung nhìn (view)
Chỉ mục (index)
Giới thiệu
Ngôn ngữ ĐSQH
Cách thức truy vấn dữ liệu
Khó khăn cho người sử dụng
SQL (Structured Query Language)
Ngôn ngữ cấp cao
Người sử dụng chỉ cần đưa ra nội dung cần truy vấn
Được phát triển bởi IBM (1970s)
Được gọi là SEQUEL
Được ANSI công nhận và phát triển thành chuẩn
• SQL-86
• SQL-92
• SQL-99
4
Giới thiệu (tt)
SQL gồm
Định nghĩa dữ liệu (DDL)
Thao tác dữ liệu (DML)
Ngôn ngữ thao tác dữ liệu nhúng
Định nghĩa khung nhìn
Ràng buộc toàn vẹn
Phân quyền và bảo mật
Điều khiển giao tác
5
SQL dùng thuật ngữ
Bảng ~ quan hệ
Cột ~ thuộc tính
Dòng ~ bộ
Nội dung
Giới thiệu
Định nghĩa dữ liệu
Truy vấn dữ liệu
Cập nhật dữ liệu
Khung nhìn (view)
Chỉ mục (index)
Định nghĩa dữ liệu DDL
Là ngôn ngữ mô tả
Lược đồ cho mỗi quan hệ
Miền giá trị tương ứng của từng thuộc tính
Ràng buộc toàn vẹn
Chỉ mục trên mỗi quan hệ
Gồm
CREATE TABLE (tạo bảng)
DROP TABLE (xóa bảng)
ALTER TABLE (sửa bảng)
CREATE DOMAIN (tạo miền giá trị)
CREATE DATABASE
…
7
Kiểu dữ liệu
Số (numeric)
INTEGER
SMALLINT
NUMERIC, NUMERIC(p), NUMERIC(p,s)
DECIMAL, DECIMAL(p), DECIMAL(p,s)
REAL
DOUBLE PRECISION
FLOAT, FLOAT(p)
8
Kiểu dữ liệu (tt)
Chuỗi ký tự (character string)
CHARACTER, CHARACTER(n)
CHARACTER VARYING(x)
Chuỗi bit (bit string)
BIT, BIT(x)
BIT VARYING(x)
Ngày giờ (datetime)
DATE gồm ngày, tháng và năm
TIME gồm giờ, phút và giây
TIMESTAMP gồm ngày và giờ
9
Lệnh tạo bảng
Để định nghĩa một bảng
Tên bảng
Các thuộc tính
• Tên thuộc tính
• Kiểu dữ liệu
• Các RBTV trên thuộc tính
Cú pháp
10
CREATE TABLE (
[],
[],
…
[]
)
Ví dụ - Tạo bảng
11
CREATE TABLE NHANVIEN (
MANV CHAR(9),
HONV VARCHAR(10),
TENLOT VARCHAR(20),
TENNV VARCHAR(10),
NGSINH DATETIME,
DCHI VARCHAR(50),
PHAI CHAR(3),
LUONG INT,
MA_NQL CHAR(9),
PHG INT
)
Lệnh tạo bảng (tt)
NOT NULL
NULL
UNIQUE
DEFAULT
PRIMARY KEY
FOREIGN KEY / REFERENCES
CHECK
Đặt tên cho RBTV
12
CONSTRAINT
Ví dụ - RBTV
13
CREATE TABLE NHANVIEN (
HONV VARCHAR(10) NOT NULL,
TENLOT VARCHAR(20) NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) PRIMARY KEY,
NGSINH DATETIME,
DCHI VARCHAR(50),
PHAI CHAR(3) CHECK (PHAI IN (‘Nam’, ‘Nu’)),
LUONG INT DEFAULT (10000),
MA_NQL CHAR(9),
PHG INT
)
Ví dụ - RBTV
14
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20) UNIQUE,
MAPHG INT NOT NULL,
TRPHG CHAR(9),
NG_NHANCHUC DATETIME DEFAULT (GETDATE())
)
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
SODA INT REFERENCES DEAN(MADA),
THOIGIAN DECIMAL(3,1)
)
Ví dụ - Đặt tên cho RBTV
15
CREATE TABLE NHANVIEN (
HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL,
TENLOT VARCHAR(20) NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY,
NGSINH DATETIME,
DCHI VARCHAR(50),
PHAI CHAR(3) CONSTRAINT NV_PHAI_CHK
CHECK (PHAI IN (‘Nam’, ‘Nu’)),
LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000),
MA_NQL CHAR(9),
PHG INT
)
Ví dụ - Đặt tên cho RBTV
16
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9),
SODA INT,
THOIGIAN DECIMAL(3,1),
CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN,
SODA),
CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)
REFERENCES DEAN(MADA)
)
Lệnh sửa cấu trúc bảng
Được dùng để
Thay đổi cấu trúc bảng
Thay đổi RBTV
Thêm cột
Xóa cột
Mở rộng cột
17
ALTER TABLE ADD COLUMN
[]
ALTER TABLE DROP COLUMN
ALTER TABLE ALTER COLUMN
Lệnh sửa bảng (tt)
Thêm RBTV
Xóa RBTV
18
ALTER TABLE ADD
CONSTRAINT ,
CONSTRAINT ,
…
ALTER TABLE DROP
Ví dụ - Thay đổi cấu trúc bảng
19
ALTER TABLE NHANVIEN ADD
NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN
NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
Ví dụ - Thay đổi RBTV
20
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20),
MAPHG INT NOT NULL,
TRPHG CHAR(9),
NG_NHANCHUC DATETIME
)
ALTER TABLE PHONGBAN ADD
CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG),
CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())
FOR (NG_NHANCHUC),
CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
Lệnh xóa bảng
Được dùng để xóa cấu trúc bảng
Tất cả dữ liệu của bảng cũng bị xóa
Cú pháp
Ví dụ
21
DROP TABLE
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
DROP TABLE PHANCONG
Lệnh xóa bảng (tt)
22
NHANVIEN
TENNV HONV TENLOT MANV NGSINH DCHI PHAI LUONG MA_NQL PHG
PHONGBAN
TRPHG TENPHG MAPHG NG_NHANCHUC
Lệnh tạo miền giá trị
Tạo ra một kiểu dữ liệu mới kế thừa những
kiểu dữ liệu có sẵn.
Cú pháp
Ví dụ
23
CREATE DOMAIN AS
CREATE DOMAIN Kieu_Ten AS VARCHAR(30)
Nội dung
Giới thiệu
Định nghĩa dữ liệu
Truy vấn dữ liệu
mệnh đề SELECT
mệnh đề WHERE
mệnh đề FROM
mệnh đề ORDER BY
truy vấn con
mệnh đề GROUP BY
một số dạng truy vấn khác
Cập nhật dữ liệu
Khung nhìn (view)
Chỉ mục (index)
Truy vấn dữ liệu
Là ngôn ngữ rút trích dữ liệu thỏa một số điều
kiện nào đó
Dựa trên
Cho phép 1 bảng có nhiều dòng trùng nhau
Bảng là bag quan hệ là set
25
Phép toán ĐSQH Một số bổ sung
Truy vấn cơ bản
Gồm 3 mệnh đề
• Tên các cột cần được hiển thị trong kết quả truy vấn
• Tên các bảng liên quan đến câu truy vấ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
26
SELECT
FROM
WHERE
Truy vấn cơ bản (tt)
SQL và ĐSQH
27
SELECT
FROM
WHERE
SELECT L
FROM R
WHERE C
L (C (R))
Ví dụ
28
SELECT *
FROM NHANVIEN
WHERE PHG=5
Lấy tất cả các cột của quan hệ kết quả
TENNV HONV NGSINH DCHI PHAI LUONG PHG
Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5
Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
Tìm đọc 1 tập hợp các dòng dữ liệu
Mệnh đề SELECT
29
SELECT MANV, HONV, TENLOT, TENNV
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
TENNV HONV
Tung Nguyen
Hung Nguyen
TENLOT
Thanh
Manh
333445555
987987987
MANV
Mệnh đề SELECT (tt)
30
SELECT MANV, HONV AS HO, TENLOT AS ‘TEN LOT’, TENNV AS TEN
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
TEN HO
Tung Nguyen
Hung Nguyen
TEN LOT
Thanh
Manh
333445555
987987987
MANV
Tên bí danh
Mệnh đề SELECT (tt)
31
SELECT MANV, HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
HO TEN
Nguyen Thanh Tung
Nguyen Manh Hung
333445555
987987987
MANV
Mở rộng
Mệnh đề SELECT (tt)
32
SELECT MANV, LUONG*1.1 AS ‘LUONG10%’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
LUONG10%
33000
27500
333445555
987987987
MANV
Mở rộng
Mệnh đề SELECT (tt)
33
SELECT LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
Loại bỏ các dòng trùng nhau LUONG
30000
25000
25000
38000
LUONG
30000
25000
38000
SELECT DISTINCT LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
Mệnh đề WHERE
34
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG
Biểu thức luận lý
TRUE TRUE
Mệnh đề WHERE (tt)
35
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND
PHG=MAPHG
Độ ưu tiên
Mệnh đề WHERE (tt)
36
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000
BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000
Mệnh đề WHERE (tt)
37
NOT BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000
Mệnh đề WHERE (tt)
38
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen _ _ _ _’
LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen %’
Chuỗi bất kỳ
Ký tự bất kỳ
Mệnh đề WHERE (tt)
39
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen’
NOT LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV NOT NOT LIKE ‘Nguyen’
Mệnh đề WHERE (tt)
40
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’
ESCAPE
‘Nguyen_’
Mệnh đề WHERE (tt)
41
Ngày giờ
SELECT MANV, TENNV
FROM NHANVIEN
WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’
YYYY-MM-DD
MM/DD/YYYY
‘1955-12-08’
’12/08/1955’
‘December 8, 1955’
HH:MI:SS ’17:30:00’
’05:30 PM’
‘1955-12-08 17:30:00’
Mệnh đề WHERE (tt)
Sử dụng trong trường hợp
Không biết (value unknown)
Không thể áp dụng (value inapplicable)
Không tồn tại (value withheld)
Những biểu thức tính toán có liên quan đến giá trị NULL sẽ cho ra kết quả
là NULL
x có giá trị là NULL
x + 3 cho ra kết quả là NULL
x + 3 là một biểu thức không hợp lệ trong SQL
Những biểu thức so sánh có liên quan đến giá trị NULL sẽ cho ra kết quả
là UNKNOWN
x = 3 cho ra kết quả là UNKNOWN
x = 3 là một so sánh không hợp lệ trong SQL
42
NULL
Mệnh đề WHERE (tt)
43
NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
Mệnh đề FROM
44
WHERE TRUE
SELECT MANV, MAPHG
FROM NHANVIEN, PHONGBAN
Không sử dụng mệnh đề WHERE
MAPHG
1
4
333445555
333445555
MANV
5
1 987987987
987987987
333445555
4
5 987987987
… …
Mệnh đề FROM (tt)
45
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
WHERE MAPHG=MAPHG
Tên bí danh
AS PB, DDIEM_PHG AS DD
PB.MAPHG=DD.MAPHG
SELECT TENNV, NGSINH, TENTN, NGSINH
FROM NHANVIEN, THANNHAN
WHERE MANV=MA_NVIEN
V.NGSINH, TE TN, T .NGSINH
NV, THANNHAN TN
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
ASC: tăng (mặc định)
DESC: giảm
46
SELECT
FROM
WHERE
ORDER BY
Mệnh đề ORDER BY (tt)
Ví dụ
47
SELECT MA_NVIEN, SODA
FROM PHANCONG
ORDER BY MA_NVIEN DESC, SODA
SODA
10
30
999887777
999887777
MA_NVIEN
10
30 987987987
987654321
987987987
10
20 987654321
30 987654321
Phép toán tập hợp trong SQL
SQL có cài đặt các phép toán
Hội (UNION)
Giao (INTERSECT)
Trừ (EXCEPT)
Kết quả trả về là tập hợp
Loại bỏ các bộ trùng nhau
Để giữ lại các bộ trùng nhau
• UNION ALL
• INTERSECT ALL
• EXCEPT ALL
48
Phép toán tập hợp trong SQL (tt)
Cú pháp
49
SELECT FROM WHERE
UNION [ALL]
SELECT FROM WHERE
SELECT FROM WHERE
INTERSECT [ALL]
SELECT FROM WHERE
SELECT FROM WHERE
EXCEPT [ALL]
SELECT FROM WHERE
Truy vấn con (Sub query)
Truy vấn con là 1 lệnh Select xuất hiện trong 1
lệnh Select khác hoặc trong câu lệnh Update,
Delete và trả về kết quả trung gian.
Truy vấn con được đặt trong hai dấu ( )
Thường xuất hiện trong các mệnh đề Where,
Having và From của 1 lệnh Select kh
50
Truy vấn con (Sub query)
51
SELECT
FROM
WHERE (
SELECT
FROM
WHERE )
Câu truy vấn cha
(Outer query)
Câu truy vấn con
(Subquery)
Truy vấn lồng nhau (Nested
Subquery)
SELECT …
FROM T
WHERE … ( SELECT …
FROM …
WHERE điều kiện hàng không có mặt T )
52
Truy vấn con thực hiện trước 1 lần duy nhất.
Kết quả truy vấn con được dùng cho truy vấn
ngoài.
Truy vấn con tương quan
(Correlated SubQuery)
Với mỗi hàng của truy vấn ngoài, dữ liệu này
dùng để thực thi truy vấn con.
Kết quả truy vấn con lại trở thành dữ liệu cho
truy vấn ngoài
SELECT …
FROM T
WHERE … ( SELECT …
FROM ...
WHERE điều kiện hàng có mặt T )
Truy vấn lồng (tt)
Các câu lệnh SELECT có thể lồng nhau ở nhiều mức
Câu truy vấn con thường trả về một tập các giá trị
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
Mệnh đề WHERE của câu truy vấn cha
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
54
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
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
55
Truy vấn con (tt)
Các truy vấn con có thể :
Trả về một hàng hay nhiều hàng.
Trả về một cột hay nhiều cột.
Sử dụng Group by hoặc hàm nhóm.
Sử dụng các phép toán tập hợp.
56
Ví dụ - Lồng phân cấp
57
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHG IN (
SELECT MAPHG
FROM DIADIEM_PHG
WHERE DIADIEM=‘TP HCM’ )
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=‘TP HCM’ AND PHG=MAPHG
Ví dụ - Lồng tương quan
58
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG
SELECT MANV, TENNV
FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG )
Nhận xét IN và EXISTS
IN
IN
Thuộc tính ở mệnh đề SELECT của truy vấn con phải
có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE
của truy vấn cha
EXISTS
Không cần có thuộc tính, hằng số hay biểu thức nào
khác đứng trước
Không nhất thiết liệt kê tên thuộc tính ở mệnh đề
SELECT của truy vấn con
Những câu truy vấn có = ANY hay IN đều có thể
chuyển thành câu truy vấn có EXISTS
60
Phép chia trong SQL
RS là tập các giá trị ai trong R sao cho không
có giá trị bi nào trong S làm cho bộ (ai, bi)
không tồn tại trong R
61
A B
a
a
a
a
a
a
a
a
C D
a
b
a
a
b
a
b
b
E
1
3
1
1
1
1
1
1
R D E
a
S
b
1
1
A B C
a
a
RS
ai bi
Phép chia trong SQL (tt)
Sử dụng NOT EXISTS để biểu diễn
62
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 ))
Ví dụ 11
Tìm tên các nhân viên được phân công làm tất
cả các đồ án
Tìm tên các nhân viên mà không có đề án nào là
không được phân công làm
Tập bị chia: PHANCONG(MA_NVIEN, SODA)
Tập chia: DEAN(MADA)
Tập kết quả: KQ(MA_NVIEN)
Kết KQ với NHANVIEN để lấy ra TENNV
63
Hàm kết hợp
COUNT
COUNT(*) đếm số dòng
COUNT() đếm số giá trị khác NULL của
thuộc tính
COUNT(DISTINCT ) đếm số giá trị khác
nhau và khác NULL của thuộc tính
MIN
MAX
SUM
AVG
Các hàm kết hợp được đặt ở mệnh đề SELECT
64
Ví dụ 14
Cho biết số lượng nhân viên của từng phòng
ban
65
SL_NV
5
4
3
3
PHG
1 1
TENNV HONV NGSINH DCHI PHAI LUONG PHG
Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5
Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
Tam Tran 07/31/1972 543 MTL Q1 Nu 25000 5
Hang Bui 07/19/1968 33 NTH Q1 Nu 38000 4
453453453
999887777
333445555
987654321
Thanh
Ngoc
Nhu Le 07620/1951 219 TD Q3 Nu 43000 4 987654321 888665555 Quynh
Quang Tran 04/08/1969 980 LHP Q5 Nam 25000 4
Vinh Pham 11/10/1945 450 TV HN Nam 55000 1
987987987
888665555
987654321
NULL
Hong
Van
Gom nhóm
Cú pháp
Sau khi gom nhóm
Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc
tính gom nhóm
66
SELECT
FROM
WHERE
GROUP BY
Ví dụ 15
Với mỗi nhân viên cho biết mã số, họ tên, số
lượng đề án và tổng thời gian mà họ tham gia
67
SODA THOIGIAN
1 32.5
2 7.5
123456789
123456789
MA_NVIEN
2 10.0
3 10.0
333445555
333445555
10 10.0 333445555
20 20.0
10 35.0
888665555
987987987
30 5.0 987987987
30 20.0 987654321
20 15.0 987654321
1 20.0 453453453
2 20.0 453453453
Ví dụ 16
Cho biết những nhân viên tham gia từ 2 đề án
trở lên
68
SODA THOIGIAN
1 32.5
2 7.5
123456789
123456789
MA_NVIEN
2 10.0
3 10.0
333445555
333445555
10 10.0 333445555
20 20.0
10 35.0
888665555
987987987
30 5.0 987987987
30 20.0 987654321
20 15.0 987654321
1 20.0 453453453
2 20.0 453453453
bị loại ra
Điều kiện trên nhóm
Cú pháp
69
SELECT
FROM
WHERE
GROUP BY
HAVING
Chú ý : Nếu 1 câu Select có đầy đủ các thành phần trên thì phải theo
thứ tự này nếu không câu truy vấn sẽ báo lỗi.
Nhận xét
Mệnh đề GROUP BY
Các thuộc tính trong mệnh đề SELECT (trừ những
thuộc tính trong các hàm kết hợp) phải xuất hiện
trong mệnh đề GROUP BY
Mệnh đề HAVING
Sử dụng các hàm kết hợp trong mệnh đề SELECT để
kiểm tra một số điều kiện nào đó
Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện
lọc trên từng bộ
Sau khi gom nhóm điều kiện trên nhóm mới được
thực hiện
70
Nhận xét (tt)
Thứ tự thực hiện câu truy vấn có mệnh đề
GROUP BY và HAVING
(1) Chọn ra những dòng thỏa điều kiện trong mệnh đề
WHERE
(2) Những dòng này sẽ được gom thành nhiều nhóm
tương ứng với mệnh đề GROUP BY
(3) Áp dụng các hàm kết hợp cho mỗi nhóm
(4) Bỏ qua những nhóm không thỏa điều kiện trong
mệnh đề HAVING
(5) Rút trích các giá trị của các cột và hàm kết hợp
trong mệnh đề SELECT
71
Một số dạng truy vấn khác
Truy vấn con ở mệnh đề FROM
Điều kiện kết ở mệnh đề FROM
Phép kết tự nhiên
Phép kết ngoàI
Cấu trúc CASE
72
Truy vấn con ở mệnh đề FROM
Kết quả trả về của một câu truy vấn phụ là
một bảng
Bảng trung gian trong quá trình truy vấn
Không có lưu trữ thật sự
Cú pháp
73
SELECT
FROM R1, R2, () AS tên_bảng
WHERE
Điều kiện kết ở mệnh đề FROM
Kết bằng
Kết ngoài
74
SELECT
FROM R1 [INNER] JOIN R2 ON
WHERE
SELECT
FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON
WHERE
Cấu trúc CASE
Cho phép kiểm tra điều kiện và xuất thông tin
theo từng trường hợp
Cú pháp
75
CASE
WHEN THEN
WHEN THEN
…
[ELSE ]
END
Kết luận
76
SELECT
FROM
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY ]
Nội dung
Giới thiệu
Định nghĩa dữ liệu
Truy vấn dữ liệu
Cập nhật dữ liệu
insert
delete
update
Khung nhìn (view)
Chỉ mục (index)
Lệnh INSERT
Dùng để thêm 1 hay nhiều dòng vào bảng
Để thêm dữ liệu
Tên quan hệ
Danh sách các thuộc tính cần thêm dữ liệu
Danh sách các giá trị tương ứng
78
Lệnh INSERT (tt)
Cú pháp (thêm 1 dòng)
79
INSERT INTO ()
VALUES ()
Ví dụ
80
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’)
INSERT INTO NHANVIEN
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’, 4)
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)
Lệnh INSERT (tt)
Nhận xét
Thứ tự các giá trị phải trùng với thứ tự các cột
Có thể thêm giá trị NULL ở những thuộc tính
không là khóa chính và NOT NULL
Câu lệnh INSERT sẽ gặp lỗi nếu vi phạm RBTV
• Khóa chính
• Tham chiếu
• NOT NULL - các thuộc tính có ràng buộc NOT NULL bắt
buộc phải có giá trị
81
Lệnh INSERT (tt)
Cú pháp (thêm nhiều dòng)
82
I