You are on page 1of 70

T ru y vấn d ữ liệu

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 >

- <danh sách các cộ t>


Tên các cộ t cầ n đ ư ợ c h iể n th ịtrong kế t q u ả truy vấ n
- <danh sách các b ả n g >
Tên các b ả n g liên quan đ ế n câu truy vấ n
- < đ iề u kiệ n >
B iể u th ứ c boolean xác đ ịn h dòng nào sẽ đ ư ợ c rút trích
N ố icác b iể u th ứ c: AND, OR, và NOT
Phép toán:  ,  ,  ,  ,  , , LIKE và BETWEEN

2
V ídụ

Lấy tất cả các cộ t củ a


q u an h ệ kết q u ả
SELECT *
FROM NHANVIEN
WHERE PHG=5

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

SELECT MANV, HONV, TENLOT, TENNV


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘N am ’

MANV HONV TENLOT TENNV

333445555 Nguyen Thanh Tung

987987987 Nguyen Manh Hung

4
M ện h đ ề S E LE C T (tt)

Tên bí danh

SELECT MANV, HONV AS HO, TENLOT AS ‘T E N LO T ’, TENNV AS TEN


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘N am ’

MANV HO TEN LOT TEN

333445555 Nguyen Thanh Tung


987987987 Nguyen Manh Hung

5
M ện h đ ề S E LE C T (tt)

M ở rộ n g

SELECT MANV, HONV + ‘ ’+ TENLOT + ‘ ’+ TENNV AS ‘H O T E N ’


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘N am ’

MANV HO TEN

333445555 Nguyen Thanh Tung

987987987 Nguyen Manh Hung

6
M ện h đ ề S E LE C T (tt)

M ở rộ n g

SELECT MANV, LUONG*1.1 AS ‘LU O N G 10% ’


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘N am ’

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

SELECT LUONG SELECT DISTINCT LUONG


FROM NHANVIEN FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘N am ’ WHERE PHG=5 AND PHAI=‘N am ’

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ý

SELECT MANV, TENNV


FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘N g h ien cu u ’ AND PHG=MAPHG

TRUE TRUE
Đ ộ ư u tiên

SELECT MANV, TENNV


FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=‘N g h ien cu u ’OR TENPHG=‘Q u an ly’) AND PHG=MAPHG

10
M ện h đ ề W H E R E (tt)

BETWEEN SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000

NOT BETWEEN

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000

11
M ện h đ ề W H E R E (tt)

LIKE

SELECT MANV, TENNV


FROM NHANVIEN
WHERE DCHI LIKE ‘N g u yen _ _ _ _’

SELECT MANV, TENNV K ý tự b ất kỳ


FROM NHANVIEN
WHERE DCHI LIKE ‘N g u yen % ’

C h u ỗ i b ất kỳ

12
M ện h đ ề W H E R E (tt)

NOT LIKE

SELECT MANV, TENNV


FROM NHANVIEN
WHERE HONV LIKE ‘N g u yen ’

SELECT MANV, TENNV


FROM NHANVIEN
WHERE HONV NOT LIKE ‘N g u yen ’

13
M ện h đ ề W H E R E (tt)

ESCAPE SELECT MANV, TENNV


FROM NHANVIEN
WHERE DCHI LIKE ‘% N g u yen s_% ’ ESCAPE ‘s’

‘N g u yen _’
N g ày g iờ

SELECT MANV, TENNV


FROM NHANVIEN
WHERE NGSINH BETWEEN ‘19 55 -12-0 8’AND ‘1 96 6 -07-1 9’

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

SELECT MANV, TENNV SELECT MANV, TENNV


FROM NHANVIEN FROM NHANVIEN
WHERE MA_NQL IS NULL WHERE MA_NQL IS NOT 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

FROM NHANVIEN, PHONGBAN 333445555 5


987987987 1
987987987 4
WHERE TRUE 987987987 5
… …
16
M ện h đ ề FR O M (tt)

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

SELECT TENNV, NGSINH, TENTN, NGSINH


FROM NHANVIEN, THANNHAN
WHERE MANV=MA_NVIEN

