Professional Documents
Culture Documents
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 ?
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
Name] TEXT) ;
T o m t c h i m c v i cu l n h CREATE TABLE.
[Date o f
sau ch ra cng m t b n g;
SELECT * FROM Table IN
&
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];
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
- 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: