Professional Documents
Culture Documents
Ch02-Ngon Ngu Truy Van SQL
Ch02-Ngon Ngu Truy Van SQL
Gii thiu
nh ngha d liu
Cp nht d liu
Truy vn d liu
Mt s hm thng dng
Gii thiu
SQL (Structured Query Language)
- Ngn ng cp cao
- Ngi s dng ch cn a ra ni dung cn truy vn
- c pht trin bi IBM (1970s), c gi l SEQUEL
(Structured English Query Language)
- c ANSI cng nhn v pht trin thnh chun
SQL-86
SQL-92
SQL-99
Truy vn d liu
Cp nht d liu
Mt s hm thng dng
nh ngha d liu
L ngn ng m t
-
Lc cho mi quan h
Min gi tr tng ng ca tng thuc tnh
Rng buc ton vn
Ch mc trn mi quan h
Gm
-
Kiu d liu
S
-
SMALLINT
INT
NUMERIC
DECIMAL
REAL
FLOAT
.
Chui bit
- BIT
- BITINT
-
Ngy gi
- DATETIME
- SMALLDATETIME
8
Lnh to bng
nh ngha mt bng
- Tn bng
- Cc thuc tnh
Tn thuc tnh
Kiu d liu
Cc RBTV trn thuc tnh
C php
CREATE TABLE <Tn_bng> (
<Tn_ct> <Kiu_d_liu> [<RBTV>],
<Tn_ct> <Kiu_d_liu> [<RBTV>],
[<RBTV>]
)
V d - To bng
CREATE TABLE NHANVIEN (
HONV NVARCHAR (20),
TENLOT NVARCHAR (50),
TENNV NVARCHAR (20),
MANV NVARCHAR (20),
NGSINH SMALLDATETIME,
DCHI NVARCHAR (50),
PHAI NVARCHAR (10),
LUONG INT,
MA_NQL NVARCHAR (20),
PHG INT
)
10
NOT NULL
UNIQUE
DEFAULT
PRIMARY KEY
FOREIGN KEY / REFERENCES
CHECK
t tn cho RBTV
CONSTRAINT <Ten_RBTV> <RBTV>
11
V d - To bng c RBTV
CREATE TABLE NHANVIEN (
HONV NVARCHAR (20) NOT NULL,
TENLOT NVARCHAR (50) NOT NULL,
TENNV NVARCHAR (20) NOT NULL,
MANV NVARCHAR (20) PRIMARY KEY,
NGSINH SMALLDATETIME,
DCHI NVARCHAR(50),
PHAI NVARCHAR(10) CHECK (PHAI IN (Nam, Nu)),
LUONG INT DEFAULT (1000000),
MA_NQL NVARCHAR(20),
PHG INT
)
12
13
V d - t tn cho RBTV
CREATE TABLE NHANVIEN (
HONV NVARCHAR(20) CONSTRAINT NV_HONV_NN NOT NULL,
TENLOT NVARCHAR(50) NOT NULL,
TENNV NVARCHAR(20) NOT NULL,
MANV NVARCHAR(20) CONSTRAINT NV_MANV_PK PRIMARY KEY,
NGSINH SMALLDATETIME,
DCHI NVARCHAR(50),
PHAI NVARCHAR(10) CONSTRAINT NV_PHAI_CHK
CHECK (PHAI IN (Nam, Nu)),
LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000),
MA_NQL NVARCHAR(20),
PHG INT
)
15
16
Lnh sa bng
Dng : thay i cu trc bng, thay i RBTV
Thm ct
ALTER TABLE <Tn_bng> ADD <Tn_ct> <Kiu_d_liu> [<RBTV>]
- V d
ALTER TABLE NHANVIEN ADD NGHENGHIEP NVARCHAR(50)
Xa ct
ALTER TABLE <Tn_bng> DROP COLUMN <Tn_ct>
- V d
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
17
- V d
ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP NVARCHAR(70)
18
- V d
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)
19
- V d
SP_HELPCONSTRAINT PHONGBAN
Xa RBTV
ALTER TABLE <Tn_bng> DROP <Tn_RBTV>
- V d
ALTER TABLE PHONGBAN DROP PB_MAPHG_PK
ALTER TABLE PHONGBAN DROP PB_TRPHG
ALTER TABLE PHONGBAN DROP PB_NGNHANCHUC_DF
ALTER TABLE PHONGBAN DROP PB_TENPB_UNI
20
Lnh xa bng
c dng xa cu trc bng
- Tt c d liu ca bng cng b xa
C php
DROP TABLE <Tn_bng>
V d
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
DROP TABLE PHANCONG
21
NHANVIEN
HONV
TENLOT
TENNV
MANV
NGSINH
DCHI
PHAI
LUONG
MA_NQL
PHG
PHONGBAN
TENPHG
MAPHG
TRPHG
NG_NHANCHUC
22
- V d
CREATE TYPE Kieu_Ten FROM NVARCHAR(30)
- V d
DROP TYPE Kieu_Ten
23
- G b Default khi ct
sp_unbindefault <Tn_bng.Tn_ct>
- V d
CREATE DEFAULT NV_LUONG_DF AS 10000
sp_bindefault NV_LUONG_DF, NHANVIEN.LUONG
sp_unbindefault NHANVIEN.LUONG
24
- G b Rule khi ct
sp_unbindrule <Tn_bng.Tn_ct>
- V d
CREATE RULE R_LUONG AS @LUONG>=10000
sp_bindrule R_LUONG , NHANVIEN.LUONG
sp_unbindrule NHANVIEN.LUONG
- Xa Defaule, Rule
DROP DEFAULT <Tn_Default>
Truy vn d liu
Mt s hm thng dng
26
Lnh INSERT
Dng thm 1 hay nhiu dng vo bng
thm d liu
- Tn bng
- Danh sch cc thuc tnh cn thm d liu
- Danh sch cc gi tr tng ng
27
V d
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)
VALUES (NNguyn, NTrng, NHa, 123)
28
29
30
V d
CREATE TABLE THONGKE_PB (
TENPHG NVARCHAR(20),
SL_NV INT,
LUONG_TC INT
)
31
Lnh DELETE
Dng xa cc dng ca bng
C php
DELETE FROM <tn bng>
[WHERE <iu kin>]
32
V d
DELETE FROM NHANVIEN
WHERE HONV=Tran
33
34
HONV
TENLOT
TENNV
NGSINH
DCHI
PHAI
LUONG
MA_NQL
PHG
333445555 Nguyen
Thanh
Tung
12/08/1955
638 NVC Q5
Nam
40000
888665555
987987987 Nguyen
Manh
Hung
09/15/1962
Ba Ria VT
Nam
38000
333445555
453453453
Tran
Thanh
Tam
07/31/1972
543 MTL Q1
Nu
25000
333445555
999887777
Bui
Ngoc
Hang
07/19/1968
33 NTH Q1
Nu
38000
987654321
987654321
Le
Quynh
Nhu
07620/1951
219 TD Q3
Nu
43000
888665555
987987987
Tran
Hong
Quang
04/08/1969
980 LHP Q5
Nam
25000
987654321
888665555
Pham
Van
Vinh
11/10/1945
450 TV HN
Nam
55000
NULL
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
20.0
35
MANV
MAPHG
MA_NVIEN
NG_NHANCHUC
Nghien cuu
333445555
05/22/1988
Dieu hanh
987987987
01/01/1995
Quan ly
888665555
06/19/1981
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
987654321
Le
Quynh
Nhu
07620/1951
219 TD Q3
Nu
43000
888665555
987987987
Tran
Hong
Quang
04/08/1969
980 LHP Q5
Nam
25000
987654321
888665555
Pham
Van
Vinh
11/10/1945
450 TV HN
Nam
55000
NULL
1
36
Lnh UPDATE
Dng thay i gi tr ca thuc tnh cho cc dng
ca bng
C php
UPDATE <tn bng>
SET <tn thuc tnh>=<gi tr mi>,
<tn thuc tnh>=<gi tr mi>,
37
V d
UPDATE NHANVIEN
SET NGSINH=08/12/1965
WHERE MANV=333445555
UPDATE NHANVIEN
SET LUONG=LUONG*1.1
38
V d
Vi n c m s 10, hy thay i ni thc hin
n thnh Vung Tau v phng ban ph trch l
phng 5
UPDATE DEAN
SET DIADIEM_DA=Vung Tau, PHONG=5
WHERE MADA=10
39
Lnh UPDATE
Nhn xt
- Nhng dng tha iu kin ti mnh WHERE s
c cp nht gi tr mi
- Nu khng ch nh iu kin mnh WHERE, tt c
cc dng trong bng s b cp nht
- Lnh UPDATE c th gy ra vi phm RB tham chiu
Khng cho sa
Sa lun nhng dng c gi tr ang tham chiu n
CASCADE
40
Gii thiu
nh ngha d liu
Cp nht d liu
Truy vn d liu
-
Truy vn c bn
Tp hp, so snh tp hp v truy vn lng
Hm kt hp v gom nhm
Mt s kiu truy vn khc
Mt s hm thng dng
41
Truy vn d liu
L ngn ng rt trch d liu tha mt s iu kin
no
Da trn
Php ton SQH
Mt s b sung
42
Truy vn c bn
Gm 3 mnh
- <iu kin>
Php ton: +, -, *, /, %
Php so snh: =, <, <=, > , >= , <>, !=
Php ton logic: and, or, not
Php ton tp hp: all, any, in, like, between, exists
43
V d
Ly tt c cc ct ca
quan h kt qu
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
987987987 Nguyen
Manh
Hung
09/15/1962
Ba Ria VT
Nam
38000
333445555
44
Mnh SELECT
MANV
HONV
TENLOT
TENNV
333445555
Nguyen
Thanh
Tung
987987987
Nguyen
Manh
Hung
45
MANV
HO
TEN LOT
TEN
333445555
Nguyen
Thanh
Tung
987987987
Nguyen
Manh
Hung
46
MANV
HO TEN
333445555
987987987
47
MANV
LUONG10%
333445555
33000
987987987
27500
48
SELECT LUONG
DISTINCT LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=Nam
LUONG
30000
25000
25000
38000
38000
49
Mnh WHERE
TRUE
TRUE
50
51
52
53
K t bt k
FROM NHANVIEN
WHERE DCHI LIKE Nguyen %
Chui bt k
54
55
56
57
Mnh FROM
Khng s dng mnh WHERE
MAPHG
333445555
333445555
333445555
987987987
987987987
987987987
58
59
Mnh ORDER BY
Dng hin th kt qu cu truy vn theo mt th
t no
C php
SELECT <danh sch cc ct>
FROM <danh sch cc bng>
WHERE <iu kin>
ORDER BY <danh sch cc ct>
60
SODA
999887777
10
999887777
30
987987987
10
987987987
30
987654321
10
987654321
20
987654321
30
61
Gii thiu
nh ngha d liu
Cp nht d liu
Truy vn d liu
-
Truy vn c bn
Tp hp, so snh tp hp v truy vn lng
Hm kt hp v gom nhm
Mt s dng truy vn khc
Mt s hm thng dng
62
Kt qu tr v l tp hp
- Loi b cc b trng nhau
- gi li cc b trng nhau
UNION ALL
INTERSECT ALL
EXCEPT ALL
63
SELECT *
FROM NHANVIEN
FROM NHANVIEN
WHERE PHG = 4
UNION
INTERSECT
SELECT *
SELECT *
FROM NHANVIEN
FROM NHANVIEN
WHERE PHAI=Nam
Truy vn lng
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuu AND PHG=MAPHG
Cu truy vn cha
(Outer query)
Cu truy vn con
(Subquery)
66
- Kim tra s tn ti
EXISTS
NOT EXISTS
67
68
V d - Lng phn cp
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=TP HCM AND PHG=MAPHG
69
70
Nhn xt IN v EXISTS
IN
- <tn ct> IN <cu truy vn con>
- Thuc tnh mnh SELECT ca truy vn con phi c
cng kiu d liu vi thuc tnh mnh WHERE ca
truy vn cha
EXISTS
- Khng cn c thuc tnh, hng s hay biu thc no
khc ng trc
- Khng nht thit lit k tn thuc tnh mnh
SELECT ca truy vn con
- Nhng cu truy vn c = ANY hay IN u c th chuyn
thnh cu truy vn c EXISTS
71
Gii thiu
nh ngha d liu
Cp nht d liu
Truy vn d liu
-
Truy vn c bn
Tp hp, so snh tp hp v truy vn lng
Hm kt hp v gom nhm
Mt s dng truy vn khc
Mt s hm thng dng
72
Hm kt hp
COUNT
- COUNT(*) m s dng
- COUNT(<tn thuc tnh>) m s gi tr khc NULL ca
thuc tnh
- COUNT(DISTINCT <tn thuc tnh>) m s gi tr khc
nhau v khc NULL ca thuc tnh
MIN
MAX
SUM
AVG
Cc hm kt hp c t mnh SELECT
73
V d
Cho bit s lng nhn vin ca tng phng ban
MANV
HONV
PHG
SL_NV
TENLOT
TENNV
NGSINH
DCHI
PHAI
LUONG
MA_NQL
PHG
333445555 Nguyen
Thanh
Tung
12/08/1955
638 NVC Q5
Nam
40000
888665555
987987987 Nguyen
Manh
Hung
09/15/1962
Ba Ria VT
Nam
38000
333445555
453453453
Tran
Thanh
Tam
07/31/1972
543 MTL Q1
Nu
25000
333445555
999887777
Bui
Ngoc
Hang
07/19/1968
33 NTH Q1
Nu
38000
987654321
987654321
Le
Quynh
Nhu
07620/1951
219 TD Q3
Nu
43000
888665555
987987987
Tran
Hong
Quang
04/08/1969
980 LHP Q5
Nam
25000
987654321
888665555
Pham
Van
Vinh
11/10/1945
450 TV HN
Nam
55000
NULL
74
Gom nhm
C php
SELECT <danh sch cc ct>
FROM <danh sch cc bng>
WHERE <iu kin>
GROUP BY <danh sch cc ct gom nhm>
75
V d
Vi mi nhn vin cho bit m s, h tn, s lng
n v tng thi gian m h tham gia
MA_NVIEN
SODA
THOIGIAN
123456789
32.5
123456789
7.5
333445555
10.0
333445555
10.0
333445555
10
10.0
888665555
20
20.0
987987987
10
35.0
987987987
30
5.0
987654321
30
20.0
987654321
20
15.0
453453453
20.0
453453453
20.0
76
V d
Cho bit nhng nhn vin tham gia t 2 n tr
ln
MA_NVIEN
SODA
THOIGIAN
123456789
32.5
123456789
7.5
333445555
10.0
333445555
10.0
333445555
10
10.0
888665555
20
20.0
987987987
10
35.0
987987987
30
5.0
987654321
30
20.0
987654321
20
15.0
453453453
20.0
453453453
20.0
b loi ra
77
78
Nhn xt
Mnh GROUP BY
- Cc thuc tnh trong mnh SELECT (tr nhng thuc
tnh trong cc hm kt hp) phi xut hin trong mnh
GROUP BY
Mnh HAVING
- S dng cc hm kt hp trong mnh SELECT
kim tra mt s iu kin no
- Ch kim tra iu kin trn nhm, khng l iu kin lc
trn tng b
- Sau khi gom nhm iu kin trn nhm mi c thc
hin
79
Nhn xt (tt)
Th t thc hin cu truy vn c mnh GROUP
BY v HAVING
- (1) Chn ra nhng dng tha iu kin trong mnh
WHERE
- (2) Nhng dng ny s c gom thnh nhiu nhm
tng ng vi mnh GROUP BY
- (3) p dng cc hm kt hp cho mi nhm
- (4) B qua nhng nhm khng tha iu kin trong
mnh HAVING
- (5) Rt trch cc gi tr ca cc ct v hm kt hp trong
mnh SELECT
80
Gii thiu
nh ngha d liu
Cp nht d liu
Truy vn d liu
-
Truy vn c bn
Tp hp, so snh tp hp v truy vn lng
Hm kt hp v gom nhm
Mt s dng truy vn khc
Mt s hm thng dng
81
Cu trc CASE
SELECT INTO
82
C php
V d
V d
SELECT MANV, TENNV
FROM NHANVIEN INNER JOIN PHONGBAN ON PHG = MAPHG
WHERE TENPHG= Nghien cuu
84
V d
SELECT MANV, TENNV
FROM NHANVIEN LEFT JOIN PHONGBAN ON PHG = MAPHG
85
Cu trc CASE
Cho php kim tra iu kin v xut thng tin theo
tng trng hp
C php
CASE <tn ct>
WHEN <gi tr> THEN <biu thc>
WHEN <gi tr> THEN <biu thc>
86
87
Select into
Dng to ra mt bng mi v a d liu vo
bng mi
SELECT <danh sch cc ct>
[INTO <tn bng>]
FROM <danh sch cc bng>
[WHERE <iu kin>]
Kt lun
SELECT <danh sch cc ct>
[INTO <tn bng>]
FROM <danh sch cc bng>
[WHERE <iu kin>]
[GROUP BY <cc thuc tnh gom nhm>]
[HAVING <iu kin trn nhm>]
[ORDER BY <cc thuc tnh sp th t>]
89
Truy vn d liu
Cp nht d liu
Mt s hm thng dng
-
Hm ton hc
Hm chui
Hm ngy thng
Hm chuyn i kiu
90
Hm ton hc
Hm
Din gii
V d
Kt qu
Select Power(2,5)
32
Round(X,n) Lm trn X cn n s l
Round(123.4567,2)
Square(X)
Square(5)
25
SQRT(X)
Tnh cn bc 2 ca X
SQRT(16)
Sum(ct)
Tnh tng ct
Sum(luong)
Count(ct)
Count(MANV)
Count(*)
m s dng
Count(*)
Max(ct)
Cho gi tr ln nht
Max(luong)
Min(ct)
Cho gi tr nh nht
Min(luong)
Avg(ct)
Avg(luong)
123.46
91
Hm chui
Hm
Din gii
V d
Kt qu
Ascii(C)
Tr v m Ascii ca k t C
select ASCII(A)
65
Char(N)
Tr v k t c m Ascii l N
Char(66)
Len(S)
Tr v chiu di S
Len(abc xyz)
Lower(S)
Lower(abcXYZ)
abcxyz
Upper(S)
Upper(abcXYZ)
ABCXYZ
LTrim(S)
LTrim( abc)
abc
Rtrim(S)
RTrim(abc )
abc
Left(S,n)
Trch n k t bn tri S
Left(abcxyz,4)
abcx
Right(S,n)
Trch n k t bn phi S
Right(abcxyz,4)
cxyz
92
Hm chui (tt)
Hm
Din gii
V d
Kt qu
abcXYZ
S1+S2
Ni S1 vi S2
Select abc+XYZ
CharIndex
(S1,S)
Tr v v tr u tin ca
S1xut hin trong S
CharIndex
(bc,abcxyzabc)
SubString
(S,p,n)
Trch n k t t v tr p ca S
SubString
(abcxyz,2,4)
Replace
(S1,S2,S3)
Reverse(abcxyz)
2
bcxy
xyxyc
zyxcba
93
Hm ngy thng
Cc hm c s dng tham s DatePart, gi tr ca DatePart
c cho nh bng sau
DatePart
Gi tr
Din gii
DD
1-31
MM
1-12
Thng trong nm
1-4
Qu trong nm
DW
1-7 (Sun-Sat)
Th trong tun
YY
1753-9999
Nm
94
Din gii
V d
Kt qu
2007-06-18
08:34:44.107
GetDate()
Tr v ngy gi
hin hnh
Select GetDate()
Day(date)
Day(GetDate())
Month(date)
Year(date)
Trch phn nm
Year(GetDate())
DatePart
(DatePart,date)
Trch DatePart
ca date
DatePart(mm,
GetDate())
DateAdd
(DatePart, n,date)
DateDiff(DatePart,
date1,date2)
Tr v s
DatePart gia 2
ngy
18
6
2007
6
2007-06-16
DateDiff(mm,
2007-02-16,
Getdate())
95
Hm chuyn i kiu
Hm
Cast(exp AS
data_type)
Din gii
Chuyn gi tr
exp sang kiu
data_type
Convert(data_type, Chuyn gi tr
exp [,style])
exp sang kiu
data_type theo
style
V d
Cast(123 AS Int)
Cast(123 AS
Varchar(10))
Convert(Varchar(20),
GetDate(),103)
Convert(Varchar(20),
GetDate(),101)
Kt qu
123
123
18/06/2007
06/18/2007
96