SELECT TENNV, NV.NGSINH, TENTN, TN.NGSINH


FROM NHANVIEN NV, THANNHAN TN
WHERE MANV=MA_NVIEN
17
V ídụ
 V ớ i n h ữ n g đ ề án ở „H a N o i‟, cho b iế t mã đ ề án, mã phòng
ban ch ủ trì đ ề án, h ọ tên trư ở n g phòng cùng vớ i ngày sinh
và đ ịa ch ỉcủ a n g ư ờ iấ y
 Tìm h ọ tên củ a nhân viên phòng số 5 có tham gia vào đ ề
án “S ả n p h ẩ m X ” vớ isố g iờ làm việ c trên 10 g iờ .
 Tìm h ọ tên củ a từ n g nhân viên và n g ư ờ ip h ụ trách trự c tiế p
nhân viên đ ó .
 Tìm h ọ tên củ a n h ữ n g nhân viên đ ư ợ c “N g u ye n Thanh
T u n g ” p h ụ trách trự c tiế p

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 >

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 >


INTERSECT [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 >

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 >


EXCEPT [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

SELECT MANV, TENNV


FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘N g h ien cu u ’AND PHG=MAPHG

SELECT < d an h sách các cột>


C âu tru y vấn ch a
(Outer query) FROM < d an h sách các b ản g >
WHERE < so sán h tập h ợ p > (
SELECT < d an h sách các cột>
C âu tru y vấn con
FROM < d an h sách các b ản g > (Subquery)
WHERE < đ iều kiện > )

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 MANV, TENNV


FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=‘T P H C M ’AND PHG=MAPHG

SELECT MANV, TENNV


SELECT MANV, TENNV
FROM NHANVIEN
FROM NHANVIEN
WHERE PHG IN (1,5)
WHERE PHG IN (

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

SELECT MANV, TENNV


FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM 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 RS 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

 RS 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

- 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 q u ả : KQ(MA_NVIEN)
- K ế t KQ vớ iNHANVIEN đ ể lấ y ra TENNV
 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

 Các hàm kế t h ợ p đ ư ợ c đ ặ t ở m ệ n h đ ề SELECT

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

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 om n h óm >

 Sau khi gom nhóm


- M ỗ inhóm các b ộ sẽ có cùng giá trịtạ icác th u ộ c tính gom nhóm

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 >

 Cho b iế t n h ữ n g nhân viên tham gia từ 2 đ ề án trở lên


 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

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

SELECT < d an h sách các cột>


FROM R1, R2, (< tru y vấn con > ) AS tên _ b ản g
WHERE < đ iều kiện >

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

SELECT < d an h sách các cột>


FROM R1 [INNER] JOIN R2 ON < b iểu th ứ c>
WHERE < đ iều kiện >

 K ế t ngoài

SELECT < d an h sách các cột>


FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON < b iểu th ứ c>
WHERE < đ iều kiện >

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

CASE < tên cộ t>


WHEN < g iá trị> THEN < b iểu th ứ c>
WHEN < g iá trị> THEN < b iểu th ứ c>

[ELSE < b iểu th ứ c> ]
END

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

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 < các th u ộc tín h g om n h ó m > ]
[HAVING < đ iều kiện trên n h óm > ]
[ORDER BY < các th u ộc tín h sắp th ứ tự > ]

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

 Cú pháp (thêm 1 dòng)

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 ’)

INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI)


VALUES (‘Le’, ‘V an ’, ‘T u yen ’, ‘63 56 35 635 ’, NULL)

INSERT INTO NHANVIEN


VALUES (‘Le’, ‘V an ’, ‘T u yen ’, ‘63 56 35 635 ’, ’12/30 /1 952 ’, ’98 H V ’, ‘N am ’, ‘37 00 0’, 4)

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

- Có th ể thêm giá trị NULL ở n h ữ n g th u ộ c tính không là khóa


chính và NOT NULL

- Câu lệ n h INSERT sẽ g ặ p lỗ in ế u vi p h ạ m RBTV


