You are on page 1of 64

Bi 5

Ngn ng SQL
C s d liu 2
Ni dung chi tit
1. Gii thiu SQL
2. Mi trng SQL
3. Dng DDL nh ngha CSDL
4. Dng DML thao tc trn CSDL
- Truy vn d liu
- Cp nht d liu
C s d liu 3
SQL l g?
Ngn ng i s quan h
- Cch thc truy vn d liu
- Kh khn cho ngi s dng
SQL (Structured Query Language) Ngn ng truy vn c
cu trc
Ngn ng chun cho cc RDBMS (relational database
management systems - h qun tr CSDL quan h)
C s d liu 4
SQL l g?
SQL gm
- Data Definition Language (DDL): Cc lnh m t CSDL,
gm to, sa, xo cc bng v rng buc
- Data Manipulation Language (DML): Cc lnh thao tc
truy vn d liu
- Data Control Language (DCL): Cc lnh iu khin
CSDL, gm vic qun l quyn hn ca user
SQL s dng thut ng
- Bng ~ quan h
- Ct ~ thuc tnh
- Dng ~ b
C s d liu 5
Mi trng thao tc
Start -> Microsoft SQL
Server -> Query Analyzer
(I): Chn tn CSDL
(II): G cu ln SQL
(III): thc hin cu lnh
(IV): kt qu ca cu lnh
C s d liu 6
Data Definition Language (DDL)

- Lnh to CSDL: CREATE DATABASE

- Lnh to bng: CREATE TABLE

- Lnh sa bng: ALTER TABLE

- Lnh xa bng: DROP TABLE

3. Dng DDL nh ngha CSDL
C s d liu 7
Lnh to CSDL
To CSDL:
- Create Database <tn CSDL>
Xa CSDL
- Drop Database <tn CSDL>
V d: To CSDL QuanLyNhanSu
Create Database QuanLyNhanSu

C s d liu 8
Lnh to bng
nh ngha mt bng
- Tn bng
- Cc thuc tnh
Tn thuc tnh
Kiu d liu
Cc rng buc ton vn trn thuc tnh (RBTV)
C php
CREATE TABLE <Tn_bng> (
<Tn_ct> <Kiu_d_liu> [<RBTV>],
<Tn_ct> <Kiu_d_liu> [<RBTV>],

[<RBTV>]
)
C s d liu 9
V d - To bng
CREATE TABLE NHANVIEN (
MANV CHAR(9),
TENNV VARCHAR(50),
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3),
LUONG INT,
MA_NQL CHAR(9),
PHG INT
)
C s d liu 10
Lnh to bng (tt)
<RBTV>
- NOT NULL
- NULL
- IDENTITY
- UNIQUE
- DEFAULT
- PRIMARY KEY
- FOREIGN KEY / REFERENCES
- CHECK
t tn cho RBTV

CONSTRAINT <Ten_RBTV> <RBTV>
C s d liu 11
V d - RBTV
CREATE TABLE NHANVIEN (
MANV CHAR(9) PRIMARY KEY,
TENNV VARCHAR(50) NOT NULL,
NS DATETIME,
DCHI VARCHAR(50),
GT CHAR(3) CHECK (GT IN (Nam, Nu)),
LUONG INT DEFAULT (10000),
MA_NQL CHAR(9),
MaPB INT
)
CONSTRAINT PK_NHANVIEN PRIMARY KEY (MANV)
C s d liu 12
V d - RBTV
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20) UNIQUE,
MAPHG INT PRIMARY KEY,
MA_TRPHG CHAR(9) FOREIGN KEY REFERENCES NHANVIEN (MaNV),
NG_NHANCHUC DATETIME DEFAULT (GETDATE())
)
C s d liu 13
V d
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin hc ha
Phc li
10
20
Quang Nam
Quang Tri
4
4
Ti t chc
15 Da Nang
1
DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB
C s d liu 14
Lnh sa bng
c dng
- Thay i cu trc bng
- Thay i RBTV


Thm ct


Xa ct


