You are on page 1of 20

SQL- N hng k i n th c c bn

GII THIU
Ngn n g tru y v n c c u tr c (SQL) l m t ngn c s d li u (CSDL) ch u n cng
n g h i p c cng c q u n tr d i u c a M ic ro s o ft (M ic ro s o ft je t database engine) s
d n g . SQL c s d n g t o nhng i t n g tr y v n (Q ueryD ef objects), n h l
i s cho p h n g th c m t p h p b n g hi (O penR ecordset m ethod), v l th u c tnh
n g u n b n ghi (R ecordS ource property) c u a i u k h i n d li u (data co ntrol). N cng c
th c dung v i n h ng p h n g th c th i hnh (Execute m ethod) tr c tie p t o v
th ao t c ... (jet databases), v t o ra cc SQL P assT hrough tru y v n thao tc trn cc
CSDL khch c h t xa (rem ote clie n tise rv r databases).
C h n g ny s bn t i c u tr c c bn c a SQL, v cch th c s d n g n cho v i c t o ,
b o tr v s a i CSDL. C hng ta cng ni t i s xy d ng v c ng d n g c a tru v n
SQL t o cc i t n g t p h p bn ghi (R ecordset objects), v ch n , s p x p , l c
v c p n h t d li u tro n g nh ng bng c s . H n na, c h n g ny s xm xt cch th c
t i ho tru y v n SQL v m t t c v h i u q u . C u i cng chung ta bn t i s khc
nhau g i a M icro so ft Je t SQL v ANSI SQL m t cch c th
SQL L G ?

SQL l m t ngn n g l p trn h v CSDL c n g u n g c lin quan m t th i t t i s pht


m inh ra m hnh CSDL quan h c a E.F.Codd vo u n h ng nm 70. T in th n c a SQL
l ngn n g Sequel, v v l do ny SQL v n th n g c pht m l sequel h n l
ess cue e ll , m c d u c hai cch pht m u c c h p n h n.
SQL ngy nay pht tri n r n g v tr thnh m t ngn n g c h u n ch o CSDL quan h, v
c n h ngha b i ch u n ANSI. Hu h t cc ban th i hnh c a SQL c h l s b i n i
n h t SQL ch u n , bao g m c phin b n c Jet database engine h tr . N hng s
khc nhau ny s c n h c t i cu i c h n g , n h u n g hu h t cc c u tr c v cc ch c
nng c a ngn n g l n h t qun i v i cc nh pht tri n cc h q u n tr CSDL. Nu
bn s d n g b t c bn th i hnh no c a SQL, bn s th y khng kh khn m y khi
ch u y n sang M icro so ft Je t SQL.
SQL vs. N avigation

N h c p tro n g p h n u ti li u , M irc o s o ft Je t database engine cung c p hai


p h n g th c tch b i t hon t t hu h t cc tc v CSDL:
- M t m hnh i u h n g d a trn c s d c h c h u y n qua l i g i a cc bn ghi.
- M t m hnh quan h d a trn tru y vn h i c c u tr c (SQL).
M hnh i u h n g bao g m nh ng th u c tn h v p h n g th c c m t tro n g T o
v s a i CSDL ( C reating and M odifying D atabases ) va Thao tc v i bn g hi v
tr n g ( W o rkin g w ith R ecords and F ie ld s ). M hnh quan h c ni bn t i tro n g
c h n g ny.
N hng l p trn h vin khng quen th u c v i nh ng h q u n tr c s d li u h n g file
n h dBSE, Foxpro, v Paradox c th c m th y d c h u khi b t u v i cc p h n g
th c i u h n g c th o lu n tron g c h n g tr c . Tuy nhin, tro n g hu h e t cc
tr n g h p n h ng p h n g th c SQL v i vai tr t n g n g t ra h i u q h n, v ni

chung ch n g nn c dng cho nh ng n i tn h h i u q u c xem l quan tr n g hn


c. H n na SQL c m t l i i m l m t giao ti p m c c h u a n cng n g h i p v CSDL,
th nn m t s h i u b i t v cc ln h SQL cho phep b n tru y c p v th ao tc v i m t
d i n r n g cc s n p hm CSDL t cc nh pht trie n khc nhau.

CC THNH PHN CA SQL


Ngn n g SQL bao g m cc l n h , cc m nh , cc ton t , v cc hm t n g h p (hm
nhm - aggregate fu n ctio n s). N hng thnh ph n ny c k t h p vo tron g cc pht
b i u (statem ents) dng t o , c p nht, va th ao tc trn CSDL. N hng m c sau s m
t n h ng thnh t m t cch ng n g n , v p h n cn l i c a c h n g ny s a ra cho
bn n h ng v d c th v cng dn g c a chng.
Ch : N hng m c sau s n h ng ln h v t kho c dng th n g xuyn n h t, nh ng
khng p h i ta t c . c m t thm kho hon ch n h v danh sch cc t kho SQL, hy
tm kie m SQ L tro n g B o oks O nline.
1.Lnh SQL:
G i ng n h m hnh i u h n g c a DAO (Data A ccess O bject), SQL cung c p c hai
phn ngn n g n h n g h a d li u (DDL - Data D efin ition Language) v ngn n g thao
t c d li u (DML - Data M anipulation Language). T u y c vi p h n tr n g lp, n h u n g n h n g
cu l n h DDL cho php b n t o v n h n g h ia cc CSDL, cac tr n g , cc ch m c m i,
tro n g khi nh ng cu l n h DML bn xy d n g cc tru y v n , s p x e p , lc, v trch d
li u t tro n g CSDL.
DDL
Cc cu l n h DDL tro n g SQL l b i u th c c xy d n g chung quanh nh ng m nh
sau:
CREATE Dng t o m i cc b n g, cc tr n g v cc c h m c.
DROP Dng xo cc bn g v ch m c k h i CSDL.
ALTER Dng s a i cc b n g bng cch thm tr n g , th ay i n h ngha c a cc
tr n g .
DML
Cc cu l n h DML l cc b i u th c c xy d ng d a trn cc m n h sau:
SELECT Dng tru y v n CSDL l y c n h ng b n ghi th o m n nh ng tiu ch u n
no .
INSERT Dng chn m t nhm d li u vo CSDL th n g qua m t thao tc.
UPDATE Dng th ay i gi tr c a n h ng tr n g , n h ng b n ghi c th.
DELETE Dng lo i b n h ng b n ghi ra k h i CSDL.
2.M nh SQL:
M nh l n h ng i u ki n th ay i c dng xc n h d li u b n m un ch n ,
m u n th ao tc. B ng sau li t k nh ng m n h bn c th dng.
FROM L i t k danh sch cc bn g m ta c n l y cc b n ghi t .
WHERE Xc n h cc i u ki n m bn ghi c c h n p h a i p ng c.
GROUP BY Dng nhm cc b n ghi c ch n thnh cc nhm ring bit.
HAVING Dng a ra i u ki n cho m i nhm .
ORDER BY Dung s p x p cc bn g hi c c h th e o m t th t no .

3.N hng ton hn g SQL:


C hai lo i ton hn g tro n g SQL: ton hn g lo g ic v to n hn g so snh.
Ton h n g lo g ic:
Ton h n g lo g ic c dng n i cc b i u th c , th n g l tro n g p hm vi c a m n h
WHERE. V d nh:
SELECT * FROM M Y_TABLE WHERE C o n d itio n l AND C onition2;
N hng to n t lo g ic bao g m : AND, OR, NOT
Ton h n g so snh:
Ton h n g so snh c dng so snh t n g i gi tr hai b i u th c xc n h
n h ng h o t n g no s c th c hin. V d :
SELECT * FROM P u blish ers WHERE PubID = 5;
N hng to n t so snh bao gm :
< b h n
<= b h n h o c bng
> l n h n
>= l n h n h o c bng
= bng
<> khc

