Download as pdf or txt
Download as pdf or txt
You are on page 1of 96

CHNG 2

NGN NG TRUY VN SQL

Ni dung chi tit








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

Gii thiu (tt)


 SQL gm cc cu lnh cho php
-

nh ngha d liu DDL (Data Definition Language)


Thao tc d liu DML (Data Manipulation Language)
Rng buc ton vn
nh ngha khung nhn
Phn quyn v bo mt

 SQL s dng thut ng


- Bng ~ quan h
- Ct ~ thuc tnh
- Dng ~ b
4

Ni dung chi tit


 Gii thiu
 nh ngha d liu
- Kiu d liu
- Cc lnh nh ngha d liu

 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
-

CREATE TABLE (to bng)


DROP TABLE (xa bng)
ALTER TABLE (sa bng)
CREATE DATABASE

Kiu d liu
 S
-

SMALLINT
INT
NUMERIC
DECIMAL
REAL
FLOAT
.

Kiu d liu (tt)


 Chui k t
- CHAR, VARCHAR
- NCHAR, NVARCHAR (g du ting Vit Unicode)
-

 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

Lnh to bng (tt)


 <RBTV>
-

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

V d - To bng c RBTV (tt)


CREATE TABLE PHONGBAN (
TENPHG NVARCHAR(40) UNIQUE,
MAPHG INT PRIMARY KEY,
TRPHG NVARCHAR(20),
NG_NHANCHUC SMALLDATETIME DEFAULT (GETDATE())
)
CREATE TABLE DIADIEM_PHG(
MAPHG INT NOT NULL,
DIADIEM NVARCHAR(50) NOT NULL,
CONSTRAINT PK_DIADIEM_PHG PRIMARY KEY (MAPHG , DIADIEM)
)

13

V d - To bng c RBTV (tt)


CREATE TABLE DEAN (
TENDA NVARCHAR(40) UNIQUE,
MADA INT PRIMARY KEY,
DDIEM_DA NVARCHAR(50),
PHONG INT
)
CREATE TABLE PHANCONG (
MA_NVIEN NVARCHAR(20) FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
SODA INT FOREIGN KEY (SODA)
REFERENCES DEAN(MADA),
THOIGIAN NUMERIC(3,1)
)
14

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

V d - t tn cho RBTV (tt)


CREATE TABLE PHANCONG (
MA_NVIEN NVARCHAR(20),
SODA INT,
THOIGIAN NUMERIC(3,1),
CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA),
CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)
REFERENCES DEAN(MADA)
)

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

Lnh sa bng (tt)


 Hiu chnh ct
ALTER TABLE <Tn_bng> ALTER COLUMN<Tn_ct> <Kiu_d_liu_mi>

- V d
ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP NVARCHAR(70)

18

Lnh sa bng (tt)


 Thm RBTV
ALTER TABLE <Tn_bng> ADD
CONSTRAINT <Ten_RBTV> <RBTV>,
CONSTRAINT <Ten_RBTV> <RBTV>,

- 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

Lnh sa bng (tt)


 Xem cc RBTV
SP_HELPCONSTRAINT <Tn_bng>

- 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

Lnh xa bng (tt)

NHANVIEN
HONV

TENLOT

TENNV

MANV

NGSINH

DCHI

PHAI

LUONG

MA_NQL

PHG

PHONGBAN
TENPHG

MAPHG

TRPHG

NG_NHANCHUC

22

Lnh to kiu d liu mi


 To ra mt kiu d liu mi k tha nhng kiu d
liu c sn
 C php
CREATE TYPE <Tn_kdl_mi> FROM <KDL_C_sn>

- V d
CREATE TYPE Kieu_Ten FROM NVARCHAR(30)

 Xa kiu d liu t nh ngha


DROP TYPE <Tn_kdl_mi>

- V d
DROP TYPE Kieu_Ten
23

S dng DEFAULT v RULE


 Default v Rule l i tng c th kt vi mt hoc
nhiu ct
- To Default
CREATE DEFAULT <Tn_Default> AS <BT_gi_tr>

- Rng buc Default vo ct


sp_bindefault <Tn_Default>, <Tn_bng.Tn_ct>

- 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

S dng DEFAULT v RULE (tt)


- To Rule
CREATE RULE <Tn_rule> AS <BT_iu_kin>

- Rng buc Rule vo ct