M rng ct
ALTER TABLE <Tn_bng> ADD <Tn_ct>
<Kiu_d_liu> [<RBTV>]
ALTER TABLE <Tn_bng> DROP COLUMN <Tn_ct>
ALTER TABLE <Tn_bng> ALTER COLUMN
<Tn_ct> <Kiu_d_liu_mi>
C s d liu 15
V d - Thay i cu trc bng
ALTER TABLE NHANVIEN ADD
NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
C s d liu 16
Lnh xa bng
c dng xa cu trc bng
- Tt c d liu ca bng cng b xa

C php


V d

DROP TABLE <Tn_bng>
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
C s d liu 17
Ni dung chi tit
1. Gii thiu SQL
2. Mi trng SQL
3. Dng DDL nh ngha CSDL
4. Dng DML thao tc trn CSDL
- Truy vn d liu
Truy vn c bn
Hm kt hp
Mnh GROUP BYHAVING
Mnh ORDER BY
- Cp nht d liu
C s d liu 18
t vn
Hy cho bit tn v a ch ca nhng nhn vin lm vic phng s 5 ?
Nguyen Van Tung 12/08/1955 2 Le Loi - DN Nam 5
Le Thi Buoi 09/15/1962 Tran Phu - DN Nu 3
01
02

TenNV NgaySinh DChi GT MaPB NHANVIEN
Tran Thi Ba 09/15/1979 12/K4 Tam Ky - QN Nu 5 04
Nguyen Khanh 04/12/1975 Hoa Tho - DN Nam 5 03
Phan Van Tuan 4/12/1970 Hoa Tho - DN Nam 1 05
MaNV



Ln danh sch tt c cc nhn vin n trong cng ty?
Cho bit s lng nhn vin mi phng?
Luong
3.000.000
3.000.000
4.000.000
2.500.000
4.000.000

C s d liu 19
Truy vn c bn
Gm 3 mnh




- <danh sch cc thuc tnh>
Tn cc thuc tnh (ct) s c hin th trong kt qu truy vn.
- <danh sch cc bng>
Tn cc bng lin quan n cu truy vn.
- <biu thc iu kin>
Cc php ton so snh: < , > , s , > , = , =
Cc php ton logic: AND, OR, v NOT
Cc t kha: BETWEEN AND, IN, EXISTS
SELECT <danh sch cc thuc tnh>
FROM <danh sch cc bng>
WHERE <biu thc iu kin>
C s d liu 20
Truy vn c bn (tt)
SELECT <danh sch cc ct>
FROM <danh sch cc bng>
WHERE <iu kin>
o
t

SELECT L
FROM R
WHERE C
t
L
(o
C
(R))
SQL v SQH




C s d liu 21
Truy vn c bn
Hy cho bit tn v a ch ca nhng nhn vin
lm vic phng s 5 ?




SELECT TenNV, DChi
FROM NhanVien
WHERE MaPB = 5
TENNV
Nguyen Van Tung
Nguyen Khanh
Tran Thi Ba
DChi
2 Le Loi - DN
12/K4 Tam Ky - QN
Hoa Tho - DN
SELECT TenNV AS [TN NHN VIN], DChi AS [A CH]
FROM NhanVien
WHERE MaPB = 5
TN NHN VIN
Nguyen Van Tung
Nguyen Khanh
Tran Thi Ba
A CH
2 Le Loi - DN
12/K4 Tam Ky - QN
Hoa Tho - DN
C s d liu 22
Mnh FROM (tt)
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
WHERE MAPHG=MAPHG
Tn b danh
SELECT TENPHG, DIADIEM
FROM PHONGBAN AS PB, DDIEM_PHG AS DD
WHERE PB.MAPHG=DD.MAPHG
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
C s d liu 23
Truy vn c bn
V d: Ln danh sch tt c cc nhn vin n trong cng ty?
vncn
SELECT *
FROM NHANVIEN
WHERE GT = Nu
ly thng tin v tt c cc thuc tnh trong bng ta
dng k hiu du * sau t kha SELECT.
Tt c cc thuc tnh
Le Loi - DN Nu 3.000.000 3
Tran Thi Ba Nu 2.500.000 5
02
04