4.Hm t n g h p
(aggregate fu n ctio n s)
Hm t n g h p (hm nhm ) c dng tro n g p h m vi c a m n h SELECT trn m t
nhm b n ghi tr l i m t gi tr. v d , ham VG c th tr l i g i t r trun g bnh c a
t t c cc g i tr tro n g m t tr n g c th . B ng sau li t k danh sch cc hm t n g h p.
AVG T r l i gi tr tru n g bnh tro n g m t tr n g . COUNT T r l i s b n ghi c ch n .
SUM Hm tn h t n g cc g i tr tro n g m t tr n g c th .
MAX Hm tr v gi t r c c i c a tr n g .
MIN Hm tr v g i tr c c ti u c a tr n g
NHNG THAO TC DLL

DDL bao g m m t s l n h b n c th dng t o b n g v c h m c, v sa i cc bng


b n g cch thm h o c lo i b cc c t h o c c h m c. N hng cu l n h n h n g h a d li u
c th ch c dng v i Je t database; C hng khong c h tr cho b t cuf CSDL nh
d n g ngoi.
Ch : dng cu l n h DDL, h o c b t c tru y v n no khng tr l i t p b n ghi, hy
ng n g o c kp v s d n g chng n h l i s c a cc p h n g th c th i hnh c a
CSDL hay i t n g tru y v n (Q ueryDef o bject) n h tro n g v d sau:

M yDB.Execute CREATE TAB LE Em ployees ([F irs t Name] TEXT, [L a st

Name] TEXT) ;

dng b t c m t cu l n h no tr l i cc b n ghi (n h SELECT), dng b i u th c n h


l i s o n g u n c a p h n g th c m t p b n ghi (O penR ecordset m ethod), n h tro n g v
d sau:
M yD B .O penR ecordset ( SELECT * FROM T itle s WHERE A u _ID = 5 , _ dbO penD ynaset);
1.To m t b n g:
t o m t b n g tro n g CSDL, dng cu l n h CREATE TABLE. M t cu lnh hon ch nh
n h n cc i s l tn b n g, tn cac tr n g , k i u d li u c a cc tr n g v r n g c a
cc tr n g .
V d sau t o m t b n g c tn l E m ployees , c hai tr n g k i u TEXT v i r n g l
25:
CREATE TAB LE Em ployees ([F irs t Name] TEXT(25), [L ast Name] TEXT(25));
Thm v xo c t:
B n c th thm , s a i h o c xo cc c t v i cu l n h ALTER TABLE. V d , cu ln h
su thm m t tr n g k i u TEXT c rn g 25 v t r l N otes vo bng Em ployees:
ALTER TAB LE Em ployees ADD COLUMN N otes TEXT(25);
lo i b m t c t, dng t kho DROP. V d ny lo i b c t c tn l N otes m i v a
c thm lc ny:
ALTER TAB LE Em ployees DROP COLUMN Notes;
s a i m t tr n g , tr c ti n bn p h i xo n, v sau l thm tr n g m i v i tn
n h c. V d sau tng r n g c a tr n g N otes :
ALTER TAB LE Em ployees DROP COLUMN Notes;
ALTER TAB LE Em ployees ADD COLUMN N otes TEXT(30);
Ch : Dng ALTER TABLE, bn ch c th thm h o c xo m t tr n g t i m i th i i m .
2.To v xo ch m c:
C ba cch khc nhau t o ch m c:
- Lc b t u t o b n g v i cu lnh CREATE TABLE
- V i cu l n h CREATE INDEX.
- V i cu l n h ALTER TABLE
M c d u c ba cch ny u cho k t q u t a n g t , nh ng v n c n h ng khc i m khc
nhau. N u b n m u n thm m t kho n g o i (fore ig n key) va p b u c ton v n tham c h i u
(enfore referential in te g rity), b n phi dng m t m n h rng b u c (CONSTRAINT
clause) tro n g cc cu n ii CREATE TABLE h o c ALTER TABLE.

i khi n g i ta m un t o m t b n g ban u khng c c h m c, v ti p l th i t k


cc tham s ch m c sa khi dng m u b n g, v i tn h h u n g ny, b n nn dng CREATE
TAB LE t o m u b n g khng co ch m c, v sau thm cc c h m c v i cu l n h
CREATE INDEX h o c ALTER TABLE.

T o m t c h i m c v i cu l n h CREATE TABLE.

Khi b n t o m t bng, b n c th t o m t c h m c cho t n g c t ring r, h o c hai h o c


n h i u h ii cc c t, dung m nh SQL CONSTRAINT (t kho CONSTRAINT b t u n h
ngh a m t ch s). V d sau y m inh h o cch t o ra m t bn g v i ba tr n g c c h
m c:
CREATE TAB LE Em ployees ([F irs t Name] TEXT(25), [L ast Name] TEXT(25), _ [Date o f
B irth ] DATETIME, CONSTRAINT E m ployeeslndex UNIQUE _ ([F irs t Name], [L ast Name],
[Date o f B irth]));
nh ch m c v i m t c t, bn t m nh CONSTRAINT vo m t tron g nh ng m
t c t. V d , nh c li m c tr n g Date o f B irth , b n dng cu linh CREATE
T A B LE sau y:
CREATE TAB LE Em ployees ([F irs t Name] TEXT(25), [L ast Name] TEXT(25),
B irth ] DATETIME CONSTRAINT E m ployeeslndex PRIMARY);

