Professional Documents
Culture Documents
T ru y vấn cơ b ản
G ồm 3 m ệnh đề
SELECT < d an h sách các cột>
FROM < d an h sách các b ản g >
WHERE < đ iều kiện >
2
V ídụ
MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG
333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 5
987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 5
3
M ện h đ ề S E LE C T
4
M ện h đ ề S E LE C T (tt)
Tên bí danh
5
M ện h đ ề S E LE C T (tt)
M ở rộ n g
MANV HO TEN
6
M ện h đ ề S E LE C T (tt)
M ở rộ n g
MANV LUONG10%
333445555 33000
987987987 27500
7
M ện h đ ề S E LE C T (tt)
Lo ại b ỏ các d ò n g trù n g n h au
LUONG LUONG
30000 30000 - T ốn ch i p h í
25000 25000 - N g ư ờ i d ù n g m u ốn th ấy
25000 38000
38000
8
V ídụ
Cho b iế t MANV và TENNV làm việ c ở phòng „N g h ie n cu u ‟
9
M ện h đ ề W H E R E
B iểu th ứ c lu ận lý
TRUE TRUE
Đ ộ ư u tiên
10
M ện h đ ề W H E R E (tt)
NOT BETWEEN
11
M ện h đ ề W H E R E (tt)
LIKE
C h u ỗ i b ất kỳ
12
M ện h đ ề W H E R E (tt)
NOT LIKE
13
M ện h đ ề W H E R E (tt)
‘N g u yen _’
N g ày g iờ
14
M ện h đ ề W H E R E (tt)
NULL
- S ử d ụ n g trong trư ờ n g h ợ p
Không b iế t (value unknown)
Không th ể áp d ụ n g (value inapplicable)
Không tồ n tạ i(value withheld)
- N h ữ n g b iể u th ứ c tính toán có liên quan đ ế n giá trị NULL sẽ cho
ra kế t q u ả là NULL
x có giá trịlà NULL
x + 3 cho ra kế t q u ả là NULL
x + 3 là m ộ t b iể u th ứ c không h ợ p lệ trong SQL
- N h ữ n g b iể u th ứ c so sánh có liên quan đ ế n giá trịNULL sẽ cho ra
kế t q u ả là UNKNOWN
x = 3 cho ra kế t q u ả là UNKNOWN
x = 3 là m ộ t so sánh không h ợ p lệ trong SQL
15
M ện h đ ề W H E R E (tt)
NULL
MANV MAPHG
K h ô n g sử d ụ n g m ện h đ ề W H E R E
333445555 1
SELECT MANV, MAPHG 333445555 4
Tên bí danh
SELECT TENPHG, DIADIEM
SELECT TENPHG, DIADIEM FROM PHONGBAN AS PB,
FROM PHONGBAN, DDIEM_PHG DDIEM_PHG AS DD
WHERE MAPHG=MAPHG WHERE PB.MAPHG=DD.MAPHG0
18
M ện h đ ề O R D E R B Y
Dùng đ ể h iể n th ị kế t q u ả câu truy vấ n theo m ộ t th ứ tự nào
đó
Cú pháp
SELECT < d an h sách các cột>
FROM < d an h sách các b ản g >
WHERE < đ iều kiện >
ORDER BY < d an h sách các cột>
- ASC: tă n g (m ặ c đ ịn h )
- DESC: g iả m
19
M ện h đ ề O R D E R B Y (tt)
Ví d ụ
MA_NVIEN SODA
SELECT MA_NVIEN, SODA
999887777 10
FROM PHANCONG
999887777 30
ORDER BY MA_NVIEN DESC, SODA
987987987 10
987987987 30
987654321 10
987654321 20
987654321 30
20
P h ép to án tậ p h ợ p tro n g S Q L
SQL có cài đ ặ t các phép toán
- H ộ i(UNION)
- Giao (INTERSECT)
- T rừ (EXCEPT)
K ế t q u ả trả về là tậ p h ợ p
- L o ạ ib ỏ các b ộ trùng nhau
- Đ ể g iữ lạ icác b ộ trùng nhau
UNION ALL
INTERSECT ALL
EXCEPT ALL
21
P h ép to án tậ p h ợ p tro n g S Q L (tt)
Cú pháp
S E LE C T < d s cột> FR O M < d s b ản g > W H E R E < đ iều kiện >
UNION [ALL]
S E LE C T < d s cột> FR O M < d s b ản g > W H E R E < đ iều kiện >
22
V ídụ
Cho b iế t các mã đ ề án có
- Nhân viên vớ ih ọ là „N g u ye n ‟tham gia h o ặ c,
- T rư ở n g phòng ch ủ trì đ ề án đ ó vớ ih ọ là „N g u ye n ‟
Tìm nhân viên có n g ư ờ ithân cùng tên và cùng g iớ itính.
Tìm n h ữ n g nhân viên không có thân nhân nào
23
T ru y vấn lồ n g
24
T ru y vấn lồ n g (tt)
Các câu lệ n h SELECT có th ể lồ n g nhau ở n h iề u m ứ c
Câu truy vấ n con th ư ờ n g trả về m ộ t tậ p các giá trị
Các câu truy vấ n con trong cùng m ộ t m ệ n h đ ề WHERE
đ ư ợ c kế t h ợ p b ằ n g phép n ố ilogic
M ệ n h đ ề WHERE củ a câu truy vấ n cha
- < b iể u th ứ c> <so sánh tậ p h ợ p > <truy vấ n con>
- So sánh tậ p h ợ p th ư ờ n g đ icùng vớ im ộ t số toán tử
IN, NOT IN
ALL
ANY h o ặ c SOME
- K iể m tra sự tồ n tạ i
EXISTS
NOT EXISTS
25
T ru y vấn lồ n g (tt)
Có 2 lo ạ itruy vấ n lồ n g
- L ồ n g phân cấ p
M ệ n h đ ề WHERE củ a truy vấ n con không tham ch iế u đ ế n th u ộ c tính
củ a các quan h ệ trong m ệ n h đ ề FROM ở truy vấ n cha
Khi th ự c h iệ n , câu truy vấ n con sẽ đ ư ợ c th ự c h iệ n trư ớ c
- L ồ n g tư ơ n g quan
M ệ n h đ ề WHERE củ a truy vấ n con tham ch iế u ít n h ấ t m ộ t th u ộ c tính
củ a các quan h ệ trong m ệ n h đ ề FROM ở truy vấ n cha
Khi th ự c h iệ n , câu truy vấ n con sẽ đ ư ợ c th ự c h iệ n n h iề u lầ n , m ỗ i lầ n
tư ơ n g ứ n g vớ im ộ t b ộ củ a truy vấ n cha
26
V í d ụ - Lồ n g p h ân cấp
SELECT MAPHG
FROM DIADIEM_PHG
WHERE DIADIEM=‘T P H C M ’ )
27
V ídụ
Tìm n h ữ n g nhân viên không có thân nhân nào
Tìm n h ữ n g nhân viên có lư ơ n g lớ n h ơ n lư ơ n g củ a ít n h ấ t
m ộ t nhân viên phòng 4
Tìm n h ữ n g nhân viên có lư ơ n g lớ n h ơ n lư ơ n g củ a tấ t cả
nhân viên phòng 4
Tìm n h ữ n g trư ở n g phòng có tố ith iể u m ộ t thân nhân
28
V í d ụ - Lồ n g tư ơ n g q u an
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘N g h ien cu u ’AND PHG=MAPHG
29
V ídụ
Tìm nhân viên có n g ư ờ ithân cùng tên và cùng g iớ itính
Tìm n h ữ n g nhân viên không có thân nhân nào
Tìm n h ữ n g nhân viên có lư ơ n g lớ n h ơ n lư ơ n g củ a ít n h ấ t
m ộ t nhân viên phòng 4
Tìm n h ữ n g trư ở n g phòng có tố ith iể u m ộ t thân nhân
30
N h ận xét IN và E X IS T S
IN
- <tên cộ t> IN <câu truy vấ n con>
- T h u ộ c tính ở m ệ n h đ ề SELECT củ a truy vấ n con p h ả i có cùng
kiể u d ữ liệ u vớ ith u ộ c tính ở m ệ n h đ ề WHERE củ a truy vấ n cha
EXISTS
- Không cầ n có th u ộ c tính, h ằ n g số hay b iể u th ứ c nào khác đ ứ n g
trư ớ c
- Không n h ấ t th iế t liệ t kê tên th u ộ c tính ở m ệ n h đ ề SELECT củ a
truy vấ n con
- N h ữ n g câu truy vấ n có = ANY hay IN đ ề u có th ể ch u yể n thành
câu truy vấ n có EXISTS
31
Phép chia trong SQL
R A B C D E S D E RS A B C
a a 1 bi a 1 ai a
a a 1 b 1 a
a b 1
a a 1
a b 3
a a 1
a b 1
a b 1
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ạ itrong R
32
Phép chia trong SQL (tt)
S ử d ụ n g NOT EXISTS đ ể b iể u d iễ n
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 ))
33
V ídụ
Tìm tên các nhân viên đ ư ợ c phân công làm tấ t cả các đ ồ
án
34
H à m k ết h ợ p
COUNT
- COUNT(*) đ ế m số dòng
- COUNT(<tên th u ộ c tính>) đ ế m số giá trị khác NULL củ a th u ộ c
tính
- COUNT(DISTINCT <tên th u ộ c tính>) đ ế m số giá trịkhác nhau và
khác NULL củ a th u ộ c tính
MIN
MAX
SUM
AVG
35
V ídụ
Tìm tổ n g lư ơ n g , lư ơ n g cao n h ấ t, lư ơ n g th ấ p n h ấ t và lư ơ n g
trung bình củ a các nhân viên
Cho b iế t số lư ợ n g nhân viên củ a phòng „N g h ie n cu u ‟
36
V ídụ
Cho b iế t số lư ợ n g nhân viên củ a từ n g phòng ban
PHG SL_NV
5 3
4 3
1 1
MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG
333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 5
987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 5
453453453 Tran Thanh Tam 07/31/1972 543 MTL Q1 Nu 25000 333445555 5
999887777 Bui Ngoc Hang 07/19/1968 33 NTH Q1 Nu 38000 987654321 4
987654321 Le Quynh Nhu 07620/1951 219 TD Q3 Nu 43000 888665555 4
987987987 Tran Hong Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 4
888665555 Pham Van Vinh 11/10/1945 450 TV HN Nam 55000 NULL 1
37
Gom nhóm
Cú pháp
38
V ídụ
Cho b iế t số lư ợ n g nhân viên củ a từ n g phòng ban
V ớ i m ỗ i nhân viên cho b iế t mã số , h ọ tên, số lư ợ n g đ ề án
và tổ n g th ờ igian mà h ọ tham gia
39
Đ iều k iện trên n h ó m
Cú pháp
SELECT < d an h sách các cột>
FROM < d an h sách các b ản g >
WHERE < đ iều kiện >
GROUP BY < d an h sách các cột g o m n h ó m >
HAVING < đ iều kiện trên n h óm >
40
N h ận xét
M ệ n h đ ề GROUP BY
- Các th u ộ c tính trong m ệ n h đ ề SELECT (trừ n h ữ n g th u ộ c tính
trong các hàm kế t h ợ p ) p h ả i xu ấ t h iệ n trong m ệ n h đ ề GROUP
BY
M ệ n h đ ề HAVING
- S ử d ụ n g các hàm kế t h ợ p trong m ệ n h đ ề SELECT đ ể kiể m tra
m ộ t số đ iề u kiệ n nào đ ó
- C h ỉkiể m tra đ iề u kiệ n trên nhóm, không là đ iề u kiệ n lọ c trên từ n g
bộ
- Sau khi gom nhóm đ iề u kiệ n trên nhóm m ớ iđ ư ợ c th ự c h iệ n
41
N h ận xét (tt)
T h ứ tự th ự c h iệ n câu truy vấ n có m ệ n h đ ề GROUP BY và
HAVING
- (1) C h ọ n ra n h ữ n g dòng th ỏ a đ iề u kiệ n trong m ệ n h đ ề WHERE
- (2) N h ữ n g dòng này sẽ đ ư ợ c gom thành n h iề u nhóm tư ơ n g ứ n g
vớ im ệ n h đ ề GROUP BY
- (3) Áp d ụ n g các hàm kế t h ợ p cho m ỗ inhóm
- (4) B ỏ qua n h ữ n g nhóm không th ỏ a đ iề u kiệ n trong m ệ n h đ ề
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 ệ n h
đ ề SELECT
42
V ídụ
Tìm n h ữ n g phòng ban có lư ơ n g trung bình cao n h ấ t
Tìm 3 nhân viên có lư ơ n g cao n h ấ t
Tìm tên các nhân viên đ ư ợ c phân công làm tấ t cả các đ ồ
án
43
M ộ t số d ạn g tru y vấn k h ác
Truy vấ n con ở m ệ n h đ ề FROM
Đ iề u kiệ n kế t ở m ệ n h đ ề FROM
- Phép kế t tự nhiên
- Phép kế t ngoàI
C ấ u trúc CASE
44
T ru y vấn co n ở m ện h đ ề FR O M
K ế t q u ả trả về củ a m ộ t câu truy vấ n p h ụ là m ộ t b ả n g
- B ả n g trung gian trong quá trình truy vấ n
- Không có lư u trữ th ậ t sự
Cú pháp
45
V ídụ
Cho b iế t n h ữ n g phòng ban (TENPHG) có lư ơ n g trung bình
củ a các nhân viên lớ n lơ n 20000
46
Đ iều k iện k ết ở m ện h đ ề FR O M
K ếtbằng
K ế t ngoài
47
V ídụ
Tìm mã và tên các nhân viên làm việ c tạ i phòng „N g h ie n
cu u ‟
Tìm h ọ tên các nhân viên và tên các đ ề án nhân viên tham
gia n ế u có
48
C ấu trú c C A S E
Cho phép kiể m tra đ iề u kiệ n và xu ấ t thông tin theo từ n g
trư ờ n g h ợ p
Cú pháp
49
V ídụ
Cho b iế t h ọ tên các nhân viên đ ã đ ế n tu ổ i về h ư u (nam 60
tu ổ i, n ữ 55 tu ổ i)
Cho b iế t h ọ tên các nhân viên và n ă m về h ư u
50
K ết lu ận
51
Lện h IN S E R T
Dùng đ ể thêm 1 hay n h iề u dòng vào b ả n g
Đ ể thêm d ữ liệ u
- Tên quan h ệ
- Danh sách các th u ộ c tính cầ n thêm d ữ liệ u
- Danh sách các giá trịtư ơ n g ứ n g
INSERT INTO < tên b ản g > (< d an h sách các th u ộc tín h > )
VALUES (< d an h sách các g iá trị> )
52
V ídụ
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)
VALUES (‘Le’, ‘V an ’, ‘T u yen ’, ‘63 56 35 635 ’)
53
Lện h IN S E R T (tt)
N h ậ n xét
- T h ứ tự các giá trịp h ả itrùng vớ ith ứ tự các cộ t
54
Lện h IN S E R T (tt)
Cú pháp (thêm n h iề u dòng)
INSERT INTO < tên b ản g > (< d an h sách các th u ộc tín h > )
< câu tru y vấn co n >
V ídụ
CREATE TABLE THONGKE_PB ( TENPHG VARCHAR(20),
SL_NV INT, LUONG_TC INT)
55
Lện h D E LE T E
Dùng đ ể xóa các dòng củ a b ả n g
56
Lện h D E LE T E (tt)
N h ậ n xét
- S ố lư ợ n g số dòng b ị xóa p h ụ th u ộ c vào đ iề u kiệ n ở m ệ n h đ ề
WHERE
57
Lện h D E LE T E (tt)
MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG
333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 5
987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 5
453453453 Tran Thanh Tam 07/31/1972 543 MTL Q1 Nu 25000 333445555 5
999887777 Bui Ngoc Hang 07/19/1968 33 NTH Q1 Nu 38000 987654321 4
987654321 Le Quynh Nhu 07620/1951 219 TD Q3 Nu 43000 888665555 4
987987987 Tran Hong Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 4
888665555 Pham Van Vinh 11/10/1945 450 TV HN Nam 55000 NULL 1
333445555 10 10.0
888665555 20 20.0
987987987 10 35.0
987987987 30 5.0
987654321 30 20.0
453453453 1 20.0
58
Lện h D E LE T E (tt)
MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG
333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 NULL
5
987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 NULL
5
453453453 Tran Thanh Tam 07/31/1972 543 MTL Q1 Nu 25000 333445555 NULL
5
999887777 Bui Ngoc Hang 07/19/1968 33 NTH Q1 Nu 38000 987654321 4
987654321 Le Quynh Nhu 07620/1951 219 TD Q3 Nu 43000 888665555 4
987987987 Tran Hong Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 4
888665555 Pham Van Vinh 11/10/1945 450 TV HN Nam 55000 NULL 1
59
Lện h U P D A T E
Dùng đ ể thay đ ổ i giá trị củ a th u ộ c tính cho các dòng củ a
bảng
Cú pháp
60
V ídụ
UPDATE NHANVIEN
SET NGSINH=’08 /1 2/1 96 5’
WHERE MANV=‘3 33 44 55 55’
UPDATE DEAN
SET DIADIEM_DA=’V u n g T au ’, PHONG=5
WHERE MADA=10
61
Lện h U P D A T E
N h ậ n xét
- N h ữ n g dòng th ỏ a đ iề u kiệ n tạ i m ệ n h đ ề WHERE sẽ đ ư ợ c cậ p
n h ậ t giá trịm ớ i
62
Khung nhìn
B ả n g là m ộ t quan h ệ đ ư ợ c tổ ch ứ c lư u trữ vậ t lý trong
CSDL
63
Khung nhìn (tt)
T ạ isao p h ả isử d ụ n g khung nhìn?
- Che d ấ u tính p h ứ c tạ p củ a d ữ liệ u
- Đ ơ n g iả n hóa các câu truy vấ n
- H iể n th ịd ữ liệ u d ư ớ id ạ n g tiệ n d ụ n g n h ấ t
- An toàn d ữ liệ u
64
Đ ịn h n g h ĩa k h u n g n h ìn
Cú pháp
CREATE VIEW <tên khung nhìn> AS
< câu tru y vấn >
B ả n g ả o này có
- Danh sách th u ộ c tính trùng vớ i các th u ộ c tính trong m ệ n h đ ề
SELECT
- S ố dòng p h ụ th u ộ c vào đ iề u kiệ n ở m ệ n h đ ề WHERE
- D ữ liệ u đ ư ợ c lấ y từ các b ả n g ở m ệ n h đ ề FROM
65
V ídụ
CREATE VIEW NV_P5 AS
SELECT MANV, HONV, TENLOT, TENVN
FROM NHANVIEN
WHERE PHG=5
66
T ru y vấn trên k h u n g n h ìn
67
C ập n h ật trên k h u n g n h ìn
Có th ể dùng các câu lệ n h INSERT, DELETE và UPDATE
cho các khung nhìn đ ơ n g iả n
- Khung nhìn đ ư ợ c xây d ự n g trên 1 b ả n g và có khóa chính củ a
bảng
Không th ể cậ p n h ậ t d ữ liệ u n ế u
- Khung nhìn có dùng từ khóa DISTINCT
- Khung nhìn có sử d ụ n g các hàm kế t h ợ p
- Khung nhìn có m ệ n h đ ề SELECT m ở rộ n g
- Khung nhìn đ ư ợ c xây d ự n g từ b ả n g có RB trên cộ t
- Khung nhìn đ ư ợ c xây d ự n g từ n h iề u b ả n g
68
C ập n h ật trên k h u n g n h ìn (tt)
S ử a lạ i h ọ cho nhân viên mã „123456789‟ ở phòng 5 là
„P h a m ‟
UPDATE NV_P5
SET H O N V = ‘P h am ’
WHERE MANV= ‘1 2345678 9’
69
70