TENNV NS DCHI GT LUONG MaPB MANV
Le Thi Buoi
12/K4 Tam Ky - QN
09/15/1962
09/15/1979

C s d liu 24
Mnh WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TenNV LIKE Nguyen _ _ _ _

LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TenNV LIKE Nguyen %

Chui bt k
K t bt k
C s d liu 25
Truy vn c bn


BETWEEN
Hoc
SELECT MANV, TENNV
FROM NHANVIEN
WHERE Luong BETWEEN 2.000.000 AND 3.000.000

2.000.000
3.000.000
V d: Tm nhng nhn vin no c lng t 2 triu n 3 triu ng
SELECT MANV, TENNV
FROM NHANVIEN
WHERE Luong> 2.000.000 AND Luong< 3.000.000
Biu thc logic
TRUE TRUE
C s d liu 26
V d
Cho bit MANV v TENNV lm vic phng
Nghien cuu
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuu AND MaPB=MAPHG
C s d liu 27
V d
Tm h tn ca nhng nhn vin c Nguyen
Thanh Tung ph trch trc tip
C s d liu 28
Truy vn c bn
SQL cho php 1 bng c nhiu dng trng nhau
trong kt qu truy vn.
loi b cc dng trng nhau, ta dng t kha
DISTINCT sau t kha SELECT.

V d: Hin th bng lng ca nhn vin trong cng
ty.
C s d liu 29
Truy vn c bn
SELECT LUONG
FROM NHANVIEN
Loi b cc dng trng nhau
- Tn chi ph
- Khng hiu qu cho cc
mc ch thng k
LUONG
3.000.000
2.500.000
2.500.000
4.000.000
SELECT DISTINCT LUONG
FROM NHANVIEN
LUONG
3.000.000
4.000.000
2.500.000
Kt qu:
C s d liu 30
Hm kt hp
COUNT
- COUNT(*) m s dng
- COUNT (<tn thuc tnh>) m s gi tr khc NULL ca
thuc tnh
MIN, MAX, SUM, AVG
Cc hm kt hp c t mnh SELECT
C s d liu 31
V d
Tm tng lng, lng cao nht, lng thp nht v
lng trung bnh ca cc nhn vin

SELECT sum(Luong) AS [Tng lng] ,
max(Luong) AS [Lng cao nht] ,
min(Luong) AS [Lng thp nht] ,
avg(Luong) AS [Lng trung bnh]
FROM NhanVien

LUONG
3.000.000
2.500.000
2.500.000
4.000.000
Tng lng Lng cao nht Lng thp nht Lng trung bnh
12.000.000 3.000.000 2.500.000 4.000.000
C s d liu 32
V d
Cho bit s lng nhn vin ca phng Nghien
cuu
C s d liu 33
V d
Vi mi phng, cho bit s d n m phng iu phi
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin hc ha
Phc li
10
20
Quang Nam
Quang Tri
4
4
Ti t chc
15 Da Nang
1
DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB
C s d liu 34
Mnh GROUP BY
C php





Sau khi gom nhm
- Mi nhm s c cng gi tr ti cc thuc tnh gom nhm
SELECT <danh sch cc thuc tnh>
FROM <danh sch cc bng>
WHERE <iu kin>
GROUP BY <danh sch cc ct gom nhm>
C s d liu 35
V d
Vi mi phng, cho bit s d n m phng iu phi
MaPB So du an
5
4
1
3
2
1
SELECT MaPB, count (Ma_DuAn) AS [So du an]
FROM DUAN
GROUP BY MaPB
Kt qu:
Ct gom nhm [Group By (MaPB)]
Ct tnh ton [count (Ma_DuAn)]
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin hc ha
Phc li
10
20
Quang Nam
Quang Tri
4
4
Ti t chc
15 Da Nang
1
DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB
C s d liu 36
V d
Cho bit s lng nhn vin ca tng phng ban

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
C s d liu 37
Mnh HAVING
C php
SELECT <danh sch cc thuc tnh>
FROM <danh sch cc bng>
WHERE <biu thc iu kin>
GROUP BY <danh sch cc thuc tnh gom nhm>
HAVING <iu kin trn nhm>
C s d liu 38
V d
Cho bit nhng phng ban tham gia t 2 n tr
ln
SELECT MaPB, count (Ma_DuAn) AS [So du an]
FROM DUAN
GROUP BY MaPB
HAVING Count (Ma_DuAn) >= 2