[Date o f

S khc nhau g i a nh ch m c ch n h i u tr n g v ch o m t tr n g l: cho m t


tr n g n , t kho CONSTRAINT b t u n h ngh a c h m c khng b tch b i t v i
tr n g c u i cng b i d u p h y m i s t ngay sau k i u d li u c a tr n g c nh
ch m c .
T o ch m c v i cu l n h CREATE INDEX.
B n cng c th dng m nh CREATE INDEX thm m t c h m c. V d sau y a
ra cng m t k t q u v i v d tr c , n g o i tr v i c dng CREATE TAB LE thay th cho
ALTER TABLE.
CREATE UNIQUE INDEX M ylndex ON Em ployees ([Date o f B irth ]);
Trong m n h tu ch n WITH, bn c th p b u c d li u v i rng b u c PRIMARY, c
ngh a l tr n g ch m c chnh; DISALLOW NL, n gh a l tr n g n khng b b o
tr n g ; IGNORE NULL, c ngh a b n ghi s khng c nh c h m c nu tr n g
tro n g .
V d sau thm m nh WITH vo v d tr c , cho khng b n g hi no c th c
th n i vo b n g m c t s b o h i m x h i b b tr n g :
CREATE UNIQUE INDEX M ylndex ON Em ployees (S S N )_W IT H DISALLOW NULL;
Ch : K hng dng t kho PRIMARY khi b n t o ra m t c h m c m i tro n g bn g m
b n g to n t i kho chnh (Prim ary key); N eu b n vi p h m i u ny th h th o n g s
bo l i.
B n ang dng CREATE INDEX t o m t c t ch m c trn m t b n g m ch a t n
t i ch m c no. e t o m t c h m c n h th ; b n khng c n s cho php h o c tru y c p
t i m t m y c h xa, v CSDL x khng n h n b i t c hay khng h nh h n g b i
ch m c . B n dng cng m t c php cho bn g k t n i v bng g c. iu ny c
hu d n g khi t o m t ch m c trn m t b n g th n g l c h c (read only) b i v n
th i u m t ch m c.
T a o m t ch m u c v i cu l n h ALTER TABLE

B n cng c th them m t ch m c cho m t bn g t n t i b n g cch dng cu l n h


ALTER TABLE, dng c php ADD CONSTRAINT. V d sau thm m t c h m c cho tr n g
SSN :
ALTER TAB LE Em ployees ADD CONSTRAINT M y ln d e x _ PRIMARY (SSN);

B n cng c th thm ch m c cho n h i u tr n g v m t b n g b n g cch dng cu l n h


ALTER TAB LE g i n g n h sa:
ALTER TAB LE Em ployees ADD CONSTRAINT N am elndex _ UNIQUE ([La st Name], [F irs t
Name], SSN);
M nh CONSTRAINT v ton v n tham c h i u (R eferential Integrity).
M t rng b u c l m t ch m c. B n dng m nh CONSTRAINT t o hoc xo cc
ch m c v i cc cu l n h CREATE TABLE v ALTER TABLE, n h c li ra p h n tr c .
M nh CONSTRAINT cng cho php b n n h n gh a kho chnh v kho n g o i, n h
ngh a cc quan h v p b u c ton vn tham c h i u .
b i t thm th n g tin v quan h v ton v n tham c h i u , hy xem c u n T o v s a
i CSDL ( C reating and M od ifyin g D atabases ).
C hai lo i m nh CONSTRAINT: M t t o c h m c cho t n g tr n g n v m t
t o ch m c cho n h i u h n m t tr n g .
C php c a ch m c trn m t tr n g l:
CONSTRAINT name {PRIM ARY KEY I UNIQUE I REFERENCES fo re ig n ta b le [(fo re g in fie ld l,
fo re ig n fie ld 2 )]}
C php cho ch m c trn n h i u tr n g l:
CONSTRAINT name {PRIM ARY KEY (p rim a ry l[,p rim a ry 2 [,.,.]]) I UNIQUE
(u n iq u e l[,u n iq u e 2 [,...]]) I FOREIGN KEY (re fl[,re f2 [,...]]) REFERENCES foreigntable
[(fo re ig n fie ld l[,fo re ig n fie ld 2 [,...]])};
Sau y l cc i s p d n g ch o hai lo i trn:
name : Tn c a ch m c c t o .
p rim a ry l, prim ary2 : Tn c a tr n g hay cc tr n g c c h n h lm kho chnh,
n iq u e l, u n iq u e i : Tn c a tr n g hay cc tr n g c c h n h lm kho khng lp .
r e fl, ref2 : Tn c a tr n g h o c cac tr n g kho ngoi tham c h i u t i m t tr n g , m t
s tr n g bn g khc.
fo re ig n ta b le Tn c a b n g ngoi cha m t h o c m t s tr n g c xc n h b i
fo re ig n fie ld .
fo re ig n fie ld l, fo re ig n fie ld 2 : Tn c a tr n g h o c m t s tr n g tro n g bng ngoi c
xc n h b i r e fl, ref2.
Dng CONSTRAINT, bn c th gn cho m t tr n g n h m t tro n g n h ng lo i c h m c
sau:
- UNIQUE - C h n h tr n g m t tr n g c g i t r khng l p . i u ny c ngha l hai bn

ghi b t k tro n g bn g khng c cng gi t r tro n g tr n g ny. B n c th rng b u c b t


k tr n g no h o c m t danh sch cc tr n g l d uy duy n h t (unique). Nu n h i u
tr n g c ch n h l khng lp , b gi t r k t h p c a cc tr n g ph i l d uy nht,

du l hai lioc mt s bn ghi CO cng gi tr trong mt trng ca nhm cc trng


.
- PRIMARY KEY - C h n h m t h o c m t t p cc tr n g tro n g b n g t o thnh kho
chnh. T t c gi tr tro n g kho chnh p h i d uy n h t, v c m t kho chnh d u y n h t cho
m t bn g. Nu bn th i t l p m t khoa chnh cho m t b n g t n t i kho chnh th h
th o n g s bo l i.
- FOREIGN KEY - Xc n h m t tr n g n h m t kho ngoi. N u kho chnh c a bng
ngoi c n h i u h n m t tr n g , bn p h i dng m t n h n g h a ch o c h m c n h i u
tr n g , li t k t t c cc tr n g tham c h i u , tn c a cc bn g, tn c a bng ngoi, v
tn c a cc tr n g c tham c h i u tro n g b n g ngoi th eo cung m t th t n h li t
k danh sch cc tr n g tham ch i u . N u tr n g c tham c h i u l kho chnh c a
b n g ngoi, b n khng c n ch n h tr n g c tham c h i u m Je t engine ng m
n h kho chnh c a ban g ngoi l tr n g c tham c h i u .
V d , thm m t ch m c cho bng T itles tro n g CSDL B ib lio .m db , b n c th dng cu
l n h sau y:
ALTER TAB LE T itle s ADD CONSTRAINT M ylndex _ FOREIGN KEY (PubID) REFERENCES
P u blish ers (PubID);
N h r n g , bn g cch dng t kho FOREIGN KEY, C hng ta ang th i t lp m t quan h
g i a tr n g PublD c a b n g T itles (kho ngoi) v tr n g PublD tro n g bang P u blish ers
(kho chnh). M i quan h ny s c rng b u c b i Jet engine, n h th bn ang dng
p h n g th c C reateR elation c m t tro n g "T o v s a i CSDL"
PHN NGN NG THAO TC TRN D LIU - DML

Phn ngn n g th ao t c trn d li u (DML - Data M an ip u la tion Languague) c dng


l y cc b n g hi tro n g cc b n g, c p nht, thm , xo cc bn ghi c u a cc bng. C m t
s o cu l n h h tr cac tc v ny, nh ng p h n l n l c c u tr c c a cu l n h SELECT.
T ru y v n ch n :
S d n g cu l n h SELECT l y cc b n ghi t CSDL n h m t t p h p cc bn ghi, lu
tr ch n g tro n g m t i t n g t p bn ghi m i (R ecordset object), ng d n g c a b n c
th th ao tc trn t p b n qhi ny n h h i n th , thm , th ay i v xo n u cn th i t, ng
d n g c a b n cng c th e h i n th , sinh cc bo co t d li u .
SELECT th n g l t u tin tro n g m t cu l n h SQL. H u h t cc cu ln h h o c l
SELECT h o c la SELECT...INTO. B n CO th dung m t cu l n h SELECT tron g SQL l
th u c tn h c a i t n g tru y v n (Q ueryDef object), l th u c tnh R ecordSource c a m t
i u kh i n d li u (data c o n tro l), hoc m t i s cho p h n g th c O penR ecordset. cu
l n h SELECT khong th ay i d li u tro n g CSDL; chng c h la y d li u ra t CSDL.
D ng t n g qut c a cu l n h SELECT l:
SELECT fie ld lis t
FROM tablenam es IN databasenam e
WHETE se a rch co n d itio n s

GROUP BY fie ld lis t


HAVING g ro up c rite ria
ORDER BY fie ld lis t
WITH OWNERACCESS OPTION
M i p h n tro n g cu l n h i d i n cho m t m nh c bn n cc phn sau:
T ru y v n n g i n :
D ng n g i n n h t c a cu l n h SELECT l:
SLECT * FROM tablenam e;
V d , tru y v n ch n sau tr l i t t c cc c t c a t t c cc b n ghi tron g bng
Em ployees:
SELECT * FROM Em ployees;
D u sao cho b i t r n g t t c cc tr n g c a b n g c c h n . B n cng c th c h n h
m t s tr n g n h t n h . Khi h i n th , d li u tro n g m i c t s h i n th eo th t n h
chng c li t k, v v y b n c th th a y i l i th t cho d c :
SELECT [F irs t Name], [L a st Name] FROM Em ployees;
C h n h n g u n d li u c ch n :
M t cu l n h SELECT lun c m n h FROM, cho b i t danh sch cc bng ta c n l y
cc b n ghi t .
N u m t tr n g t n t i tro n g n h i u bng tro n g m n h FROM, t tr c ch n g tn
tr n g v d u ch m . Trong v d sau, tr n g D epartm ent c tro n g c hai bng
Em ployees v S u pe rviso rs. Cu i n h c h c h n tr n g D epartm ent c a bng Em ployees
v SupvNam e t bn g S u pe rviso rs:
SELECT Em ployees. D epartm ent, SupvName FROM Em ployees, S upe rviso rs _ WHERE
E m ployees.D epartm ent = S upervisors.D epartm ent;
Khi m n h FROM li t k n h i u hn m t b n g, th t c a chng khng quan tr n g .
Xc n h m t b n g t m t CSDL bn ngoi.
i khi, bn c n th i t thm c h i u t i m t b n g c a m t CSDL bn ngoi m cng c
q u n tr CSDL (M icro so ft Je t database engine) c th k t n i t i, n h C S D L dBASE,
Paradox h o c m t Je t database bn ngoi. B n c th lm i u ny b n g m nh tu
ch n IN. M nh IN th n g x u t hi n sau tn bn g tro n g m nh FROM, n h ng cng
c th c dng tro n g SELECT INTO h o c INSERT INTO, khi ch l m t CSDL ngoi.
Ch : B n ch c th IN k t n i m t CSDL ngoi t i m t th i i m .
T ro n g m t s tr n g h p , i s n g d n c p t i c th m c c h a CSDL. V d ,
khi lm v i c v i dBASE, F oxpro, hoc Paradox, tham s n g d n c h ra cc th m c
ch a cc file c u i .DBF h o c .DB. Tn b n g c b t n g u n t ch hoc b i u th c
bng.
xc n h khng p h i l m t Je t database, thm d u ch m p h y v sau tn, v ng l i
b n g d u trch n h o c d u n g o c kp. V d :
dBASE IV ;
B n cng c th dng t kho DATABASE c h n h CSDL ngoi. V d , c hai dng

sau ch ra cng m t b n g;
SELECT * FROM Table IN

[dBASE IV; _ D ATABASE=C:\DBASE\DATA\SALES;];

SELECT * FROM Table IN C:\DBASE1DATA\SALES _ dBASE IV ;


Ch : nng h i u q u v d s d n g, th n g n g i ta dng bng k t n i th ay cho
m n h IN.
b i t thm th n g tin v bn g k t ni, xem cu n W o rkin g w ith R ecords and F ie ld s v
cu n A cce ssing External Data".
B i t danh c a c t.
Khi i t n g R ecordset c t o ra t cu l n h SELECT, tn c t c a bng t r thnh tn
tr n g c o i t n g R ecordset. Nu bn m n tn khc i, dng m nh e AS. V d
sau dung D O B l b i t danh c a tr n g [Date o f B irth ] tro n g bng Em ployees: SELECT
[Date o f B irth ] AS DOB FROM Em ployees;
B t c khi no bn dng tru y v n tr l i tn tr n g n h p n h n g h o c trn g tn tr n g ,
bn p h i dng m n h e AS cu ng c a p tn khc nhau cho cc tr n g . V d sau dng
b danh Head C o u n t gn k t qu m tro n g t p b n ghi:
SELECT COUNT(Em ployeelD) AS [Head C ount] FROM Em ployees;
S d n g b i n V isual B asic tro n g cu l n h SQL
Trong m t ch n g trn h Visual Basic, b n c th t o m t cu l n h SELECT tro n g ng
d u n g c b n b n g cch ghp cc bi n c c b v tro n g m t cu l n h khi c n ch on ,
s p x p , l c d li u c yu c u bi ng d n g c a b n . Vi d bn c m t i u k h i n
T extB o x (TitleW anted) ch a tn c a m t tiu v b n m u n l y t t c cc sch tro n g
b n g T itles c nhan n h nhan tr n g h p TextB ox, b n c th t o m t cu ln h
SQL bao g m c g i tr h i n th i c a h p TextB ox. N hu ng n h rn g SQL ng
T itleW anted tro n g m t d trch n ("):
Set R st = D b.O penR ecordset( SELECT * FROM T itle s _ & WHERE T itle =
TitleW anted.T ext &

&

l.L c v s p x p k t q u c a tru y v n:
SQL cung c a p m t s t kha xc nhn v m nh tu c h n g i p b n th u n ti n hn
tro n g v i c h n c h v s p x p k t qu. P hn sau s th o lu n v s ti n d n g ny.
C h d n DISTINCT
b qua cc bn ghi tr n g nhau, dng t kho DISTINCT. N u c dng, g i t r tro n g
tr n g hay m t nhm cc tr n g c c h n tro n g cu l n h SELECT s l d uy n h t. V
d , C m t vi nhn vin li t k trong b n g E m ployees c c ng h. N u hi b n ghi c
cung n i dung tr n g L a st Name la S m ith th cu l n h sau s e tr l i m t b n ghi c n i
dung l S m ith:
SELECT DISTINCT [L a st Name] FROM Em ployees;
N u b t kho DISTINCT th tru y vn s tr l i n h i u h n m t g i t r Sm ith.
K t q u t p h p b n ghi c a tru y v n dng DISTINCT khng cho php cp n h t v
khng p h n rih c n h ng th y i sau c a n g i dng khc.

C h d n TOP
tr l i m t s b n ghi n h t n h u h o c c u i c a p hm v i cc bn ghi. Dng
ch d n TOP. G i s b n m u n la y tn c a 25 sinh vin u c a l p t t n g h i p nm
1994:
SELECT TOP 25 [F irs t Name], [L a st Name] FROM S tudents _ WHERE [G raduation Year] =
1994 _ ORDER BY [Grade P o int Average] DESC;
N u bn khng dng m n h ORDER BY, tru y v n s tr l i 25 bn ghi tu tro n g bng
S tudents th o mn i u k i n tro n g m nh WHERE.
B t c khi no bn dng tru y v n tr l i tn tr n g n h p n h n g h o c trn g tn tr n g ,
bn p h i dng m n h e AS cung c a p tn khc nhau cho cc tr n g . V d sau dng
b danh Head C o u n t gn k t qu m tro n g t p b n ghi:
SELECT COUNT(Em ployeelD) AS [Head C ount] FROM Em ployees;
S d n g b i n Visual B asic tro n g cu l n h SQL
Trong m t ch n g trn h Visual Basic, b n c th t o m t cu l n h SELECT tro n g ng
d n g c b n b n g cch ghp cc bi n c c b v tro n g m t cu l n h khi c n ch on ,
s p x p, l c d li u c yu c u bi ng d n g c a bn. VI d bn c m t i u k h i n
T extB o x (TitleW anted) ch a tn c a m t tiu v b n m u n l y t t c cc sch tro n g
b n g T itles c nhan n h nhan trn g h p TextB ox, b n c th t o m t cu ln h
SQL bao g m c gi tr h i n th i c a h p TextB ox. N hng n h rn g SQL ng
T itleW anted tro n g m t d u trch n ("):
Set Rst = D b.O penR ecordset( SELECT * FROM T itle s _ & WHERE T itle =
TitleW anted.T ext & .... )

&

l.L c v s p x p k t q u c a tru y v n:
SQL cung c a p m t s t kha xc nhn v m nh tu ch n g i p b n th u n ti n hn
tr n g v i c h n c h v s p x p k t qu. P hn sau s th o l n v s ti n d n g ny.
C h d n DISTINCT
b qua cc bn ghi tr n g nhau, dng t kho DISTINCT. N u c dng, g i t r tro n g
tr n g hay m t nhm cc tr n g c c h n tro n g cu l n h SELECT s l d uy n h t. V
d , C m t vi nhn vin li t k tro n g b n g E m ployees c cng h. N u hai bn g hi c
cung n i dung tr n g Last Name la S m ith th c l n h sau s e tr l i m t b n ghi c n i
dung l S m ith:
SELECT DISTINCT [L a st Name] FROM Em ployees;
N u b t kho DISTINCT th tru y vn s tr l i n h i u h n m t g i t r Sm ith.
K t q u t p h p b n ghi c a tru y vn dng DISTINCT khng cho php cp n h t v
khng p h n nh c n h ng th ay i sau c a n g i dng khc.
C h d n TOP
tr l i m t s bn g hi n h t n h u h o c c u i c a p hm vi cc bn ghi. Dng
ch d n TOP. G i s b n m u n l y tn c a 25 sinh vin u c a l p t t n g h i p nm
1994:

SELECT TOP 25 [F irs t Name], [L a st Name] FROM S tud en ts _ WHERE [G raduation Year] =
1994 _ ORDER BY [Grade P o int Average] DESC;
N u bn khng dng m n h ORDER BY, tru y v n s tr l i 25 bn ghi tu tro n g bng
S tudents th o mn i u k i n tro n g m nh WHERE.
C h d n TOP khng ch n l a g i a nhng b n ghi b n g nhau. T ro n g v d , n u bn ghi
th 25 v th 26 c cng hn g th tru y v a n s tr l i 26 bn ghi.
B n cng c th dng t kho PERCENT tr l i m t s p h n trm b n g hi u hay
c u i tu th u c vo m n h ORDER BY. Gi s r n g th ay VI 25 sinh vin, bn m u n 10
p h n trm sin h vin c a l p .
SELECT TOP 10 PERCENT [F irs t Name], [L a st Name] FROM S tud en ts _ WHERE
[G raduation Year] = 1994 ORDER BY [Grade P o in t Average] DESC;
M nh WHERE
M nh WHERE xc n h nh ng bn ghi t cc b n g c Ht k tro n g m nh FROM
M ic ro s o ft J e t Database engine ch n cc bn ghi th o mn i u ki n li t k tro n g m nh
WHERE. N u b n khng c m n h WHERE, tru y v n s tr l i t t c cc dng t
cc b n g c ch n . N u b n ch ra h n m t bn g tro n g tru y v n v khng c m n h
WHERE h o c m n h k t n i JOIN, tru y v n c a b n s tr l i k t q u tch cc c a
cc bng.
Ch : M c d m n h WHERE c th m n h n tc v k t n i cc bng, n h ng bn
p h i dng m t m nh JOIN th c h i n cc th ao tc k t n i n h i u bng v i nhau nu
b n m u n k t q ua c a tru y v n c th c p n h t c.
M nh WHERE t n g t n h HAVING. WHERE xc n h n h ng bn ghi c ch n .
M t cch t n g t , m t khi cc b n ghi c nhm b i GROUP BY, HAVING s q u y t
n h n h ng b n ghi no c h i n th .
Dng m n h WHERE lo i b cc bn ghi b n khng m u n nhm b i GROUP BY.
M t m nh WHERE c th c t i 40 b i u th c c k t n i b i cc ton t lo g ic n h
AND, R.
Khi b n dng m t tr n g tn c cha d u cch h o c d u cu, bn p h i b tn tr n g
trong d u n g o c vu n g ():
SELECT [P ro d u ct ID], [U n its In s to c k ] _ FROM P ro d u cts
[R eorder Level];

WHERE [U n its In s to c k ] <=

Khi b n xc n h i s i u ki n , ngy p h i n h d n g th eo d n g c a M, ngay c khi


bn khng dng phin bn Je t database c a lyi. V d , May 10,1994, c v ie t l 10/5/94
theo k i u Anh va 5/10/94 th eo ki u M. c h c ch n , c n t ngy c a bn vo tro n g
c p d u thng (#), n h v d sau y:
tm cc b n ghi c ngy May 10,1994 tro n g m t CSDL Anh, b n p h i dng cu ln h
sau y:
SELECT * FROM O rders _ WHERE [Shipped Date] = #5/10/94#;

B n c th dng hm DateValue, n nhn b i t c m i n h d n g c th i t l p b i


M ic ro s o ft W indow s. V d , m sau cho ch u n ngy M :
SELECT * FROM O rders _ WHERE [Shipped Date] = D ateValue(5/10/94);
M sau dng cho A nh:
SELECT * FROM O rders _ WHERE [Shipped Date] = D ateValue(10/5/94);
M nh GROUP BY:
GROUP BY l m nh tu ch n cho php k t h p cc b n ghi th e o m t gi tr g i n g h t
nhau c a m t tr n g tr n g xc n h vo tro n g m t b n ghi d u y n h t. Gi t r to n g h p
c t o ra cho m i bn ghi n u tron g cu l n h SQL c ch a ham t n g hp (aggregate
fu n ctio n ), n h hm Sum, C ount,v.v.
Cc bn ghi c gi t r r n g tr n g nhm v n c nhm . T uy nhin, n khng c
t n g h p nu tr n g t n g h p l rng.
Dng m n h WHERE lo i b cc bn ghi b n khng m u n nhm , v dng m n h
HAVING l c cc bn ghi sau khi chng c nhm .
T r khi d li u l ki u k c (Memo) hoc tr n g t n g (A utom ation), m t tr n g
tro n g danh sch nhm sau m nh GROUP BY c th tham c h i u t i b t k tr n g no
c li t k tro n g m n h FROM, th m ch n u tr n g khng c tron g m n h e
SELECT. Jet database engine khng th nhm trn cc tr n g Mem o hoc A u to m a tion .
T t c cc tr n g c li t k sau SELECT p h i h o c bao g m tro n g danh sch tr n g
nhm h o c ; m t hm nhm (aggregate fu n c tio n ).
M nh HAVING
Xc n h n h ng b n ghi c nhm no c h i n th tro n g m nh SELECT v i m t
m n h ' GROUP BY. M t khi m n h GROP BY k t h p cc b n ghi, HAVING h i n 'th
b t c b n ghi no c nhm th o mn i u k i n tro n g m n h HAVING.
HAVING t n g t WHERE, n q u y t n h n h ng b n ghi no c c h n . M t khi cc bn
ghi c nhm b i GROUP BY, HAVING xc n h b n ghi no c h i n th .
HAVING l m t m n h tu ch n . M t m n h HAVING c th c t i 40 bi u th c c
k t h p cc ton t lo g ic n h AND v OR.
M nh ORDER BY
M nh ORDER BY xc n h th t s p x p c a cc bn ghi tro n g tru y v n. T rong
m n h ORDER BY, b n xc n h m t tr n g hay cc tr n g c dng lm khoa s p
x p , v sau xc n h cc b ri ghi x ii t h i n theo t h t l n t ng dn hay g i m dn.
V d sau tr l i t t c cc bn ghi tron g bn g Em ployees c li t k h theo th t
ABC :
SELECT * FROM E m ployees ORDER BY [L ast Name] ASC;
T ro n g v d ny, ASC l tu ch n - th t s p x p m c n h l tng d n . Tuy nhin, bn
c th thm t kho ASC v c u i m i tr n g bn m u n s p th eo th t tng dn.
s p th eo th t g i m d n , thm t kho DESC vo c u i cc tr n g bn m u n s p
th eo th t g i m d n.
B n cng c th dng cng c th dng s th t c a tr n g c c h n tro n g m nh
SLECT ch ra tr n g lam kho s p x p :

SELECT [F irs t Name], [L a st Name] FROM E m ployees ORDER BY 2 ASC;


B n cng c th s p x p theo n h i u tr n g . Cc b n ghi tr c h t c sp theo
tr n g au tin tro n g danh sch cc tr n g s p x p. Cc b n ghi c cung gi t r trn
tr n g l i ti p t c c s p x p trn tr n g ti p th eo tro n g danh sch v qu trn h
l i c th l p l i n u t n t i m t s o bn ghi c cng gi tr t i tr n g v a ri.
V d su c h n tr n g l n g v s p x p g i m d n , t t c cc nhn vin cng l n g s
c s p h tng d n theo th t ABC.
SELECT [L a st Name], Salary FROM Em ployees _ ORDER BY Salary DESC, [Last Name];
ORDER BY th n g l thnh p h n cu i cng tro n g cu l n h SQL. N l m nh tu ch n
(tr khi bn dng ch d n TOP h o c TOP n PERCENT tr n g m n h SELECT).
M nh WITH OWNERACCESS
Trong m i tr n g a n g i dng v i nhm lm v i c c c h ia q u y n , dng WITH
OWNERACCESS c u i m i tru y v n trao cho n g i dng, n g i th i hanh tru y v n cho
php xem d li u tro n g tru y v n d u r n g n g i m t khc b h n c h xem cc bng
c o bn ca CSDL.
V d sau cho php n g i dng tr li th n g tin v l a n g , th m ch n u n g i dng
khng c php xem b n g k t ton, l k t q u c a m t tru y v n do m t n g i khc c
q u y n th i hnh.
SELECT [L a st Name], [F irs t Name], Salary FROM Em ployees _ ORDER BY [L ast Name] _
WITH OWNERACCESS OPTION;
N u m t n g i dng m t khc b ngn khng c t o h o c thm vo m t b n g, b n c
th dng WITH OWNERACCESS OPTION cho php n g i dng th i hnh m t cu l n h
t o h o c n i b n g.
T u ch n ny yu c u b n tru y c p vo file h th n g S ystem .m da c k t h p v i
CSDL, N th c s hu d n g ch tron g m i tr n g a n g i dng c ch a quyn.
2.Dng m t tru y v n t o bng.
M t s b i n i tro n g cu l n h SELECT cho php bn t o ra m t bng m i, th ay th cho
m t i t n g R ecordset. lm i u ny, b n thm m n h INTO. V d sau t o ra
m t b n g moil New Em ployees b i tru y v a n b a n g Em ployees:
SELECT * INTO [New E m ployees] FROM Em ployees;
B n c th dng tru y v n t o bn g l y cc b n ghi, t o m t bn g d phng, h o c
lm m t b n sao a sang m t CSDL khc h o c dng lm c s cho cc bo co h i n
th d li u tro n g m i n h k. V d , bn c th t o ra ban bo co bn hang tm g thng
b n g cch th hnh tru v n t o bng ny m i thang.
B n c th m u n xc n h m t kho chnh cho bn g m i t o . Khi b n t o bn g , cc
tr n g tro n g b n g m i s th a k kiu d li u va kch th c c a m i tr n g tro n g bng
c s , nh ng cc c tnh khc c a cc tr n g h o c bn g khng c ch u y n sang.
3 Dng tru y v n xo.

T o m t tru y v n xo lo i b cc bn ghi t m t h o c cc bn g c li t tron g m nh


FROM th o mn i u k i n tro n g m nh WHERE, n h c php d i :
DELETE [table *] FROM table exp re ssion WHERE c rite ria
DELETE c b i t hu d n g khi b n m un xo m t lc n h i u b n ghi.
Trong m t cu l n h xo trn n h i u bng, b n p h i bao g m i table. Nu bn xc n h
xo b n ghi trn n h i u b n g, khng c bn g no c h a kho chnh c a m t qan h 1 - n.

Nu m u n xo ton b bn ghi tro n g m t bn, Dng tru y v n xo chnh bng cn


nhanh h n l dng tru y v n xo. B n c th dng m t p h n g th c th i hnh v i m t cu
l n h DROP TAB LE xo bn g ra k h i C SD L~Tt nhin neu b n xo bng th m t
ln c c u tr c . N g c l i, khi dng tru y v n xo th c h ph n d li u b xo; c u tr c
b n g v cc th u c tnh c a cc tr n g v a n cn nguyn v n.
B n c th dng DELETE xo bn ghi tro n g m t bn g h o c bn g lin k t bn n c a
m t quan h 1 - n. Thao tc xo theo t n g tro n g tru y v n c h xo b n g bn n c a quan h
. V d , tro n g quan h g i a b n g C ustom ers va bn g O rders, b n g O rders l pha n, nn
th ao t c xo c h nh h n g n bng Orders.
M t tru y v n xo xo ton b b n ghi, khng xo c h n l c th eo cc tr n g . N u bn
m ii n xo d li u tro n g m t tr n g c th no , dng tru y v n c p n h t (UPDATE)
th i t l p d li tr n g l r n g (NULL).
M t khi bn lo i b cc b n ghi bng cch dng tru y v n xo, bn khng th khi
p h c l i thao tc c a m nh. N u b n m un b i t nh ng b n ghi c xo, tr c ht,
ki m tra k t q u c a tru y v n ch n c cng i u ki n (v i tru y v n x) v sau ti n
hnh tru y v n xo.
B t c lc no bn cng nn sao l u d liu phng khi b n xo n hm cc bn ghi.
4.D ng tru y v n b sung.
B n c th dng m n h INSERT INTO thm cc bn g hi vo b n g hay t o m t tru y
v n b sung.
B n c th dng n h ng c php sau y th c h i n tru y v n b sung nhiu bn ghi:
INSERT INTO ta rg e t [IN externaldatabase] SELECT [s o u rc e .]fie ld l[, fie ld 2 [,...] FROM
ta ble exp re ssion
N g c l i, dng c php sau th c h i n tru y v n b sung m t b n ghi:
INSERT INTO ta rg e t [(fie ld l[, fie ld 2 [,...]])] VALUES (v a lu e l[, v a lu e 2 [,...])
B n c th dng m n h INSERT INTO thm m t b n ghi n vo m t bn g dng c
php tru y v n b o sng b n ghi n . Trong tr n g h p ny, Cu l n h p h i xc n h tn v
g i tr ch o m i tr n g c a bn ghi. Bn p h i xc n h cc tr n g c a bn ghi m d li u
se c gn vo cng n h gi tr c a tr n g . Khi b n khng c h r danh sch tr n g ,
gi tr m c n h h o c NULL s i n vo cc tr n g v n g m t. Cc bn ghi c thm
vo c u i bng.
B n cng c th dng INSERT INTO n i m t t p h p cc b n ghi t m t bn g khc
h c m t tru y v n dng m nh SELECT ... FROM c ch ra c php trn. Trong

tr n g h p ny, m nh SELECT ch r tr n g n i thm vo b n g ch.


B n g n g u n h o c b n g ch c th l m t b n g hay m t tru y v n . N u m t tru y v n
c xac n h , M icro so ft Je t database engine n o i m t t p h p bn ghi vo m t h o c
n h i u bn g c ch ra tro n g tru y vn.
INSERT INTO l m t tu ch n , n h ng khi c m t n, p h i tig tr c SELECT.
N u bn g ch ch a kho chnh, ph i c h c c h n r n g bn b sung nh ng bn ghi v i
n i dung kho l d uy n h t, v tr n g khng c tr n g .
Nu bn b sung cc b n ghi vo m t b n g v i tr n g C oter, lo i b tr n g ra k h i
danh sch nu b n m u n M ic ro s o ft j e t nh s l i cc b n ghi. Thm tr n g C ounter
vo tru y v n n u b n m un g i l i gi t r ban u . N u c gi t r tr n g , t t nhin l Jet
database s khng b sung bn ghi .
Dng m n h IN n i cc bn ghi vo m t bn g c a m t CSDL khc.
t o m t b n g m i, dng m nh SELECT ... INTO th a y th t o m t tru y v n t o
bng.
tm ra cc b n ghi s c b sung, tr c khi th i hnh tru y v n b sung, hy xem qua
k t q u c a tru y v a n ch n v i cng bieu th c i u kin .
M t tru y v n b sung khng n h h n g t i cc bn g h o c tru y v n ngun.
5.Truy v n c p n h t:
T ru y v n UPDATE th a y i g i tr tron g cc tr n g c th o mn cc i u k i n c p
nht.
UPDATE table SET new value WHERE criteria;
UPDATE c b i t hu d n g khi b n m un th ay i n i dung n h i u bn ghi h o c khi cc
bn ghi b n m uon th ay i nm trn n h i u b n g. T hng th n g bn dng tru y v n ny
v i m t p h n g th c th i hnh.
B n c th th ay i m t vi tr n g cng lc. V d sau tng O rder A m o un t ln 10% v gi
tr F re igh t ln 3%:
UPDATE O rders _ SET [O rd er A m o un t] = [O rd er A m o u n t] * 1.1, _ F re ig h t = F reight * 1.03 _
WHERE [S hip C o u n try] = U K ;
UPDATE khng t o ra t p k t q u . Nu bn m u n xem n h ng bn ghi no c c p
n h t, tr c tin xem k t q u c u a tru y v n c h n (dng cng b i u th c i u ki n ) v sau
th i hnh tru y v n c p nht.
T ru y v n C rosstab:
T ru y v n C rosstab cho php bn ch n cc g i t r t cc tr n g hay cc bi u th c n h l
cc tiu c t, v th , b n c th xem d li u m t cch c n g h on v i m t cu l n h
SELECT bnh th n g . B n dng m nh TRANSFORM t o cc tru y vn C rosstab.
TRANSFORM a g g fu n ctio n sele ctsta te m e nt PIVOT p iv o tfie ld [IN (v a lu e l[,v a lu e 2 [,...]])]
M nh TRANSFORM d n g n h ng tham s sau: a g g fu n c tio n M t hm t n g h p trn d
li u c ch on .

s e le c ts ta te m e n t: M t cu l n h SELECT
p iv o fic ld : T r n g h o c b ie u th c bn m u n dng t o tiu c t tron g k t q u c a
tru y v n.
v a lu e l, value2: Cc gi tr c n h u c dng t o tiu c t.
Khi b n t n g h p d li u v i cng c l tru y v n C rosstab, bn c h n cc gi t r cc
tr n g hay b i u th c c th n h l cc tiu v th bn c th xem d li u tro n g m t

dnh c ng hn.
TRANSFORM n g tr c m n h SELECT xc n h cc tiu dng v ng tr c m t
m n h GROUP BY xc n h cc dng c th c nhm . T t nhin, bn c th tu
ch n cc m nh khc, n h WHERE, nh ng m n h xc n h thm cc tiu ch u n
ch n hay s p x p.
Cc g i tr tr l i tro n g p ivo tfie ld c dng n h l tiu c t tro n g t p k t q u c a tru y
v n . V d , v i c xo ay doanh s bn hng tro n g m t thng tro n g m t tru y v n C rosstab s e
t o ra 12 c t. B n c th h n c h p ivo tfie ld e t cc ti u c t t cc ga t r c n h
(gi t r 1, gi t r 2) c li t k tro n g m nh tu c h n IN.
V d sau t o ra m t tru y v n C rosstab trn h by k t q u bn hng theo thng tro n g m t
nm c a m t n g i no . Cc thng c tra l i l cc c t t tr i sang p ha i, v ten s n
ph m c li t k t trn xu n g d i n h cc hng.
PARAMETERS t Sales fo r w h ich year ? ] LONG; TRANSFORM Sum ([O rder
D etails].Q u an lity * ([O rder D etails].[U n it P rice] _ -([O rder D e ta ils].D isco u n t 1 100) * [O rder
D eta ils].[U n it Price])) AS Sales _ SELECT [P ro d u c t Name] FROM O rders INNER _ JOIN
(P rod ucts INNER JOIN [O rder D etails] ON P ro d u c ts .[P ro d u c t ID] = _ [O rd er Details].
[P ro d u ct ID]) ON O rders.fO rder ID] = _ [O rder D etails].[O rder ID] WHERE DatePart _
( y y y y , [O rder Date]) = [ Sales fo r w hich year ? ] _ GROUP BY [P ro d u c t Name] ORDER BY
[P ro d u ct Name] _ PIVOT D atePart( m , [O rder Date]);
K t n i:
M t tro n g nh ng c tn h hu ch n h t c a CSDL quan h l kh nng ni hai hay nhiu
b n g v i nhau t o nn m t b n g m i (hay m t R ecordset) ch a n g thng tin t cc

bng c.
Cc bn g c n i th eo cc m i quan h g i a ch n g, th n g th n g n h t l g i a kho
chnh c a m t b n g v kho ngoi t n g ng c a b an g ki. T u th u c vo cch th c n i
cc b n g v i nhau m b n c th t o ra cc lo i lin k t sau:
INNER JOIN Cc bn ghi c a c hai bng c ch a tro n g lin k t c h khi m t tr n g c
th tro n g bn g kh p v i m t tr n g c th tro n g b n g th hai.
LEFT OUTER JOIN T t c cc b n ghi t b n g m t c ch a tro n g lin kt, cng v i
cc b n ghi tro n g bn g hai m cc tr n g c th kh p v i cc tr n g t n g ng
tro n g b n g m t.
RIGHT OUTER JOIN T t c cc b n ghi t b n g th hai c a vo lin k t cng v i
cc b n ghi t b n g m t m c cc tr n g k h p v i cc tr n g tro n g bng hai.
In ne r jo in s :
t o ra m t tru y v n ch ch a cc bn ghi c d li u tro n g tr n g lin k t g i n g nhau,
hy dng php lin k t INNER JOIN.
INNER JOIN k t h p cc b n ghi c a hai b n g khi c cc gi t r k h p nhau tro n g tr n g

lin k t. Dng c php sau:


FROM ta b le l INNER JOIN table2 ON ta b le l.fie ld = table2.field2
B n c th dng INNER JOIN tro n g b t c m n h FROM no. N t o ra m t lin k t
t n g n g (E q u i-jo in s ), n h m t lin k t INNER JOIN. E q u i-jo in s l m t d n g k t n i
p h b i n . C hng k t h p cc bn ghi t hai bn g khi c d li u tro n g hai tr n g k t n i
k h p nhau.
B n c th dng INNER JOIN v i cc b n g D epartm ent v E m ployees ch n t t c cc
nhn vin tro n g m i phng. N g c li, ch n t t c cc phng (th m ch nu m t s
phng khng co nhn vin no), bn c th dung LEFT JOIN h o c RIGHT JOIN.
B n c th lin k t b t c hai tr n g k i u s no, th m ch n u chng khc ki u . V d
bn c th k t n i m t tr n g s, v i th u c tn h kch th c c th ie t lp l s nguyn,
v m t tr n g C outer. V d sau cho ch n g ta b i t k t n i hai ban g C ategories v
P ro du cts trn tr n g C ategorylD n h th no:
SELECT [C ategory Name], [P ro d u ct Name] _ FROM C ategories INNER JOIN P ro du cts _ ON
C ategories.[C ategory ID] = P ro du cts.[C a teg o ry ID];
V d sau t o ra hai lin k t t n g n g (eq ui-jo ins): m t g i a hai b n g O rder D etails v
O rders v m t g i a hai bn g O rders v Em ployees. i u ny l c n th i t bi bng
Em ployees khng ch a th n g tin v bn hang, v O rder D etails khng ch a th n g tin v
nhn vin. T ru y v n a ra m t danh sch cc nhn vin v t n g s v hng h bn
c:
Dim MyQRY AS Q ueryD ef MyQRY.SQL = SELECT DISTINCTROW S um ([U nit Price].
[Q u a ntity]) _ AS [Sales], [F irs t Name] & & _ [L a st Name] AS Name FROM Em ployees _
INNER JOIN (O rder INNER JOIN [O rder D etails] _ ON O rder.[O rder ID] = [O rder D etails].
[O rd er ID]) _ ON Em ployees.[E m ployee ID] = O rders.[E m ployee ID] _ GROUP BY [F irs t
Name] & & [L a st N am e];
Cu l n h ny p h i c s d n g n h l th u c tnh c a i t n g QueryD ef h o c l tham
s c a p h n g th c penR ecordset.
V d trn dng ch d n DISTINCTROW lo i b d li u trn c s cc bn ghi hon
to n tr n g nhau. V d , b n c th t o m t tr y v n lin k t cc b n g C ustom ers v i
b n g O rders v i tr n g lin k t l tr n g C ustom er ID. B ng C ustom ers khng ch a cc
b n ghi c cng n i dung tr n g C ustom er ID, n h ng tro n g b n g O rders th c b i m t
khch hng c th c n h i u h p ng t m ua hng. Cu l n h SQL sau ch ra cch bn
dng ch d an DISTINCTROW e a ra n i t danh sch cc cng t c t n h t m t h p
n g t m ua hng n h ng khng c th v cc h p n g .
SELECT DISTINCTROW [C om pany Name] _ FROM C ustom ers INNER JOIN Order _ ON
C ustom ers.[C u stom e r ID = O rders.[C ustom er ID] _ ORDER BY [C om pany Name];
N u bn b s t ch d n DISTINCTROW th k t q u s tr l i cc tn cng ty tr n g nhau
v c n h i u b n h p n g t m ua hng.
DISTINCTROW ch c h i u q u khi bn c h n cc tr n g t m t s bn g c lin k t
tro n g tru y v n . DISTINCTROW c b qu khi b n c h n t m t bng.
Lin k t tr i, p h i (LEFT JOIN & RIGHT JOIN - Lin k t ngoi):
Lin k t ngoi (OUTER JOIN) n i cc b n ghi c a b n g n g u n khi ch n g c dng

tro n g b t k m n h FROM no v i c php sau:


FROM ta b le l t LEFT I RIGHT ] JOIN table2 ON ta b le l.fie ld l = table2.field2
Dng LEFT JOIN t o m t lin k t ngoi bn tri. Lin k t ngoi bn tr i g m t t c cc
b n ghi t b n g th n h t (b ng bn tri), t c l bao g m c cc b n ghi khng k h p n i
dung tr n g lin k t v i b t c b n ghi no c a bn g th hai (bng bn phi).
Dng RIGHT JOIN t o lin k t ngoi bn p h i. Lin k t ngoi bn p h i bao g m t t c
cc b n ghi c tro n g b n g th hai (bng bn p h i), t c l bao g m c a cc b n g hi khng
k h p n i dung tr n g lin k t v i b t c b n ghi no c a b n g cn l i (bng bn tri).
V d , bn c th dng LEFT JOIN cho bn g D epartm ents (tri) v bn g Em ployees (phi)
l y ra t t c cc phng ban, tro n g c c cc phng khng c nhn vin no. l y
t t ca cc nhn vin, bao g m c nh ng nhn vin khng th u c phng ban no, hy
dng RIGHT JOIN.
V d sau c th y cch th c b n c th lin k t bn g C ategories v bng P roducts d
trn tr n g C ategory ID. T ru y v n s a ra danh sch t t c tn cc hng m c, tro n g
c n h ng hn g m c khng c s n phm no.
SELECT [C ategory Name], [P ro d u ct Name] _ FROM C ategories LEFT JOIN P roducts _ ON
C ategories.[C ategory ID] = P ro du cts.[C a teg o ry ID];
T ro n g v d trn y, C ategory ID l m t tr n g lin k t, nh ng khng c m t tro n g k t
q u c a tr y v n V I n khong c ch n tro n g m nh SELECT.
Lin k t l n g nhau (Nested jo in s ):
B n c th l n g cc ch d n JOIN n h c php sau y:
SELECT fie ld s FROM ta b le l INNER JOIN (table2 INNER JOIN t(]table3 _ [INNER JOIN [(]
ta ble x [INNER JOIN ... )] _ ON table3.field3 = ta b le x.fie ld x)] _ ON table2.field2 =
table3.field3) _ ON t a b l e li i e l d l = table2.field2;
T ru y v n h p (U nion Q ueries): B n c th dng cc thao tc n i t o cc tru y v n hp,
k t h p k t q u c a hai hay n h i u bng h o c tru y v n c lp. q u e r l UNION [A LL ]
query2 [UNION [A L L ] queryn [...]]
que ry i d i n cho b i u th c xc n h tr n g ch a d li u k i u s m bn m u n tnh
tru n g bnh h o c m t b i u th c th c hi n m t php tn h c dng d li u tron g tr n g .
Ton h n g tro n g b i u th c c th tn c a cc tr n g , c th l m t h n g, m t hm (c
th l c s n c u a h th n g h o c do n g i dng n h ngh a n h ng khng c l hm
t n g hp(aggregate fu nctio n s)).
B n c th k t h p k t q u c a m t tru y v n v m t cu l n h SQL tro n g m t php h p
UNION n . V d sau k t h p k t qu c a m t tru y v n c tn g i New A c c o u n ts v m t
cu l n h SELECT: TABLE [N ew A cco u n ts] UNION A LL _ SELECT * FROM C ustom ers
WHERE [O rder A m o u n t] > 1000;
M c n h , khng c hai b n ghi no trn g nhau tro n g k t q u c a m t tru y v n h p ; tu y
nhin, b n c th bao g m c c h dn A LL k t q u c c cc b n ghi ng nhau. N
cng lm cho tru y v n th i hnh nhanh h n.
T t c cc tru y v n tro n g phep h p UNION yu c u c cng s tr n g , tu y nhin cc
tr n g khng c n th i t p h i c cng kch th c h o c ki u d liu .

B n c th dng m n h GROUP BY v /h o c HAVING tro n g m i tru y v n tham g ia php


h p nhm d li u . B n c th dng m t m n h ORDER BY c u i tru y v n c u o i
cung k t q u tr v c s p theo m t th t xc n h .
7.T u tru y v n :
T i u CSDL l m t c h l n v bao hm n h i u v n . N hi u y u t , bao g m c c u
hnh ph n c n g v ph n m m , ci t W indow s, b m , khng lin quan n cc tru y
v n , nh ng ch un g a nh h n g n hiu q u c CSDL.
M t y u to quan tr n g khc la dng cc bn g g n v i CSDL h n l k t n i tr c ti p v i
CSDL t xa. V n ny c bn k tro n g c u n A cce ssing External Data .
P hn ny s trn h by n g n g n m t s cch t i u lin quan c b i t t i s xy d tig
cc tru y v n , v t n d n g kha nng t i u Je t database e xy d n g cc tru v n.
M t s ch i n l c t i u th n g dng:
- H n c h dng cc tr n g s p x p , c b i t l cc tr n g khng c t o c h m c.
- m b o cc bn g k t n i t cc ngu n khc nhau u c t o c h m c h o c l
c lin k t tr n cac kho chnh.
- N u d li u khng th a y i th n g xuyn, dng cc tru y v n t o bn g t tru y v n
D ynasets c a bn. Dng cc b n g lm c s cho cc fo rm , cc bo co h n l dng
cc tru y v n .
- N u bn ang t o m t tru y v n C rosstab, hy dng tiu c t c n h b t c khi no
c th . '
- Dng BETWEEN...AND, IN v cc du = trn cc c t c nh c h m c.
- Khi t o m t tru y v n , khng nn thm cc tr n g khng c n th i t.
T i u cc tru y v n v i cng n g h R ushm ore:
R ushm ore l m t cng n g h tru y c p d li u c dng tro n g Je t database engine cho
php m t t p h p cc b an ghi c tru y c p m t cch h t s c h i u q u . v i R ushm ore,
khi b n drig m t ki u b i u th c n h t n h tro n g i u k i n tru y v n , tru y v n c a b n s e
th i hnh nhanh h n r t n hiu .
B i u th c t i u d n g n g i n :
Je t database engine c th t i u ho cc b i u th c n g i n tro n g m nh WHERE
tro n g cu l n h SELECT. D ng b i u th c n g i n c th thnh l p nn ton b h o c m t
p h n p h n c a b i u th c.
M t b i u th c a n g i n c th t i u ho c m t tro n g nh ng d n g sau:
ind exe dfie ld co m p a riso n o p e ra to r expression - o r -exp re ssion co m p a riso n o p e ra to r
ind exe dfie ld T rong d n g b i u th c n g i n n h t c th t i u:
- ind exe dfie ld p h i l m t tr n g m trn c t o l p c h m c.

- comparisonoperator plii l mt trong nhng kiu su y: <, >, =, >=, <=, <>,
BETWEEN, LIKE, h o c IN.
- e xpressio n l m t b i u th c h p l b t k, bao g m cc hn g, cc hm, cc tr n g t
cc bn g.
Ch : k t q u l t t n h t, g i t r so snh tro n g b i u th c dng LIKE phi b t u
b n g m t k t c h khng c l k t i d i n (*, ?). B n c th t i u LIKE m * c h
khng th to i u LIKE
B i u th c c th t i u d n g ph c h p .
M ic ro s o ft J e t dng R ushm ore e t i u ho cc b i u th c p h c h p c k t h p t cc
b i u th c (c th t i u) n g i n v i cc ton t AND h o c OR. M t b i u th c n h th
nm tro n g cc d n g sau:

- sim p le e xp re ssio n AND sim p lee xpressio n


- sim p le e xp re ssio n OR sim p lee xprossio n
Ghi n h n h ng i u sau y khi dng b i u th c t i u ho R ushm ore:
- Hm COUNT(*) c t i m c cao cho cc tru y v n dng R ushm ore.
- N u ch m c l g i m d n v ton t so snh khc d u b n g, tru y v n khng th t i u
c.
- Rshm ore s lm vic v i M icro so ft A ccess tables, cng n h v i M icro so ft FoxPro

You might also like