slide giang truy van sql
TRANSCRIPT
-
8/7/2019 Slide giang truy van SQL
1/70
Truy vn d liu
-
8/7/2019 Slide giang truy van SQL
2/70
2
Truy vn c bn
3
-
-
8/7/2019 Slide giang truy van SQL
3/70
3
V d
SELECT *
FROM NHANVIEN
WHERE PHG=5
Ly tt c cc ct caquan h kt qu
TENNVHONV NGSINH DCHI PHAI LUONG PHG
TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
-
8/7/2019 Slide giang truy van SQL
4/70
4
Mnh SELECT
SELECT MANV, HONV, TENLOT, TENNV
FROM NHANVIEN
WHERE PHG=5AND PHAI=Nam
TENNVHONV
TungNguyen
HungNguyen
TENLOT
Thanh
Manh
333445555
987987987
MANV
-
8/7/2019 Slide giang truy van SQL
5/705
Mnh SELECT (tt)
SELECT MANV, HONVAS HO, TENLOTASTEN LOT, TENNVAS TEN
FROM NHANVIEN
WHERE PHG=5AND PHAI=Nam
TENHO
TungNguyen
HungNguyen
TEN LOT
Thanh
Manh
333445555
987987987
MANV
Tn b danh
-
8/7/2019 Slide giang truy van SQL
6/706
Mnh SELECT (tt)
SELECT MANV, HONV + + TENLOT + + TENNVASHO TEN
FROM NHANVIEN
WHERE PHG=5AND PHAI=Nam
HO TEN
Nguyen Thanh Tung
Nguyen Manh Hung
333445555
987987987
MANV
M rng
-
8/7/2019 Slide giang truy van SQL
7/707
Mnh SELECT (tt)
SELECT MANV, LUONG*1.1ASLUONG10%
FROM NHANVIEN
WHERE PHG=5AND PHAI=Nam
LUONG10%
33000
27500
333445555
987987987
MANV
M rng
-
8/7/2019 Slide giang truy van SQL
8/708
Mnh SELECT (tt)
SELECT LUONG
FROM NHANVIEN
WHERE PHG=5AND PHAI=Nam
Loi b cc dng trng nhau
- Tn chi ph
- Ngi dng mun thy
LUONG
30000
25000
25000
38000
LUONG
30000
25000
38000
SELECT DISTINCT LUONG
FROM NHANVIEN
WHERE PHG=5AND PHAI=Nam
-
8/7/2019 Slide giang truy van SQL
9/709
V d
Cho MANV v TENNV lm phng
-
8/7/2019 Slide giang truy van SQL
10/7010
Mnh WHERE
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuuAND PHG=MAPHG
Biu thc lun l
TRUE TRUE
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBANWHERE (TENPHG=Nghien cuuORTENPHG=Quan ly)AND PHG=MAPHG
u tin
-
8/7/2019 Slide giang truy van SQL
11/7011
Mnh WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG>20000AND LUONG
-
8/7/2019 Slide giang truy van SQL
12/7012
Mnh WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKENguyen _ _ _ _
LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKENguyen %
Chui bt k
K t bt k
-
8/7/2019 Slide giang truy van SQL
13/70
13
Mnh WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV LIKENguyen
NOT LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV NOT LIKENguyen
-
8/7/2019 Slide giang truy van SQL
14/70
14
Mnh WHERE (tt)
SELECT MANV, TENNVFROM NHANVIEN
WHERE DCHI LIKE% Nguyens_% ESCAPEs
ESCAPE
Nguyen_
Ngy gi
SELECT MANV, TENNV
FROM NHANVIEN
WHERE NGSINH BETWEEN1955-12-08AND1966-07-19
-
8/7/2019 Slide giang truy van SQL
15/70
15
Mnh WHERE (tt)
NULL
- trongKhng (value unknown)Khng p (value inapplicable)Khng (value withheld)
- tnh ton c lin quan gi NULL chora l NULLx c gi l NULLx + 3 cho ra l NULLx + 3 l khng trong SQL
- so snh c lin quan gi NULL cho ral UNKNOWN
x = 3 cho ra l UNKNOWNx = 3 l so snh khng trong SQL
-
8/7/2019 Slide giang truy van SQL
16/70
16
Mnh WHERE (tt)
NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
SELECT MANV, MAPHG
FROM NHANVIEN, PHONGBAN
Khng s dng mnh WHERE
MAPHG
1
4
333445555
333445555
MANV
5
1987987987
987987987
333445555
4
5987987987
WHERE TRUE
-
8/7/2019 Slide giang truy van SQL
17/70
17
Mnh FROM (tt)
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
WHERE MAPHG=MAPHG
Tn b danh
SELECT TENPHG, DIADIEM
FROM PHONGBANAS PB,
DDIEM_PHGAS DD
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
-
8/7/2019 Slide giang truy van SQL
18/70
18
V d
n cho m n, m phngban tr n, tn phng cng ngy sinhv
Tm tn nhn vin phng 5 c tham gia von lm trn 10 .
Tm tn nhn vin v trchnhn vin .
Tm tn nhn vin Thanhtrch
-
8/7/2019 Slide giang truy van SQL
19/70
19
Mnh ORDER BY
Dng cu truy theo no
C php
- ASC:
- DESC:
SELECT
FROM
WHERE
ORDER BY
-
8/7/2019 Slide giang truy van SQL
20/70
20
Mnh ORDER BY (tt)
V
SELECT MA_NVIEN, SODA
FROM PHANCONG
ORDER BYMA_NVIEN DESC, SODA
SODA
10
30
999887777
999887777
MA_NVIEN
10
30987987987
987654321
987987987
10
20987654321
30987654321
-
8/7/2019 Slide giang truy van SQL
21/70
21
Php ton tp hp trong SQL
SQL c ci cc php ton- (UNION)- Giao (INTERSECT)- (EXCEPT)
l- cc trng nhau- cc trng nhau
UNION ALL
INTERSECT ALLEXCEPT ALL
-
8/7/2019 Slide giang truy van SQL
22/70
22
Php ton tp hp trong SQL (tt)
C php
SELECT FROM WHERE
UNION [ALL]
SELECT FROM WHERE
SELECT FROM WHERE
INTERSECT [ALL]
SELECT FROM WHERE
SELECT FROM WHERE EXCEPT [ALL]
SELECT FROM WHERE
-
8/7/2019 Slide giang truy van SQL
23/70
-
8/7/2019 Slide giang truy van SQL
24/70
24
Truy vn lng
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuuAND PHG=MAPHG
SELECT
FROM
WHERE (
SELECT
FROM
WHERE )
Cu truy vn cha(Outer query)
Cu truy vn con(Subquery)
-
8/7/2019 Slide giang truy van SQL
25/70
25
Truy vn lng (tt)
Cc cu SELECT c nhau Cu truy con cc gi Cc cu truy con trong cng WHERE
php logic WHERE cu truy cha
-
-
8/7/2019 Slide giang truy van SQL
26/70
26
Truy vn lng (tt)
C 2 truy- phn
WHERE truy con khng tham tnhcc quan trong FROM truy cha
Khi cu truy con
- quanWHERE truy con tham t tnh
cc quan trong FROM truy chaKhi cu truy con
truy cha
-
8/7/2019 Slide giang truy van SQL
27/70
27
V d - Lng phn cp
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHG IN (
SELECT MAPHG
FROM DIADIEM_PHGWHERE DIADIEM=TP HCM)
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=TP HCMAND PHG=MAPHG
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHG IN (1,5)
-
8/7/2019 Slide giang truy van SQL
28/70
28
V d
Tm nhn vin khng c thn nhn no Tm nhn vin c t
nhn vin phng 4 Tm nhn vin c
nhn vin phng 4 Tm phng c thn nhn
-
8/7/2019 Slide giang truy van SQL
29/70
29
V d - Lng tng quan
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuuAND PHG=MAPHG
SELECT MANV, TENNV
FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM PHONGBAN
WHERE TENPHG=Nghien cuuAND PHG=MAPHG )
-
8/7/2019 Slide giang truy van SQL
30/70
30
V d
Tm nhn vin c thn cng tn v cng tnh Tm nhn vin khng c thn nhn no Tm nhn vin c t
nhn vin phng 4 Tm phng c thn nhn
h
-
8/7/2019 Slide giang truy van SQL
31/70
31
Nhn xt IN v EXISTS
IN
-
-
8/7/2019 Slide giang truy van SQL
32/70
32
Php chia trong SQL
R S l cc gi ai trong R sao cho khng c gi bino trong S lm cho (ai, bi) khng trong R
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
R S
aibi
Ph hi t SQL (tt)
-
8/7/2019 Slide giang truy van SQL
33/70
33
Php chia trong SQL (tt)
NOT EXISTS
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.DAND R2.E=S.E
AND R1.A=R2.AAND R1.B=R2.BAND R1.C=R2.C ))
V d
-
8/7/2019 Slide giang truy van SQL
34/70
34
V d
Tm tn cc nhn vin phn cng lm cc
n
- Tm tn cc nhn vin m khng c n no l khngphn cng lm
- chia: PHANCONG(MA_NVIEN, SODA)- chia: DEAN(MADA)- : KQ(MA_NVIEN)
- KQ NHANVIEN ra TENNV
Tm tn cc nhn vin phn cng lm ccn
H kt h
-
8/7/2019 Slide giang truy van SQL
35/70
35
Hm kt hp
COUNT
- COUNT(*) dng- COUNT() gi khc NULL
tnh- COUNT(DISTINCT ) gi khc nhau v
khc NULL tnh
MIN MAX SUM AVG
Cc hm SELECT
V d
-
8/7/2019 Slide giang truy van SQL
36/70
36
V d
Tm cao v
trung bnh cc nhn vin Cho nhn vin phng
V d
-
8/7/2019 Slide giang truy van SQL
37/70
37
V d
Cho nhn vin phng banSL_NV
5
4
3
3
PHG
1 1
TENNVHONV NGSINH DCHI PHAI LUONG PHG
TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
TamTran 07/31/1972 543 MTL Q1 Nu 25000 5
HangBui 07/19/1968 33 NTH Q1 Nu 38000 4
453453453
999887777
333445555
987654321
Thanh
Ngoc
NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh
QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4
VinhPham 11/10/1945 450 TV HN Nam 55000 1
987987987
888665555
987654321
NULL
Hong
Van
Gom nhm
-
8/7/2019 Slide giang truy van SQL
38/70
38
Gom nhm
C php
Sau khi gom nhm- nhm cc c cng gi cc tnh gom nhm
SELECT
FROM
WHERE
GROUP BY
V d
-
8/7/2019 Slide giang truy van SQL
39/70
39
V d
Cho nhn vin phng ban nhn vin cho m tn, n
v gian m tham gia
iu kin trn nhm
-
8/7/2019 Slide giang truy van SQL
40/70
40
iu kin trn nhm
C php
Cho nhn vin tham gia 2 n ln Cho phng ban (TENPHG) c trung bnh
cc nhn vin 20000
SELECT
FROM
WHERE
GROUP BY
HAVING
Nhn xt
-
8/7/2019 Slide giang truy van SQL
41/70
41
Nhn xt
GROUP BY
- Cc tnh trong SELECT tnhtrong cc hm trong GROUPBY
HAVING
- cc hm trong SELECT trano- tra trn nhm, khng l trn
- Sau khi gom nhm trn nhm
Nhn xt (tt)
-
8/7/2019 Slide giang truy van SQL
42/70
42
Nhn xt (tt)
cu truy c GROUP BY v
HAVING- (1) ra dng trong WHERE- (2) dng ny gom thnh nhm
GROUP BY
- (3) p cc hm cho nhm- (4) qua nhm khng trong
HAVING
- (5) Rt trch cc gi cc v hm trongSELECT
V d
-
8/7/2019 Slide giang truy van SQL
43/70
43
V d
Tm phng ban c trung bnh cao Tm 3 nhn vin c cao Tm tn cc nhn vin phn cng lm cc
n
Mt s dng truy vn khc
-
8/7/2019 Slide giang truy van SQL
44/70
44
Mt s dng truy vn khc
Truy con FROM
FROM- Php nhin- Php ngoI
trc CASE
Truy vn con mnh FROM
-
8/7/2019 Slide giang truy van SQL
45/70
45
Truy vn con mnh FROM
cu truy l
- trung gian trong qu trnh truy- Khng c
C php
SELECT
FROM R1, R2, () AS tn_bng
WHERE
V d
-
8/7/2019 Slide giang truy van SQL
46/70
46
V d
Cho phng ban (TENPHG) c trung bnh
cc nhn vin 20000
iu kin kt mnh FROM
-
8/7/2019 Slide giang truy van SQL
47/70
47
iu kin kt mnh FROM
ngoi
SELECT
FROM R1 [INNER] JOIN R2 ON
WHERE
SELECT
FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON
WHERE
V d
-
8/7/2019 Slide giang truy van SQL
48/70
48
V d
Tm m v tn cc nhn vin lm phng
Tm tn cc nhn vin v tn cc n nhn vin thamgia c
Cu trc CASE
-
8/7/2019 Slide giang truy van SQL
49/70
49
Cu trc CASE
Cho php tra v thng tin theo
C php
CASE
WHEN THEN
WHEN THEN
[ELSE ]
END
V d
-
8/7/2019 Slide giang truy van SQL
50/70
50
Cho tn cc nhn vin (nam 60
55 Cho tn cc nhn vin v
Kt lun
-
8/7/2019 Slide giang truy van SQL
51/70
51
SELECT
FROM
[WHERE ]
[GROUP BY]
[HAVING ]
[ORDER BY]
Lnh INSERT
-
8/7/2019 Slide giang truy van SQL
52/70
52
Dng thm 1 hay dng vo
thm- Tn quan- Danh sch cc tnh thm
- Danh sch cc gi
C php (thm 1 dng)
INSERT INTO ()VALUES ()
V d
-
8/7/2019 Slide giang truy van SQL
53/70
53
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)
Lnh INSERT (tt)
-
8/7/2019 Slide giang truy van SQL
54/70
54
( )
xt
- cc gi trng cc
- C thm gi NULL tnh khng l khachnh v NOT NULL
- Cu INSERT vi RBTVKha chnh
ThamNOT NULL - cc tnh c rng NOT NULL cgi
Lnh INSERT (tt)
-
8/7/2019 Slide giang truy van SQL
55/70
55
C php (thm dng)
INSERT INTO ()
CREATE TABLE THONGKE_PB ( TENPHGVARCHAR(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 BYTENPHG
V d
Lnh DELETE
-
8/7/2019 Slide giang truy van SQL
56/70
56
Dng xa cc dng
C php
V
DELETE FROM
[WHERE ]
DELETE FROM NHANVIEN
WHERE HONV=Tran
DELETE FROM NHANVIEN
WHERE MANV=345345345
DELETE FROM NHANVIEN
Lnh DELETE (tt)
-
8/7/2019 Slide giang truy van SQL
57/70
57
xt
- dng xa voWHERE
- khng WHERE, ccdng trong xa
- DELETE c gy ra vi RB thamKhng cho xaXa lun dng c gi tham
CASCADE
NULL cho gi tham
Lnh DELETE (tt)
-
8/7/2019 Slide giang truy van SQL
58/70
58
TENNVHONV NGSINH DCHI PHAI LUONG PHG
TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
HangBui 07/19/1968 33 NTH Q1 Nu 38000 4999887777 987654321Ngoc
NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh
VinhPham 11/10/1945 450 TV HN Nam 55000 1888665555 NULLVan
SODA THOIGIANMA_NVIEN
10 10.0333445555
20 20.0888665555
30 20.0987654321
1 20.0453453453
TamTran 07/31/1972 543 MTL Q1 Nu 25000 5453453453 333445555Thanh
QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4987987987 987654321Hong
10 35.098798798730 5.0987987987
Lnh DELETE (tt)
-
8/7/2019 Slide giang truy van SQL
59/70
59
TENNVHONV NGSINH DCHI PHAI LUONG PHG
TungNguyen 12/08/1955 638 NVC Q5 Nam 40000
HungNguyen 09/15/1962 Ba Ria VT Nam 38000
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
HangBui 07/19/1968 33 NTH Q1 Nu 38000 4999887777 987654321Ngoc
NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh
VinhPham 11/10/1945 450 TV HN Nam 55000 1888665555 NULLVan
TamTran 07/31/1972 543 MTL Q1 Nu 25000
5
5
5453453453 333445555Thanh
QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4987987987 987654321Hong
NULL
NULL
NULL
05/22/1988333445555Nghien cuu 5
NG_NHANCHUCMA_NVIEN
01/01/1995
06/19/1981
987987987
888665555
TENPHG MAPHG
Dieu hanh 4
Quan ly 1
-
8/7/2019 Slide giang truy van SQL
60/70
V d
-
8/7/2019 Slide giang truy van SQL
61/70
61
UPDATE NHANVIEN
SET NGSINH=08/12/1965
WHERE MANV=333445555
UPDATE DEAN
SET DIADIEM_DA=Vung Tau, PHONG=5
WHERE MADA=10
n c m 10, hy thay n
thnh v phng ban trch l phng 5
Lnh UPDATE
-
8/7/2019 Slide giang truy van SQL
62/70
62
xt
- dng WHEREgi
- khng WHERE, ccdng trong
- UPDATE c gy ra vi RB thamKhng cho
lun dng c gi thamCASCADE
Khung nhn
-
8/7/2019 Slide giang truy van SQL
63/70
63
l quan l trong
CSDL
Khung nhn l quan- Khng l
- Khng- khc- C truy hay thng qua khung nhn
Khung nhn (tt)
-
8/7/2019 Slide giang truy van SQL
64/70
64
sao khung nhn?
- Che tnh- ha cc cu truy-- An ton
nh ngha khung nhn
-
8/7/2019 Slide giang truy van SQL
65/70
65
C php
ny c- Danh sch tnh trng cc tnh trong
SELECT
- dng vo WHERE- cc FROM
CREATE VIEW AS
DROP VIEW
V d
-
8/7/2019 Slide giang truy van SQL
66/70
66
CREATE VIEW NV_P5AS
SELECT MANV, HONV, TENLOT, TENVNFROM NHANVIEN
WHERE PHG=5
CREATE VIEW TONGLNG_SLNV_PBAS
SELECT MAPHG, TENPB, COUNT(*)AS SLNV,SUM(LUONG)AS TONGLNG
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG
GROUP BYTENPHG
Truy vn trn khung nhn
-
8/7/2019 Slide giang truy van SQL
67/70
67
Tuy khng c cc cu
truy trn khung nhn
C cu truy khung nhn v
SELECT TENNV
FROM NV_P5
WHERE HONV LIKENguyen
SELECT HONV, TENVN, TENDA, THOIGIAN
FROM NV_P5, PHANCONG, DEAN
WHERE MANV=MA_NVIENAND SODA=MADA
Cp nht trn khung nhn
-
8/7/2019 Slide giang truy van SQL
68/70
68
C dng cc cu INSERT, DELETE v UPDATE
cho cc khung nhn- Khung nhn xy trn 1 v c kha chnh
Khng- Khung nhn c dng kha DISTINCT- Khung nhn c cc hm
- Khung nhn c SELECT- Khung nhn xy c RB trn
- Khung nhn xy
Cp nht trn khung nhn (tt)
-
8/7/2019 Slide giang truy van SQL
69/70
69
cho nhn vin m 123456789 phng 5 l
UPDATE NV_P5
SET HONV=Pham
WHERE MANV=123456789
-
8/7/2019 Slide giang truy van SQL
70/70
70