X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin hc ha
Phc li
10
20
Quang Nam
Quang Tri
4
4
Ti t chc
15 Da Nang
1
DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB
MaPB So du an
Kt qu:
5
4
3
2
b loi ra
C s d liu 39
V d 17
Cho bit nhng phng ban (MaPB) c lng trung
bnh ca cc nhn vin ln hn 2tr
C s d liu 40
Nhn xt
Mnh GROUP BY
- Cc thuc tnh trong mnh GROUP BY phi c
xut hin trong mnh mnh SELECT.
Mnh HAVING
- Ch kim tra iu kin trn nhm, mnh Having khng
lc trn tng bn ghi.
- iu kin trn nhm ( mnh HAVING) c thc
hin sau khi gom nhm.
C s d liu 41
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) Tnh ton 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
C s d liu 42
Mnh ORDER BY
Hin th kt qu cu truy vn theo mt th t no
C php





- ASC (ASCending): tng (mc nh)
- DESC (DESCending): gim
SELECT <danh sch cc thuc tnh>
FROM <danh schcc bng>
WHERE <biu thc iu kin>
ORDER BY <thuc tnh sp xp> [ASC | DESC]
C s d liu 43
Mnh ORDER BY (tt)
V d: Vi mi phng ban, cho bit m phng v m nhn
vin trong phng . Sp xp theo th t gim dn ca m
phng v tng dn ca m nhn vin.

02
03
05
04
06
Nguyen Tung Le Loi -DN Nam 5
Le Thi Buoi Tran Phu -DN Nu 5
01
TENNV DCHI GT MaPB
MANV
Le Nam Yen Bay -DN Nam 4
Tran Thi B
Le Duan -DN Nu 4
Thai Thi Hoa Hoa Khanh -DN Nu 1
Tran A Dien Ban -QN Nam 5
SELECT MaPB, MaNV
FROM NHANVIEN
ORDER BY MaPB DESC, MaNV ASC
MaNV
01
02
5
5
MaPB
03
04 4
4
5
05
06 1
Kt qu
C s d liu 44
Cu lnh SELECT y
SELECT <danh sch cc thuc tnh>
FROM <danh sch cc bng>
WHERE <biu thc iu kin>
GROUP BY <danh sch cc thuc tnh gom nhm>
HAVING <iu kin trn nhm>
ORDER BY <thuc tnh sp xp> [ASC | DESC]

C s d liu 45
Truy vn lng
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuu AND PHG=MAPHG
SELECT <danh sch cc ct>
FROM <danh sch cc bng>
WHERE <so snh tp hp> (
SELECT <danh sch cc ct>
FROM <danh sch cc bng>
WHERE <iu kin>)
Cu truy vn ngoi
(Outer query)
Cu truy vn trong
(Subquery)
C s d liu 46
Truy vn lng (tt)
Cc cu lnh SELECT c th lng nhau nhiu mc
Cu truy vn con thng tr v mt tp cc gi tr
Mnh WHERE ca cu truy vn ngoi
- <biu thc> <so snh tp hp> <truy vn con>
- So snh tp hp thng i cng vi mt s ton t
IN, NOT IN
ALL
ANY hoc SOME
- Kim tra s tn ti
EXISTS
NOT EXISTS
C s d liu 47
V d
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHG IN (
SELECT MAPHG
FROM DIADIEM_PHG
WHERE DIADIEM=TP HCM )
(1, 5)
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=TP HCM AND PHG=MAPHG
C s d liu 48
V d 7
Tm nhng nhn vin khng c thn nhn no
C s d liu 49
Ni dung chi tit
1. Gii thiu SQL
2. Mi trng SQL
3. Dng DDL nh ngha CSDL
4. Dng DML thao tc trn CSDL
- Truy vn d liu
Truy vn c bn
Hm kt hp
Mnh GROUP BYHAVING
Mnh ORDER BY
- Cp nht d liu
Thm (insert)
Xa (delete)
Sa (update)
C s d liu 50
Lnh INSERT
Dng thm 1 hay nhiu dng vo bng