sp_bindrule < Tn_rule >, <Tn_bng.Tn_ct>

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

DROP DEFAULT NV_LUONG_DF

DROP RULE <Tn_rule>

DROP RULE R_LUONG


25

Ni dung chi tit


 Gii thiu
 nh ngha d liu
 Cp nht d liu
- Thm (insert)
- Xa (delete)
- Sa (update)

 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

 C php (thm 1 dng)


INSERT INTO <tn bng>[(<danh sch cc thuc tnh>)]
VALUES (<danh sch cc gi tr>)

27

V d
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)
VALUES (NNguyn, NTrng, NHa, 123)

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


VALUES ( NNguyn, NThanh, NTng, 333, NULL)

INSERT INTO NHANVIEN


VALUES (NTrn, NThanh, NTm, 453, 7/31/1962, NMai Th Lu, Nam,
25000,333,5)

28

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

29

Lnh INSERT (tt)


 C php (thm nhiu dng)
INSERT INTO <tn bng>[(<danh sch cc thuc tnh>)]
<cu truy vn con>

30

V d
CREATE TABLE THONGKE_PB (
TENPHG NVARCHAR(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

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

DELETE FROM NHANVIEN


WHERE MANV=333

DELETE FROM NHANVIEN

33

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
Khng cho xa
Xa lun nhng dng c gi tr ang tham chiu n
CASCADE

t NULL cho nhng gi tr tham chiu

34

Lnh DELETE (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

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

Lnh DELETE (tt)


TENPHG

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

[WHERE <iu kin>]

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

Ni dung chi tit







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

- Cho php 1 bng c nhiu dng trng nhau


- Bng l bag quan h l set

42

Truy vn c bn
 Gm 3 mnh

SELECT <danh sch cc ct>


FROM <danh sch cc bng>
WHERE <iu kin>

- <danh sch cc ct>


Tn cc ct cn c hin th trong kt qu truy vn

- <danh sch cc bng>


Tn cc bng lin quan n cu truy vn

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

SELECT MANV, HONV, TENLOT, TENNV


FROM NHANVIEN
WHERE PHG=5 AND PHAI=Nam

MANV

HONV

TENLOT

TENNV

333445555

Nguyen

Thanh

Tung

987987987

Nguyen

Manh

Hung

45

Mnh SELECT (tt)


Tn b danh

SELECT MANV, HONV AS HO, TENLOT AS TEN LOT, TENNV AS TEN


FROM NHANVIEN
WHERE PHG=5 AND PHAI=Nam

MANV

HO

TEN LOT

TEN

333445555

Nguyen

Thanh

Tung

987987987

Nguyen

Manh

Hung

46

Mnh SELECT (tt)


M rng

SELECT MANV, HONV + + TENLOT + + TENNV AS HO TEN


FROM NHANVIEN
WHERE PHG=5 AND PHAI=Nam

MANV

HO TEN

333445555

Nguyen Thanh Tung

987987987

Nguyen Manh Hung

47

Mnh SELECT (tt)


M rng

SELECT MANV, LUONG*1.1 AS LUONG10%


FROM NHANVIEN
WHERE PHG=5 AND PHAI=Nam

MANV

LUONG10%

333445555

33000

987987987

27500

48

Mnh SELECT (tt)


Loi b cc dng trng nhau

SELECT LUONG
DISTINCT LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=Nam

LUONG
30000
25000
25000
38000
38000

49

Mnh WHERE

SELECT MANV, TENNV

Biu thc lun l

FROM NHANVIEN, PHONGBAN


WHERE TENPHG=Nghien cuu AND PHG=MAPHG

TRUE

TRUE

50

Mnh WHERE (tt)


u tin

SELECT MANV, TENNV


FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=Nghien cuu OR TENPHG=Quan ly) AND PHG=MAPHG

51

Mnh WHERE (tt)


BETWEEN

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG>=20000 AND LUONG<=30000

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000

52

Mnh WHERE (tt)


NOT BETWEEN

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000

53

Mnh WHERE (tt)


LIKE

SELECT MANV, TENNV


FROM NHANVIEN
WHERE DCHI LIKE Nguyen _ _ _ _

SELECT MANV, TENNV

K t bt k

FROM NHANVIEN
WHERE DCHI LIKE Nguyen %

Chui bt k
54

Mnh WHERE (tt)


NOT LIKE

SELECT MANV, TENNV


FROM NHANVIEN
WHERE HONV LIKE Nguyen

SELECT MANV, TENNV


FROM NHANVIEN
WHERE HONV NOT NOT LIKE Nguyen

55

Mnh WHERE (tt)


Ngy gi

SELECT MANV, TENNV


FROM NHANVIEN
WHERE NGSINH BETWEEN 12/8/1955 AND 7/19/1966

56

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

57

Mnh FROM
Khng s dng mnh WHERE

SELECT MANV, MAPHG


FROM NHANVIEN, PHONGBAN
WHERE TRUE
MANV

MAPHG

333445555

333445555

333445555

987987987

987987987

987987987

58

Mnh FROM (tt)


Tn b danh

SELECT TENPHG, DIADIEM


FROM PHONGBAN
PHONGBAN,AS
DDIEM_PHG
PB, DDIEM_PHG AS DD
WHERE PB.MAPHG=DD.MAPHG
MAPHG=MAPHG

SELECT TENNV, NV.NGSINH,


NGSINH, TENTN,
TENTN,
NGSINH
TN.NGSINH
FROM NHANVIEN
NHANVIEN,NV,
THANNHAN
THANNHAN TN
WHERE MANV=MA_NVIEN

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>

- ASC: tng (mc nh)


- DESC: gim

60

Mnh ORDER BY (tt)


 V d
SELECT MA_NVIEN, SODA
FROM PHANCONG
ORDER BY MA_NVIEN DESC, SODA
MA_NVIEN

SODA

999887777

10

999887777

30

987987987

10

987987987

30

987654321

10

987654321

20

987654321

30

61

Ni dung chi tit







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

Php ton tp hp trong SQL


 SQL c ci t cc php ton
- Hi (UNION)
- Giao (INTERSECT)
- Tr (EXCEPT)

 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

Php ton tp hp trong SQL (tt)


 C php
SELECT <ds ct> FROM <ds bng> WHERE <iu kin>
UNION [ALL]
SELECT <ds ct> FROM <ds bng> WHERE <iu kin>
SELECT <ds ct> FROM <ds bng> WHERE <iu kin>
INTERSECT [ALL]
SELECT <ds ct> FROM <ds bng> WHERE <iu kin>
SELECT <ds ct> FROM <ds bng> WHERE <iu kin>
EXCEPT [ALL]
SELECT <ds ct> FROM <ds bng> WHERE <iu kin>
64

Php ton tp hp trong SQL (tt)


SELECT *

SELECT *

FROM NHANVIEN

FROM NHANVIEN

WHERE PHG = 4 AND PHAI=Nu

WHERE PHG = 4

UNION

INTERSECT

SELECT *

SELECT *

FROM NHANVIEN

FROM NHANVIEN

WHERE PHG = 5 AND PHAI=Nam

WHERE PHAI=Nam

SELECT * FROM NHANVIEN


EXCEPT
SELECT * FROM NHANVIEN
WHERE PHAI=Nam AND PHG = 4
65

Truy vn lng
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuu AND PHG=MAPHG

Cu truy vn cha
(Outer query)

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>

Cu truy vn con
(Subquery)

WHERE <iu kin>)

66

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
 Cc cu truy vn con trong cng mt mnh
WHERE c kt hp bng php ni logic
 Mnh WHERE ca cu truy vn cha
- <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
67

Truy vn lng (tt)


 C 2 loi truy vn lng
- Lng phn cp
Mnh WHERE ca truy vn con khng tham chiu n
thuc tnh ca cc quan h trong mnh FROM truy vn
cha
Khi thc hin, cu truy vn con s c thc hin trc

- Lng tng quan


Mnh WHERE ca truy vn con tham chiu t nht mt
thuc tnh ca cc quan h trong mnh FROM truy vn
cha
Khi thc hin, cu truy vn con s c thc hin nhiu ln,
mi ln tng ng vi mt b ca truy vn cha

68

V d - Lng phn cp
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=TP HCM AND PHG=MAPHG

SELECT MANV, TENNV


FROM NHANVIEN
WHERE PHG IN (1,
( 5)
SELECT MAPHG
FROM DIADIEM_PHG
WHERE DIADIEM=TP HCM )

69

V d - Lng tng quan


SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=Nghien cuu AND PHG=MAPHG

SELECT MANV, TENNV


FROM NHANVIEN
WHERE EXISTS (
SELECT *
FROM PHONGBAN
WHERE TENPHG=Nghien cuu AND PHG=MAPHG )

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

Ni dung chi tit







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>

 Sau khi gom nhm


- Mi nhm cc b s c cng gi tr ti cc thuc tnh
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

iu kin trn nhm


 C php
SELECT <danh sch cc ct>
FROM <danh sch cc bng>
WHERE <iu kin>
GROUP BY <danh sch cc ct gom nhm>
HAVING <iu kin trn nhm>

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

Ni dung chi tit







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

Mt s dng truy vn khc


 Truy vn con mnh FROM
 iu kin kt mnh FROM
- Php kt t nhin
- Php kt ngoI

 Cu trc CASE
 SELECT INTO

82

Truy vn con mnh FROM


 Kt qu tr v ca mt cu truy vn ph l mt bng
- Bng trung gian trong qu trnh truy vn
- Khng c lu tr tht s

 C php

SELECT <danh sch cc ct>


FROM R1, R2, (<truy vn con>) AS tn_bng
WHERE <iu kin>

 V d

SELECT MANV, TENNV


FROM NHANVIEN, (SELECT MAPHG
FROM PHONGBAN
WHERE TENPHG= Nghien cuu) AS B
WHERE PHG = MAPHG
83

iu kin kt mnh FROM


 Kt bng
SELECT <danh sch cc ct>
FROM R1 [INNER] JOIN R2 ON <biu thc>
WHERE <iu kin>

 V d
SELECT MANV, TENNV
FROM NHANVIEN INNER JOIN PHONGBAN ON PHG = MAPHG
WHERE TENPHG= Nghien cuu

84

iu kin kt mnh FROM


 Kt ngoi
SELECT <danh sch cc ct>
FROM R1 LEFT|RIGHT|FULL JOIN R2 ON <biu thc>
WHERE <iu kin>

 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>

[ELSE <biu thc>]


END

86

Cu trc CASE (tt)

SELECT MANV, TENNV , PHONG=


CASE PHG
WHEN 1 THEN N'MT'
WHEN 2 THEN N'HAI'
WHEN 3 THEN N'BA'
WHEN 4 THEN N'BN'
WHEN 5 THEN N'NM'
END
FROM NHANVIEN

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>]

 V d: to bng gm nhng nhn vin nam