Khóa chính
Tham ch iế u
NOT NULL - các th u ộ c tính có ràng b u ộ c NOT NULL b ắ t b u ộ c p h ả i có
giá trị

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)

INSERT INTO THONGKE_PB(TENPHG, SL_NV, LUONG_TC)


SELECT TENPHG, COUNT(MANV), SUM(LUONG)
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG
GROUP BY TENPHG

55
Lện h D E LE T E
 Dùng đ ể xóa các dòng củ a b ả n g

DELETE FROM < tên b ản g >


 Cú pháp
[WHERE < đ iều kiện > ]

 Ví d ụ DELETE FROM NHANVIEN


WHERE HONV=‘T ran ’

DELETE FROM NHANVIEN


WHERE MANV=‘3 4 5 3 4 5 3 4 5 ’

DELETE FROM NHANVIEN

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

- N ế u không ch ỉ đ ịn h đ iề u kiệ n ở m ệ n h đ ề WHERE, tấ t cả các


dòng trong b ả n g sẽ b ịxóa

- L ệ n h DELETE có th ể gây ra vi p h ạ m RB tham ch iế u


Không cho xóa
Xóa luôn n h ữ n g dòng có giá trịđ a n g tham ch iế u đ ế n
* CASCADE
Đ ặ t NULL cho n h ữ n g giá trịtham ch iế u

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

MA_NVIEN SODA THOIGIAN

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)

TENPHG MAPHG MA_NVIEN NG_NHANCHUC

Nghien cuu 5 333445555 05/22/1988


Dieu hanh 4 987987987 01/01/1995
Quan ly 1 888665555 06/19/1981

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

UPDATE < tên b ản g >


SET < tên th u ộc tín h > = < g iá trị m ớ i> ,
< tên th u ộc tín h > = < g iá trị m ớ i> ,

[WHERE < đ iều kiện > ]

60
V ídụ
UPDATE NHANVIEN
SET NGSINH=’08 /1 2/1 96 5’
WHERE MANV=‘3 33 44 55 55’

 V ớ i đ ề án có mã số 10, hãy thay đ ổ i n ơ i th ự c h iệ n đ ề án


thành „V u n g T a u ‟và phòng ban p h ụ trách là phòng 5

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

- N ế u không ch ỉ đ ịn h đ iề u kiệ n ở m ệ n h đ ề WHERE, tấ t cả các


dòng trong b ả n g sẽ b ịcậ p n h ậ t

- L ệ n h UPDATE có th ể gây ra vi p h ạ m RB tham ch iế u


Không cho sử a
S ử a luôn n h ữ n g dòng có giá trịđ a n g tham ch iế u đ ế n
* CASCADE

62
Khung nhìn
 B ả n g là m ộ t quan h ệ đ ư ợ c tổ ch ứ c lư u trữ vậ t lý trong
CSDL

 Khung nhìn cũ n g là m ộ t quan h ệ


- Không đ ư ợ c lư u trữ vậ t lý (b ả n g ả o )
- Không ch ứ a d ữ liệ u
- Đ ư ợ c đ ịn h n g h ĩa từ n h ữ n g b ả n g khác
- Có th ể truy vấ n hay cậ p n h ậ t thông qua khung nhìn

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 >

DROP VIEW <tên khung nhì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

CREATE VIEW TONGLNG_SLNV_PB AS


SELECT MAPHG, TENPB, COUNT(*) AS SLNV,
SUM(LUONG) AS TONGLNG
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG
GROUP BY TENPHG

66
T ru y vấn trên k h u n g n h ìn

 Tuy không ch ứ a d ữ liệ u n h ư n g có th ể th ự c h iệ n các câu


truy vấ n trên khung nhìn
SELECT TENNV
FROM NV_P5
WHERE HONV LIKE ‘N g u yen ’

 Có th ể viế t câu truy vấ n d ữ liệ u từ khung nhìn và b ả n g

SELECT HONV, TENVN, TENDA, THOIGIAN


FROM NV_P5, PHANCONG, DEAN
WHERE MANV=MA_NVIEN AND SODA=MADA

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

You might also like