thm d liu
- Tn quan h
- Danh sch cc thuc tnh cn thm d liu
- Danh sch cc gi tr tng ng


C s d liu 51
Lnh INSERT (tt)
C php (thm 1 dng)
INSERT INTO <tn bng>(<danh sch cc thuc tnh>)
VALUES (<danh sch cc gi tr tuong ung>)
C s d liu 52
V d
INSERT INTO NHANVIEN(TENNV, MANV, GT)
VALUES (Le Van Tuyen, 635635635, Nam)
INSERT INTO NHANVIEN
VALUES (635663535, Le Van Tuyen, 12/30/1952, 98 Le Do, Nam, 37000,
987987987, 4)
INSERT INTO NHANVIEN(TENNV, MANV, GT, DCHI)
VALUES (Le Van Tuyen, 635635635, NAM, NULL)
C s d liu 53
Lnh INSERT (tt)
Nhn xt
- Th t cc gi tr phi trng vi th t cc ct

- C th thm gi tr NULL nhng thuc tnh khng l
kha chnh v cho php NULL

- Cu lnh INSERT s gp li nu vi phm RBTV
Kha chnh
Tham chiu
NOT NULL - cc thuc tnh c rng buc NOT NULL bt buc
phi c gi tr
C s d liu 54
Lnh INSERT (tt)
C php (thm nhiu dng)
INSERT INTO <tn bng>(<danh sch cc thuc tnh>)
<cu truy vn con>
C s d liu 55
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
C s d liu 56
Lnh DELETE
Dng xa cc dng ca bng

C php
DELETE FROM <tn bng>
[WHERE <iu kin>]
C s d liu 57
V d
DELETE FROM NHANVIEN
WHERE HONV=Tran
DELETE FROM NHANVIEN
WHERE MANV=345345345
DELETE FROM NHANVIEN
C s d liu 58
Lnh DELETE (tt)
Nhn xt
- S lng s dng b xa ph thuc vo iu kin
mnh WHERE

- Nu khng ch nh iu kin mnh WHERE, tt c
cc dng trong bng s b xa

- Lnh DELETE c th gy ra vi phm RB tham chiu

Xa lun nhng dng c gi tr ang c tham chiu n
- CASCADE
t NULL cho nhng gi tr tham chiu
C s d liu 59
Lnh DELETE (tt)
TENNV HONV NGSINH DCHI PHAI LUONG PHG
Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000
Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
Hang Bui 07/19/1968 33 NTH Q1 Nu 38000 4 999887777 987654321 Ngoc
Nhu Le 07620/1951 219 TD Q3 Nu 43000 4 987654321 888665555 Quynh
Vinh Pham 11/10/1945 450 TV HN Nam 55000 1 888665555 NULL Van
Tam Tran 07/31/1972 543 MTL Q1 Nu 25000
5
5
5 453453453 333445555 Thanh
Quang Tran 04/08/1969 980 LHP Q5 Nam 25000 4 987987987 987654321 Hong
NULL
NULL
NULL
05/22/1988 333445555 Nghien cuu 5
NG_NHANCHUC MA_NVIEN
01/01/1995
06/19/1981
987987987
888665555
TENPHG MAPHG
Dieu hanh 4
Quan ly 1
C s d liu 60
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>,

[WHERE <iu kin>]
C s d liu 61
V d
UPDATE NHANVIEN
SET NGSINH=08/12/1965
WHERE MANV=635635635
C s d liu 62
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=Vung Tau, MaPB=5
WHERE MA_DuAn=10
C s d liu 63
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

Sa nhng dng c gi tr ang tham chiu n
- CASCADE
C s d liu 64

You might also like