SELECT *
INTO NHANVIEN_NAM
FROM NHANVIEN
WHERE PHAI=NAM
88

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

Ni dung chi tit


 Gii thiu
 nh ngha d liu
- Kiu d liu
- Cc lnh nh ngha d liu

 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

Power(X,Y) Tnh X ly tha Y

Select Power(2,5)

32

Round(X,n) Lm trn X cn n s l

Round(123.4567,2)

Square(X)

Tnh bnh phng ca X

Square(5)

25

SQRT(X)

Tnh cn bc 2 ca X

SQRT(16)

Sum(ct)

Tnh tng ct

Sum(luong)

Count(ct)

m s phn t khc Null

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)

Tnh trung bnh 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)

Chuyn S sang ch thng

Lower(abcXYZ)

abcxyz

Upper(S)

Chuyn S sang ch hoa

Upper(abcXYZ)

ABCXYZ

LTrim(S)

Ct khong trng bn tri

LTrim( abc)

abc

Rtrim(S)

Ct khong trng bn phi

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)

Thay tt c S2 trong S1 bng Replace


S3
(ababc,ab,xy)

Reverse(S) Tr v chui o ngc S

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

Ngy trong thng

MM

1-12

Thng trong nm

QQ

1-4

Qu trong nm

DW

1-7 (Sun-Sat)

Th trong tun

YY

1753-9999

Nm

94

Hm ngy thng (tt)


Hm

Din gii

V d

Kt qu
2007-06-18
08:34:44.107

GetDate()

Tr v ngy gi
hin hnh

Select GetDate()

Day(date)

Trch phn ngy

Day(GetDate())

Month(date)

Trch phn thng Month(Getdate())

Year(date)

Trch phn nm

Year(GetDate())

DatePart
(DatePart,date)

Trch DatePart
ca date

DatePart(mm,
GetDate())

DateAdd
(DatePart, n,date)

Thm n DatePart DateAdd (dd,-2,


vo date
Getdate())

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

You might also like