You are on page 1of 24

G THU

Ngn ng truy vn c cu trc (SQL) l mt ngn co s d liu (CSDL) chun


cng nghip duoc cng cu qun trj d liu ca Microsoft (Microsoft jet database
engine) s dung. SQL duoc s dung d tao nhng di tuong truy vn
(QueryDef objects), nhu l di s cho phuong thc m tp hop bn ghi
(OpenRecordset method), v l thuc tnh ngun bn ghi (RecordSource
property) ca diu khin d liu (data control). N cng c th duoc dng vi
nhng phuong thc thi hnh (Execute method) d truc tip tao v thao tc ... (jet
databases), v tao ra cc SQL PassThrough truy vn d thao tc trn cc CSDL
khch ch t xa (remote client/server databases).
Chuong ny s bn ti cu trc co bn ca SQL, v cch thc s dung n cho
vic tao, bo tr v sa di CSDL. Chng ta cng ni ti su xy dung v cng
dung ca truy vn SQL d tao cc di tuong tp hop bn ghi (Recordset
objects), v d chon, sp xp, loc v cp nht d liu trong nhng bng co s.
Hon na, chuong ny s xem xt cch thc ti uu ho truy vn SQL v mt tc
d v hiu qu. Cui cng, chng ta bn ti su khc nhau gia Microsoft Jet
SQL v ANS SQL mt cch cu th
SQL L G ?
SQL l mt ngn ng lp trnh v CSDL c ngun gc lin quan mt thit ti su
pht minh ra m hnh CSDL quan h ca E.F.Codd vo du nhng nm 70. Tin
thn ca SQL l ngn ng Sequel, v v l do ny SQL vn thung duoc pht
m l "sequel hon l "ess cue ell, mc du c hai cch pht m du duoc chp
nhn.
SQL ngy nay pht trin rng v tr thnh mt ngn ng chun cho CSDL quan
h, v d duoc djnh ngha bi chun ANS. Hu ht cc bn thi hnh ca SQL
chi l su bin di nh t SQL chun, bao gm c phin bn duoc Jet database
engine h tro. Nhng su khc nhau ny s duoc nhc ti cui chuong, nhung
hu ht cc cu trc v cc chc nng ca ngn ng l nht qun di vi cc
nh pht trin cc h qun trj CSDL. Nu ban d s dung bt c bn thi hnh
no ca SQL, ban s thy khng kh khn my khi chuyn sang Microsoft Jet
SQL.
SQL vs. Navigation
Nhu d d cp trong phn du ti liu, Mircosoft Jet database engine cung cp
hai phuong thc tch bit d hon tt hu ht cc tc vu CSDL:
- Mt m hnh diu hung dua trn c s djch chuyn qua lai gia cc bn ghi.
- Mt m hnh quan h dua trn truy vn hi c cu trc (SQL).
M hnh diu hung bao gm nhng thuc tnh v phuong thc duoc m t
trong "Tao v sa di CSDL ("Creating and Modifying Databases) v "Thao tc
vi bn ghi v trung ("Working with Records and Fields). M hnh quan h
duoc ni bn ti trong chuong ny.
Nhng lp trnh vin khng quen thuc vi nhng h qun trj co s d liu
hung file nhu dBASE, Foxpro, v Paradox c th cm thy d chju khi bt du
vi cc phuong thc diu hung duoc tho lun trong chuong truc. Tuy
nhin, trong hu ht cc trung hop nhng phuong thc SQL vi vai tr tuong
duong t ra hiu qu hon, v ni chung chng nn duoc dng cho nhng noi
tnh hiu qu duoc xem l quan trong hon c. Hon na SQL c mt loi dim l
mt giao tip mc chun cng nghip v CSDL, th nn mt su hiu bit v
cc lnh SQL cho phep ban truy cp v thao tc vi mt din rng cc sn phm
CSDL t cc nh pht trin khc nhau.
CC THNH PHN CA SQL
Ngn ng SQL bao gm cc lnh, cc mnh d, cc ton t, v cc hm tng
hop (hm nhm - aggregate functions). Nhng thnh phn ny duoc kt hop
vo trong cc pht biu (statements) dng d tao, cp nht, v thao tc trn
CSDL. Nhng muc sau s m t nhng thnh t d mt cch ngn gon, v phn
cn lai ca chuong ny s dua ra cho ban nhng v du cu th v cng dung ca
chng.
Ch : Nhng muc sau s nhng lnh v t kho duoc dng thung xuyn
nht, nhung khng phi tt c. c mt tham kho hon chinh v danh sch
cc t kho SQL, hy tm kim "SQL trong Books Online.
1.Lnh SQL:
Ging nhu m hnh diu hung ca DAO (Data Access Object), SQL cung cp
c hai phn, ngn ng djnh ngha d liu (DDL - Data Definition Language) v
ngn ng thao tc d liu (DML - Data Manipulation Language). Tuy c vi phn
trng lp, nhung nhng cu lnh DDL cho php ban tao v djnh ngha cc
CSDL, cc trung, cc chi muc mi, trong khi nhng cu lnh DML d ban xy
dung cc truy vn, sp xp, loc, v trch d liu t trong CSDL.
DDL
Cc cu lnh DDL trong SQL l biu thc duoc xy dung chung quanh nhng
mnh d sau:
CREATE Dng d tao mi cc bng, cc trung v cc chi muc.
DROP Dng d xo cc bng v chi muc khi CSDL.
ALTER Dng d sa di cc bng bng cch thm trung, thay di djnh ngha
ca cc trung.
DML
Cc cu lnh DML l cc biu thc duoc xy dung dua trn cc mnh d sau:
SELECT Dng d truy vn CSDL d ly duoc nhng bn ghi tho mn nhng
tiu chun no d.
NSERT Dng d chn mt nhm d liu vo CSDL thng qua mt thao tc.
UPDATE Dng d thay di gi trj ca nhng trung, nhng bn ghi cu th.
DELETE Dng d loai b nhng bn ghi ra khi CSDL.
2.Mnh d SQL:
Mnh d l nhng diu kin thay di duoc dng d xc djnh d liu ban mun
chon, mun thao tc. Bng sau lit k nhng mnh d ban c th dng.
FROM Lit k danh sch cc bng m ta cn ly cc bn ghi t d.
WHERE c djnh cc diu kin m bn ghi duoc chon phi dp ng duoc.
GROUP B Dng d nhm cc bn ghi duoc chon thnh cc nhm ring bit.
HANG Dng d dua ra diu kin cho mi nhm.
ORDER B Dng d sp xp cc bn ghi duoc cho theo mt th tu no d.
.Nhng ton hang SQL:
C hai loai ton hang trong SQL: ton hang logic v ton hang so snh.
Ton hang logic:
Ton hang logic duoc dng d ni cc biu thc, thung l trong pham vi ca
mnh d WHERE. du nhu:
SELECT FROM MTABLE WHERE Condition1 AND Condition2
Nhng ton t logic bao gm: AND, OR, NOT
Ton hang so snh:
Ton hang so snh duoc dng d so snh tuong di gi trj hai biu thc d xc
djnh nhng hoat dng no s duoc thuc hin. du:
SELECT FROM Publishers WHERE PubD
Nhng ton t so snh bao gm:
b hon
b hon hoc bng
ln hon
ln hon hoc bng
bng
khc
.Hm tng hop
(aggregate functions)
Hm tng hop (hm nhm) duoc dng trong pham vi ca mnh d SELECT trn
mt nhm bn ghi d tr lai mt gi trj. du, hm AG c th tr lai gi trj trung
bnh ca tt c cc gi trj trong mt trung cu th. Bng sau lit k danh sch
cc hm tng hop.
AG Tr lai gi trj trung bnh trong mt trung. COUNT Tr lai s bn ghi duoc
chon.
SUM Hm tnh tng cc gi trj trong mt trung cu th.
MA Hm tr v gi trj cuc dai ca trung d.
MN Hm tr v gi trj cuc tiu ca trung d
NHNG THAO TC DLL
DDL bao gm mt s lnh ban c th dng d tao bng v chi muc, v sa di
cc bng bng cch thm hoc loai b cc ct hoc chi muc. Nhng cu lnh
djnh ngha d liu c th chi duoc dng vi Jet database Chng khng duoc h
tro cho bt c CSDL djnh dang ngoi.
Ch : dng cu lnh DDL, hoc bt c truy vn no khng tr lai tp bn
ghi, hy dng ngoc kp v s dung chng nhu l di s ca cc phuong thc
thi hnh ca CSDL hay di tuong truy vn (QueryDef object) nhu trong v du
sau:
MyDB.Execute "CREATE TABLE Employees (First Name TET, Last Name
TET)
dng bt c mt cu lnh no tr lai cc bn ghi (nhu SELECT), dng biu
thc nhu l di s ngun ca phuong thc m tp bn ghi (OpenRecordset
method), nhu trong v du sau:
MyDB.OpenRecordset ("SELECT FROM Titles WHERE AuD ,
dbOpenDynaset)
1.Tao mt bng:
tao mt bng trong CSDL, dng cu lnh CREATE TABLE. Mt cu lnh
hon chinh nhn cc di s l tn bng, tn cc trung, kiu d liu ca cc
trung v d rng ca cc trung.
du sau tao mt bng c tn l "Employees, c hai trung kiu TET vi d
rng l 2:
CREATE TABLE Employees (First Name TET(2), Last Name TET(2))
Thm v xo ct:
Ban c th thm, sa di hoc xo cc ct vi cu lnh ALTER TABLE. du,
cu lnh sau thm mt trung kiu TET c d rng 2 v tn l "Notes vo
bng Employees:
ALTER TABLE Employees ADD COLUMN Notes TET(2)
loai b mt ct, dng t kho DROP. du ny loai b ct c tn l "Notes
mi va duoc thm lc ny:
ALTER TABLE Employees DROP COLUMN Notes
sa di mt trung, truc tin ban phi xo n, v sau d l thm trung
mi vi tn nhu c. du sau tng d rng ca trung "Notes:
ALTER TABLE Employees DROP COLUMN Notes
ALTER TABLE Employees ADD COLUMN Notes TET(0)
Ch : Dng ALTER TABLE, ban chi c th thm hoc xo mt trung tai mi
thi dim.
2.Tao v xo chi muc:
C ba cch khc nhau d tao chi muc:
- Lc bt du tao bng vi cu lnh CREATE TABLE
- i cu lnh CREATE NDE.
- i cu lnh ALTER TABLE
Mc du c ba cch ny du cho kt qu tuong tu, nhung vn c nhng khc
dim khc nhau. Nu ban mun thm mt kho ngoai (foreign key) v p buc
ton vn tham chiu (enfore referential integrity), ban phi dng mt mnh d
rng buc (CONSTRANT clause) trong cc cu lnh CREATE TABLE hoc
ALTER TABLE.
i khi ngui ta mun tao mt bng ban du khng c chi muc, v tip d l
thit k cc tham s chi muc sau khi dng mu bng. i tnh hung ny, ban
nn dng CREATE TABLE d tao mu bng khng c chi muc, v sau d thm
cc chi muc vi cu lnh CREATE NDE hoc ALTER TABLE.
Tao mt chi muc vi cu lnh CREATE TABLE.
hi ban tao mt bng, ban c th tao mt chi muc cho tng ct ring r, hoc hai
hoc nhiu hon cc ct, dng mnh d SQL CONSTRANT (t kho
CONSTRANT bt du djnh ngha mt chi s). du sau dy minh hoa cch tao
ra mt bng vi ba trung c chi muc:
CREATE TABLE Employees (First Name TET(2), Last Name TET(2),
Date of Birth DATETME, CONSTRANT Employeesndex UNQUE (First
Name, Last Name, Date of Birth))
dnh chi muc vi mt ct, ban dt mnh d CONSTRANT vo mt trong
nhng m t ct. du, d dnh chi muc trung "Date of Birth, ban dng cu
lnh CREATE TABLE sau dy:
CREATE TABLE Employees (First Name TET(2), Last Name TET(2),
Date of Birth DATETME CONSTRANT Employeesndex PRMAR)
Su khc nhau gia dnh chi muc cho nhiu trung v cho mt trung l: cho
mt trung don, t kho CONSTRANT bt du djnh ngha chi muc khng bj
tch bit vi trung cui cng bi du phy m di st ngay sau kiu d liu ca
trung duoc dnh chi muc d.
Tao chi muc vi cu lnh CREATE NDE.
Ban cng c th dng mnh d CREATE NDE d thm mt chi muc. du sau
dy dua ra cng mt kt qu vi v du truc, ngoai tr vic dng CREATE
TABLE thay th cho ALTER TABLE.
CREATE UNQUE NDE Myndex ON Employees (Date of Birth)
Trong mnh d tu chon WTH, ban c th p buc d liu vi rng buc
PRMAR, c ngha dy l trung chi muc chnh DSALLOW NUL, ngha l
trung ny khng bj b trng GNORE NULL, c ngha bn ghi d s khng
duoc dnh chi muc nu trung d d trng.
du sau thm mnh d WTH vo v du truc, d cho khng bn ghi no c th
duoc thm vo bng m ct s bo him x hi bj b trng:
CREATE UNQUE NDE Myndex ON Employees (SSN) WTH DSALLOW
NULL
Ch : hng dng t kho PRMAR khi ban tao ra mt chi muc mi trong
bng m bng d d tn tai kho chnh (Primary key) Nu ban vi pham diu ny
th h thng s bo li.
Ban dang dng CREATE NDE d tao mt dc t chi muc trn mt bng m
chua tn tai chi muc no. tao mt chi muc nhu th ban khng cn su cho
php hoc truy cp ti mt my ch xa, v CSDL xa khng nhn bit duoc
hay khng h nh hung bi chi muc d. Ban dng cng mt c php cho bng
kt ni v bng gc. iu ny dc hu dung khi tao mt chi muc trn mt bng
thung l chi doc (read only) bi v n thiu mt chi muc.
Tao mt chi muc vi cu lnh ALTER TABLE
Ban cng c th thm mt chi muc cho mt bng d tn tai bng cch dng cu
lnh ALTER TABLE, dng c php ADD CONSTRANT. du sau thm mt chi
muc cho trung "SSN:
ALTER TABLE Employees ADD CONSTRANT Myndex PRMAR (SSN)
Ban cng c th thm chi muc cho nhiu trung v mt bng bng cch dng
cu lnh ALTER TABLE ging nhu sau:
ALTER TABLE Employees ADD CONSTRANT Namendex UNQUE (Last
Name, First Name, SSN)
Mnh d CONSTRANT v ton vn tham chiu (Referential ntegrity).
Mt rng buc l mt chi muc. Ban dng mnh d CONSTRANT d tao hoc
xo cc chi muc vi cc cu lnh CREATE TABLE v ALTER TABLE, nhu d
chi ra phn truc.
Mnh d CONSTRANT cng cho php ban djnh ngha kho chnh v kho
ngoai, djnh ngha cc quan h v p buc ton vn tham chiu.
bit thm thng tin v quan h v ton vn tham chiu, hy xem cun "Tao
v sa di CSDL ("Creating and Modifying Databases).
C hai loai mnh d CONSTRANT: Mt d tao chi muc cho tng trung don v
mt d tao chi muc cho nhiu hon mt trung.
C php ca chi muc trn mt trung l:
CONSTRANT name PRMAR E UNQUE REFERENCES foreigntable
(foreginfield1, foreignfield2)
C php cho chi muc trn nhiu trung l:
CONSTRANT name PRMAR E (primary1,primary2,...) UNQUE
(unique1,unique2,...) FOREGN E (ref1,ref2,...) REFERENCES
foreigntable (foreignfield1,foreignfield2,...)
Sau dy l cc di s p dung cho hai loai trn:
name : Tn ca chi muc duoc tao.
primary1, primary2 : Tn ca truong hay cc trung duoc chi djnh lm kho
chnh.
unique1, unique2 : Tn ca trung hay cc trung duoc chi djnh lm kho
khng lp.
ref1, ref2 : Tn ca trung hoc cc trung kho ngoi tham chiu ti mt
trung, mt s trung bng khc.
foreigntable Tn ca bng ngoi cha mt hoc mt s trung duoc xc djnh
bi foreignfield.
foreignfield1, foreignfield2: Tn ca trung hoc mt s trung trong bng ngoi
duoc xc djnh bi ref1, ref2.
Dng CONSTRANT, ban c th gn cho mt trung nhu mt trong nhng loai
chi muc sau:
- UNQUE Chi djnh trung mt trung c gi trj khng lp. iu ny c ngha
l hai bn ghi bt k trong bng khng c cng gi trj trong trung ny. Ban c
th rng buc bt k trung no hoc mt danh sch cc trung l duy duy nht
(unique). Nu nhiu trung duoc chi djnh l khng lp, b gi trj kt hop ca cc
trung d phi l duy nht, du l hai hoc mt s bn ghi c cng gi trj trong
mt trung ca nhm cc trung d.
- PRMAR E Chi djnh mt hoc mt tp cc trung trong bng tao thnh
kho chnh. Tt c gi trj trong kho chnh phi duy nht, v c mt kho chnh
duy nht cho mt bng. Nu ban thit lp mt kho chnh cho mt bng d tn
tai kho chnh th h thng s bo li.
- FOREGN E c djnh mt trung nhu mt kho ngoi. Nu kho chnh
ca bng ngoi c nhiu hon mt trung, ban phi dng mt djnh ngha cho chi
muc nhiu trung, lit k tt c cc trung tham chiu, tn ca cc bng, tn
ca bng ngoi, v tn ca cc trung duoc tham chiu trong bng ngoi theo
cng mt th tu nhu d lit k danh sch cc trung tham chiu. Nu trung
duoc tham chiu l kho chnh ca bng ngoi, ban khng cn chi djnh trung
duoc tham chiu m Jet engine d ngm djnh kho chnh ca bng ngoi l
trung duoc tham chiu.
du, d thm mt chi muc cho bng Titles trong CSDL Biblio.mdb, ban c th
dng cu lnh sau dy:
ALTER TABLE Titles ADD CONSTRANT Myndex FOREGN E (PubD)
REFERENCES Publishers (PubD)
Nh rng, bng cch dng t kho FOREGN E, Chng ta dang thit lp mt
quan h gia trung PubD ca bng Titles (kho ngoi) v trung PubD trong
bng Publishers (kho chnh). Mi quan h ny s duoc rng buc bi Jet
engine, nhu th ban dang dng phuong thc CreateRelation duoc m t trong
Tao v sa di CSDL
PHN NGN NG THAO TC TRN D LU - DML
Phn ngn ng thao tc trn d liu (DML - Data Manipulation Languague)
duoc dng d ly cc bn ghi trong cc bng, cp nht, thm, xo cc bn ghi
ca cc bng. C mt s cu lnh h tro cc tc vu ny, nhung phn ln l c
cu trc ca cu lnh SELECT.
Truy vn chon:
S dung cu lnh SELECT d ly cc bn ghi t CSDL nhu mt tp hop cc
bn ghi, luu tr chng trong mt di tuong tp bn ghi mi (Recordset object).
ng dung ca ban c th thao tc trn tp bn ghi ny nhu hin thj, thm, thay
di v xo nu cn thit. ng dung ca ban cng c th hin thj, sinh cc bo
co t d liu d.
SELECT thung l t du tin trong mt cu lnh SQL. Hu ht cc cu lnh
hoc l SELECT hoc l SELECT...NTO. Ban c th dng mt cu lnh
SELECT trong SQL l thuc tnh ca di tuong truy vn (QueryDef object), l
thuc tnh RecordSource ca mt diu khin d liu (data control), hoc mt di
s cho phuong thc OpenRecordset. cu lnh SELECT khng thay di d liu
trong CSDL chng chi ly d liu ra t CSDL.
Dang tng qut ca cu lnh SELECT l:
SELECT fieldlist
FROM tablenames N databasename
WHETE searchconditions
GROUP B fieldlist
HANG group criteria
ORDER B fieldlist
WTH OWNERACCESS OPTON
Mi phn trong cu lnh dai din cho mt mnh d duoc bn dn cc phn
sau:
Truy vn don gin:
Dang don gin nht ca cu lnh SELECT l:
SELECT FROM tablename
du, truy vn chon sau tr lai tt c cc ct ca tt c cc bn ghi trong bng
Employees:
SELECT FROM Employees
Du sao cho bit rng tt c cc trung ca bng duoc chon. Ban cng c th
chi djnh mt s trung nht djnh. hi hin thj, d liu trong mi ct s hin theo
th tu nhu chng d duoc lit k, v vy ban c th thay di lai th tu cho d
doc:
SELECT First Name, Last Name FROM Employees
Chi djnh ngun d liu duoc chon:
Mt cu lnh SELECT lun c mnh d FROM, cho bit danh sch cc bng ta
cn ly cc bn ghi t d.
Nu mt trung tn tai trong nhiu bng trong mnh d FROM, dt truc chng
tn trung v du chm. Trong v du sau, trung Department c trong c hai
bng Employees v Supervisors. Cu lnh chi chon trung Department ca
bng Employees v SupvName t bng Supervisors:
SELECT Employees. Department, SupvName FROM Employees, Supervisors
WHERE Employees.Department Supervisors.Department
hi mnh d FROM lit k nhiu hon mt bng, th tu ca chng khng quan
trong.
c djnh mt bng t mt CSDL bn ngoi.
i khi, ban cn thit tham chiu ti mt bng ca mt CSDL bn ngoi m cng
cu qun trj CSDL (Microsoft Jet database engine) c th kt ni ti, nhu CSDL
dBASE, Paradox hoc mt Jet database bn ngoi. Ban c th lm diu ny
bng mnh d tu chon N. Mnh d N thung xut hin sau tn bng trong
mnh d FROM, nhung cng c th duoc dng trong SELECT NTO hoc
NSERT NTO, khi dch l mt CSDL ngoi.
Ch : Ban chi c th N d kt ni mt CSDL ngoi tai mt thi dim.
Trong mt s trung hop, di s dung dn d cp ti c thu muc cha CSDL.
du, khi lm vic vi dBASE, Foxpro, hoc Paradox, tham s dung dn chi ra
cc thu muc cha cc file c dui .DBF hoc .DB. Tn bng duoc bt ngun t
dch hoc biu thc bng.
xc djnh khng phi l mt Jet database, thm du chm phy v sau tn, v
dng lai bng du trch don hoc du ngoc kp. du:
dBASE
Ban cng c th dng t kho DATABASE d chi djnh CSDL ngoi. du, c hai
dng sau chi ra cng mt bng
SELECT FROM Table N " dBASE
DATABASEC:DBASEDATASALES
SELECT FROM Table N "C:DBASEDATASALES "dBASE
Ch : nng hiu qu v d s dung, thung ngui ta dng bng kt ni
thay cho mnh d N.
bit thm thng tin v bng kt ni, xem cun "Working with Records and
Fields v cun "Accessing External Data.
Bit danh ca ct.
hi di tuong Recordset duoc tao ra t cu lnh SELECT, tn ct ca bng tr
thnh tn trung ca di tuong Recordset. Nu ban mun tn khc di, dng
mnh d AS. du sau dng "DOB l bit danh ca trung Date of Birth trong
bng Employees: SELECT Date of Birth AS DOB FROM Employees
Bt c khi no ban dng truy vn tr lai tn trung nhp nhng hoc trng tn
trung, ban phi dng mnh d AS d cung cp tn khc nhau cho cc trung.
du sau dng b danh "Head Count d gn kt qu dm trong tp bn ghi:
SELECT COUNT(EmployeeD) AS Head Count FROM Employees
S dung bin isual Basic trong cu lnh SQL
Trong mt chuong trnh isual Basic, ban c th tao mt cu lnh SELECT trong
ng dung ca ban bng cch ghp cc bin cuc b vo trong mt cu lnh khi
cn d chon, sp xp, loc d liu duoc yu cu bi ng dung ca ban. du
ban c mt diu khin TextBox (TitleWanted) cha tn ca mt tiu d v ban
mun ly tt c cc sch trong bng Titles c nhan d nhu nhan d trong hp
TextBox, ban c th tao mt cu lnh SQL bao gm c gi trj hin thi ca hp
TextBox. Nhung nh rng SQL dng TitleWanted trong mt du trch don ():
Set Rst Db.OpenRecordset("SELECT FROM Titles " "WHERE Title
TitleWanted.Text ")
1.Loc v sp xp kt qu ca truy vn:
SQL cung cp mt s t kha xc nhn v mnh d tu chon gip ban thun tin
hon trong vic han ch v sp xp kt qu. Phn sau s tho lun v su tin
dung ny.
Chi dn DSTNCT
b qua cc bn ghi trng nhau, dng t kho DSTNCT. Nu duoc dng, gi
trj trong trung hay mt nhm cc trung duoc chon trong cu lnh SELECT s
l duy nht. du, C mt vi nhn vin lit k trong bng Employees c cng
ho. Nu hai bn ghi c cng ni dung trung "Last Name l Smith th cu lnh
sau s tr lai mt bn ghi c ni dung l Smith:
SELECT DSTNCT Last Name FROM Employees
Nu b t kho DSTNCT th truy vn s tr lai nhiu hon mt gi trj Smith.
t qu tp hop bn ghi ca truy vn dng DSTNCT khng cho php cp nht
v khng phn nh duoc nhng thay di sau d ca ngui dng khc.
Chi dn TOP
tr lai mt s bn ghi nht djnh du hoc cui ca pham vi cc bn ghi.
Dng chi dn TOP. Gi s ban mun ly tn ca 2 sinh vin du ca lp tt
nghip nm 1:
SELECT TOP 2 First Name, Last Name FROM Students WHERE
Graduation ear 1 ORDER B Grade Point Average DESC
Nu ban khng dng mnh d ORDER B, truy vn s tr lai 2 bn ghi tu
trong bng Students tho mn diu kin trong mnh d WHERE.
Bt c khi no ban dng truy vn tr lai tn trung nhp nhng hoc trng tn
trung, ban phi dng mnh d AS d cung cp tn khc nhau cho cc trung.
du sau dng b danh "Head Count d gn kt qu dm trong tp bn ghi:
SELECT COUNT(EmployeeD) AS Head Count FROM Employees
S dung bin isual Basic trong cu lnh SQL
Trong mt chuong trnh isual Basic, ban c th tao mt cu lnh SELECT trong
ng dung ca ban bng cch ghp cc bin cuc b vo trong mt cu lnh khi
cn d chon, sp xp, loc d liu duoc yu cu bi ng dung ca ban. du
ban c mt diu khin TextBox (TitleWanted) cha tn ca mt tiu d v ban
mun ly tt c cc sch trong bng Titles c nhan d nhu nhan d trong hp
TextBox, ban c th tao mt cu lnh SQL bao gm c gi trj hin thi ca hp
TextBox. Nhung nh rng SQL dng TitleWanted trong mt du trch don ():
Set Rst Db.OpenRecordset("SELECT FROM Titles " "WHERE Title
TitleWanted.Text ")
1.Loc v sp xp kt qu ca truy vn:
SQL cung cp mt s t kha xc nhn v mnh d tu chon gip ban thun tin
hon trong vic han ch v sp xp kt qu. Phn sau s tho lun v su tin
dung ny.
Chi dn DSTNCT
b qua cc bn ghi trng nhau, dng t kho DSTNCT. Nu duoc dng, gi
trj trong trung hay mt nhm cc trung duoc chon trong cu lnh SELECT s
l duy nht. du, C mt vi nhn vin lit k trong bng Employees c cng
ho. Nu hai bn ghi c cng ni dung trung "Last Name l Smith th cu lnh
sau s tr lai mt bn ghi c ni dung l Smith:
SELECT DSTNCT Last Name FROM Employees
Nu b t kho DSTNCT th truy vn s tr lai nhiu hon mt gi trj Smith.
t qu tp hop bn ghi ca truy vn dng DSTNCT khng cho php cp nht
v khng phn nh duoc nhng thay di sau d ca ngui dng khc.
Chi dn TOP
tr lai mt s bn ghi nht djnh du hoc cui ca pham vi cc bn ghi.
Dng chi dn TOP. Gi s ban mun ly tn ca 2 sinh vin du ca lp tt
nghip nm 1:
SELECT TOP 2 First Name, Last Name FROM Students WHERE
Graduation ear 1 ORDER B Grade Point Average DESC
Nu ban khng dng mnh d ORDER B, truy vn s tr lai 2 bn ghi tu
trong bng Students tho mn diu kin trong mnh d WHERE.
Chi dn TOP khng chon lua gia nhng bn ghi bng nhau. Trong v du, nu
bn ghi th 2 v th 2 c cng hang th truy vn s tr lai 2 bn ghi.
Ban cng c th dng t kho PERCENT d tr lai mt s phn trm bn ghi
du hay cui tu thuc vo mnh d ORDER B. Gi s rng thay v 2 sinh
vin, ban mun 10 phn trm sinh vin ca lp.
SELECT TOP 10 PERCENT First Name, Last Name FROM Students
WHERE Graduation ear 1 ORDER B Grade Point Average DESC
Mnh d WHERE
Mnh d WHERE xc djnh nhng bn ghi t cc bng duoc lit k trong mnh
d FROM
Microsoft Jet Database engine chon cc bn ghi tho mn diu kin lit k trong
mnh d WHERE. Nu ban khng c mnh d WHERE, truy vn s tr lai tt c
cc dng t cc bng duoc chon. Nu ban chi ra hon mt bng trong truy vn
v khng c mnh d WHERE hoc mnh d kt ni JON, truy vn ca ban s
tr lai kt qu tch d cc ca cc bng.
Ch : Mc d mnh d WHERE c th dm nhn tc vu kt ni cc bng,
nhung ban phi dng mt mnh d JON d thuc hin cc thao tc kt ni nhiu
bng vi nhau nu ban mun kt qu ca truy vn c th cp nht duoc.
Mnh d WHERE tuong tu nhu HANG. WHERE xc djnh nhng bn ghi duoc
chon. Mt cch tuong tu, mt khi cc bn ghi d duoc nhm bi GROUP B,
HANG s quyt djnh nhng bn ghi no duoc hin thj.
Dng mnh d WHERE d loai b cc bn ghi ban khng mun nhm bi
GROUP B.
Mt mnh d WHERE c th c ti 0 biu thc duoc kt ni bi cc ton t
logic nhu AND, OR.
hi ban dng mt trung tn c cha du cch hoc du cu, ban phi b tn
trung d trong du ngoc vung ():
SELECT Product D, Units n Stock FROM Products WHERE Units n
Stock Reorder Level
hi ban xc djnh di s diu kin, ngy phi djnh dang theo dang ca M, ngay
c khi ban khng dng phin bn Jet database ca M. du, May 10, 1,
duoc vit l 10// theo kiu Anh v /10/ theo kiu M. chc chn, cn
dt ngy ca ban vo trong cp du thng (), nhu v du sau dy:
tm cc bn ghi c ngy May 10, 1 trong mt CSDL Anh, ban phi dng
cu lnh sau dy:
SELECT FROM Orders WHERE Shipped Date /10/
Ban c th dng hm Datealue, n nhn bit duoc moi djnh dang duoc thit
lp bi Microsoft Windows. du, m sau cho chun ngy M:
SELECT FROM Orders WHERE Shipped Date Datealue(/10/)
M sau dng cho Anh:
SELECT FROM Orders WHERE Shipped Date Datealue(10//)
Mnh d GROUP B:
GROUP B l mnh d tu chon cho php kt hop cc bn ghi theo mt gi trj
ging ht nhau ca mt trung trung xc djnh vo trong mt bn ghi duy nht.
Gi trj tng hop duoc tao ra cho mi bn ghi nu trong cu lnh SQL c cha
hm tng hop (aggregate function), nhu hm Sum, Count.v.v.
Cc bn ghi c gi trj rng trung nhm vn duoc nhm. Tuy nhin, n khng
duoc tng hop nu trung tng hop l rng.
Dng mnh d WHERE d loai b cc bn ghi ban khng mun nhm, v dng
mnh d HANG d loc cc bn ghi sau khi chng d duoc nhm.
Tr khi d liu l kiu k c (Memo) hoc trung tu dng (Automation), mt
trung trong danh sch nhm sau mnh d GROUP B c th tham chiu ti
bt k trung no duoc lit k trong mnh d FROM, thm ch nu trung d
khng c trong mnh d SELECT. Jet database engine khng th nhm trn cc
trung Memo hoc Automation.
Tt c cc trung duoc lit k sau SELECT phi hoc bao gm trong danh sch
trung nhm hoc mt hm nhm (aggregate function).
Mnh d HANG
c djnh nhng bn ghi duoc nhm no duoc hin thj trong mnh d SELECT
vi mt mnh d GROUP B. Mt khi mnh d GROUP B kt hop cc bn ghi,
HANG hin thj bt c bn ghi no duoc nhm tho mn diu kin trong mnh
d HANG.
HANG tuong tu WHERE, n quyt djnh nhng bn ghi no duoc chon. Mt
khi cc bn ghi duoc nhm bi GROUP B, HANG xc djnh bn ghi no duoc
hin thj.
HANG l mt mnh d tu chon. Mt mnh d HANG c th c ti 0 biu
thc duoc kt hop cc ton t logic nhu AND v OR.
Mnh d ORDER B
Mnh d ORDER B xc djnh th tu sp xp ca cc bn ghi trong truy vn.
Trong mnh d ORDER B, ban xc djnh mt trung hay cc trung duoc dng
lm kho sp xp, v sau d xc djnh cc bn ghi xut hin theo th tu d ln
tng dn hay gim dn. du sau tr lai tt c cc bn ghi trong bng
Employees duoc lit k ho theo th tu ABC :
SELECT FROM Employees ORDER B Last Name ASC
Trong v du ny, ASC l tu chon - th tu sp xp mc djnh l tng dn. Tuy
nhin, ban c th thm t kho ASC v cui mi trung ban mun sp theo th
tu tng dn.
sp theo th tu gim dn, thm t kho DESC vo cui cc trung ban
mun sp theo th tu gim dn.
Ban cng c th dng cng c th dng s th tu ca trung duoc chon trong
mnh d SELECT d chi ra trung lm kho sp xp:
SELECT First Name, Last Name FROM Employees ORDER B 2 ASC
Ban cng c th sp xp theo nhiu trung. Cc bn ghi truc ht duoc sp
theo trung du tin trong danh sch cc trung sp xp. Cc bn ghi c cng
gi trj trn trung d lai tip tuc duoc sp xp trn trung tip theo trong danh
sch v qu trnh lai c th lp lai nu tn tai mt s bn ghi c cng gi trj tai
trung va ri.
du sau chon trung luong v sp xp gim dn, tt c cc nhn vin cng
luong s duoc sp ho tng dn theo th tu ABC.
SELECT Last Name, Salary FROM Employees ORDER B Salary DESC,
Last Name
ORDER B thung l thnh phn cui cng trong cu lnh SQL. N l mnh d
tu chon (tr khi ban dng chi dn TOP hoc TOP n PERCENT trong mnh d
SELECT).
Mnh d WTH OWNERACCESS
Trong mi trung da ngui dng vi nhm lm vic c chia quyn, dng WTH
OWNERACCESS cui mi truy vn d trao cho ngui dng, ngui thi hnh truy
vn cho php xem d liu trong truy vn du rng ngui d mt khc bj han ch
xem cc bng co bn ca CSDL.
du sau cho php ngui dng tr lai thng tin v luong, thm ch nu ngui
dng khng duoc php xem bng kt ton, l kt qu ca mt truy vn do mt
ngui khc c d quyn thi hnh.
SELECT Last Name, First Name, Salary FROM Employees ORDER B
Last Name WTH OWNERACCESS OPTON
Nu mt ngui dng mt khc bj ngn khng duoc tao hoc thm vo mt
bng, ban c th dng WTH OWNERACCESS OPTON d cho php ngui
dng thi hnh mt cu lnh tao hoc ni bng.
Tu chon ny yu cu ban truy cp vo file h thng System.mda duoc kt hop
vi CSDL. N thuc su hu dung chi trong mi trung da ngui dng c chia
quyn.
2.Dng mt truy vn tao bng.
Mt su bin di trong cu lnh SELECT cho php ban tao ra mt bng mi, thay
th cho mt di tuong Recordset. lm diu ny, ban thm mnh d NTO.
du sau tao ra mt bng mi New Employees bi truy vn bng Employees:
SELECT NTO New Employees FROM Employees
Ban c th dng truy vn tao bng d ly cc bn ghi, tao mt bng du phng,
hoc lm mt bn sao d dua sang mt CSDL khc hoc dng lm co s cho
cc bo co hin thj d liu trong mi djnh k. du, ban c th tao ra bn bo
co bn hang tng thng bng cch thi hnh truy vn tao bng ny mi thng.
Ban c th mun xc djnh mt kho chnh cho bng mi tao. hi ban tao bng
d, cc trung trong bng mi s tha k kiu d liu va kch thuc ca mi
trung trong bng co s, nhung cc dc tnh khc ca cc trung hoc bng
khng duoc chuyn sang.
Dng truy vn xo.
Tao mt truy vn xo d loai b cc bn ghi t mt hoc cc bng duoc lit
trong mnh d FROM tho mn diu kin trong mnh d WHERE, nhu c php
dui dy:
DELETE table FROM tableexpression WHERE criteria
DELETE dc bit hu dung khi ban mun xo mt lc nhiu bn ghi.
Trong mt cu lnh xo trn nhiu bng, ban phi bao gm di table. Nu ban
xc djnh xo bn ghi trn nhiu bng, khng c bng no cha kho chnh ca
mt quan h 1 - n.
Nu mun xo ton b bn ghi trong mt bn, Dng truy vn xo chnh bng d
cn nhanh hon l dng truy vn xo. Ban c th dng mt phuong thc thi hnh
vi mt cu lnh DROP TABLE d xo bng d ra khi CSDL. Tt nhin nu
ban xo bng th mt lun c cu trc. Nguoc lai, khi dng truy vn xo th chi
phn d liu bj xo Cu trc bng v cc thuc tnh ca cc trung vn cn
nguyn vn.
Ban c th dng DELETE d xo bn ghi trong mt bng hoc bng lin kt bn
n ca mt quan h 1 - n. Thao tc xo theo tng trong truy vn chi xo bng bn
n ca quan h . du, trong quan h gia bng Customers v bng Orders,
bng Orders l pha n, nn thao tc xo chi nh hung dn bng Orders.
Mt truy vn xo xo ton b bn ghi, khng xo chon loc theo cc trung. Nu
ban mun xo d liu trong mt trung cu th no d, dng truy vn cp nht
(UPDATE) d thit lp d liu trung d l rng (NULL).
Mt khi ban d loai b cc bn ghi bng cch dng truy vn xo, ban khng th
khi phuc lai thao tc ca mnh. Nu ban mun bit nhng bn ghi d duoc xo,
truc ht, kim tra kt qu ca truy vn chon c cng diu kin (vi truy vn
xo) v sau d tin hnh truy vn xo.
Bt c lc no ban cng nn sao luu d liu phng khi ban xo nhm cc bn
ghi.
.Dng truy vn b sung.
Ban c th dng mnh d NSERT NTO d thm cc bn ghi vo bng hay tao
mt truy vn b sung.
Ban c th dng nhng c php sau dy d thuc hin truy vn b sung nhiu
bn ghi:
NSERT NTO target N externaldatabase SELECT source.field1, field2, ...
FROM tableexpression
Nguoc lai, dng c php sau d thuc hin truy vn b sung mt bn ghi:
NSERT NTO target (field1, field2,...) ALUES (value1, value2, ...)
Ban c th dng mnh d NSERT NTO d thm mt bn ghi don vo mt bng
dng c php truy vn b sung bn ghi don. Trong trung hop ny, Cu lnh
phi xc djnh tn v gi trj cho mi trung ca bn ghi. Ban phi xc djnh cc
trung ca bn ghi m d liu se duoc gn vo cng nhu gi trj ca trung d.
hi ban khng chi r danh sch trung, gi trj mc djnh hoc NULL s din vo
cc trung vng mt. Cc bn ghi duoc thm vo cui bng.
Ban cng c th dng NSERT NTO d ni mt tp hop cc bn ghi t mt
bng khc hoc mt truy vn dng mnh d SELECT ... FROM duoc chi ra c
php trn. Trong trung hop ny, mnh d SELECT chi r trung ni thm vo
bng dch.
Bng ngun hoc bng dch c th l mt bng hay mt truy vn. Nu mt truy
vn duoc xc djnh, Microsoft Jet database engine ni mt tp hop bn ghi vo
mt hoc nhiu bng duoc chi ra trong truy vn.
NSERT NTO l mt tu chon, nhung khi c mt n, phi dng truc SELECT.
Nu bng dch cha kho chnh, phi chc chn rng ban b sung nhng bn
ghi vi ni dung kho l duy nht, v trung d khng duoc d trng.
Nu ban b sung cc bn ghi vo mt bng vi trung Couter, loai b trung d
ra khi danh sch nu ban mun Microsoft Jet dnh s lai cc bn ghi. Thm
trung Counter vo truy vn nu ban mun gi lai gi trj ban du. Nu c gi trj
trng, tt nhin l Jet database s khng b sung bn ghi d.
Dng mnh d N d ni cc bn ghi vo mt bng ca mt CSDL khc.
tao mt bng mi, dng mnh d SELECT ... NTO thay th d tao mt truy
vn tao bng.
tm ra cc bn ghi s duoc b sung, truoc khi thi hnh truy vn b sung, hy
xem qua kt qu ca truy vn chon vi cng biu thc diu kin.
Mt truy vn b sung khng nh hung ti cc bng hoc truy vn ngun.
.Truy vn cp nht:
Truy vn UPDATE thay di gi trj trong cc trung duoc tho mn cc diu kin
cp nht.
UPDATE table SET newvalue WHERE criteria
UPDATE dc bit hu dung khi ban mun thay di ni dung nhiu bn ghi hoc
khi cc bn ghi ban mun thay di nm trn nhiu bng. Thng thung ban
dng truy vn ny vi mt phuong thc thi hnh.
Ban c th thay di mt vi trung cng lc. du sau tng Order Amount ln
10% v gi trj Freight ln %:
UPDATE Orders SET Order Amount Order Amount 1.1, Freight
Freight 1.0 WHERE Ship Country U
UPDATE khng tao ra tp kt qu. Nu ban mun xem nhng bn ghi no duoc
cp nht, truc tin xem kt qu ca truy vn chon (dng cng biu thc diu
kin) v sau d thi hnh truy vn cp nht.
Truy vn Crosstab:
Truy vn Crosstab cho php ban chon cc gi trj t cc trung hay cc biu
thc nhu l cc tiu d ct, v th, ban c th xem d liu mt cch c dong hon
vi mt cu lnh SELECT bnh thung. Ban dng mnh d TRANSFORM d
tao cc truy vn Crosstab.
TRANSFORM aggfunction selectstatement POT pivotfield N
(value1,value2,...)
Mnh d TRANSFORM dng nhng tham s sau: aggfunction Mt hm tng
hop trn d liu duoc chon.
selectstatement : Mt cu lnh SELECT
pivofield : Trung hoc biu thc ban mun dng d tao tiu d ct trong kt
qu ca truy vn.
value1, value2: Cc gi trj c djnh duoc dng d tao tiu d ct.
hi ban tng hop d liu vi cng cu l truy vn Crosstab, ban chon cc gi trj
cc trung hay biu thc cu th nhu l cc tiu d v th ban c th xem d liu
trong mt danh c dong hon.
TRANSFORM dng truc mnh d SELECT xc djnh cc tiu d dng v dng
truc mt mnh d GROUP B xc djnh cc dng cu th duoc nhm. Tt nhin,
ban c th tu chon cc mnh d khc, nhu WHERE, nhng mnh d xc djnh
thm cc tiu chun chon hay sp xp.
Cc gi trj tr lai trong pivotfield duoc dng nhu l tiu d ct trong tp kt qu
ca truy vn. du, vic xoay doanh s bn hng trong mt thng trong mt truy
vn Crosstab s tao ra 12 ct. Ban c th han ch pivotfield d tao cc tiu d
ct t cc ga trj c djnh (gi trj 1, gi trj 2) duoc lit k trong mnh d tu chon
N.
du sau tao ra mt truy vn Crosstab trnh by kt qu bn hng theo thng
trong mt nm ca mt ngui no d. Cc thng duoc tr lai l cc ct t tri
sang phi, v tn sn phm duoc lit k t trn xung dui nhu cc hng.
PARAMETERS Sales for which year ? LONG TRANSFORM Sum(Order
Details.Quanlity (Order Details.Unit Price -(Order Details.Discount / 100)
Order Details.Unit Price)) AS Sales SELECT Product Name FROM
Orders NNER JON (Products NNER JON Order Details ON Products.
Product D Order Details.Product D) ON Orders.Order D Order
Details.Order D WHERE DatePart ("yyyy, Order Date) Sales for which
year ? GROUP B Product Name ORDER B Product Name POT
DatePart("m, Order Date)
t ni:
Mt trong nhng dc tnh hu ch nht ca CSDL quan h l kh nng ni hai
hay nhiu bng vi nhau d tao nn mt bng mi (hay mt Recordset) cha
dung thng tin t cc bng c.
Cc bng duoc ni theo cc mi quan h gia chng, thng thung nht l gia
kho chnh ca mt bng v kho ngoi tuong ng ca bng kia. Tu thuc vo
cch thc ni cc bng vi nhau m ban c th tao ra cc loai lin kt sau:
NNER JON Cc bn ghi ca c hai bng duoc cha trong lin kt chi khi mt
trung cu th trong bng khp vi mt trung cu th trong bng th hai.
LEFT OUTER JON Tt c cc bn ghi t bng mt duoc cha trong lin kt,
cng vi cc bn ghi trong bng hai m d cc trung cu th khp vi cc
trung tuong ng trong bng mt.
RGHT OUTER JON Tt c cc bn ghi t bng th hai duoc dua vo lin kt
cng vi cc bn ghi t bng mt m c cc trung khp vi cc trung trong
bng hai.
nner joins:
tao ra mt truy vn chi cha cc bn ghi c d liu trong trung lin kt
ging nhau, hy dng php lin kt NNER JON.
NNER JON kt hop cc bn ghi ca hai bng khi c cc gi trj khp nhau trong
trung lin kt. Dng c php sau:
FROM table1 NNER JON table2 ON table1.field table2.field2
Ban c th dng NNER JON trong bt c mnh d FROM no. N tao ra mt
lin kt tuong duong (Equi-joins) , nhu mt lin kt NNER JON. Equi-joins l
mt dang kt ni ph bin. Chng kt hop cc bn ghi t hai bng khi c d liu
trong hai trung kt ni khp nhau.
Ban c th dng NNER JON vi cc bng Department v Employees d chon
tt c cc nhn vin trong mi phng. Nguoc lai, d chon tt c cc phng (thm
ch nu mt s phng khng c nhn vin no), ban c th dng LEFT JON
hoc RGHT JON.
Ban c th lin kt bt c hai trung kiu s no, thm ch nu chng khc kiu.
du ban c th kt ni mt trung s, vi thuc tnh kch thuc duoc thit lp
l s nguyn, v mt trung Couter. du sau cho chng ta bit kt ni hai bng
Categories v Products trn trung CategoryD nhu th no:
SELECT Category Name, Product Name FROM Categories NNER JON
Products ON Categories.Category D Products.Category D
du sau tao ra hai lin kt tuong duong (equi-joins): mt gia hai bng Order
Details v Orders v mt gia hai bng Orders v Employees. iu ny l cn
thit bi bng Employees khng cha thng tin v bn hng, v Order Details
khng cha thng tin v nhn vin. Truy vn dua ra mt danh sch cc nhn
vin v tng s v hng ho bn duoc:
Dim MyQR AS QueryDef MyQR.SQL "SELECT DSTNCTROW Sum(Unit
Price.Quantity) AS Sales, First Name " " Last Name AS Name
FROM Employees NNER JON (Order NNER JON Order Details ON
Order.Order D Order Details.Order D) ON Employees.Employee D
Orders.Employee D GROUP B First Name " " Last Name
Cu lnh ny phi duoc s dung nhu l thuc tnh ca di tuong QueryDef hoc
l tham s ca phuong thc OpenRecordset.
du trn dng chi dn DSTNCTROW d loai b d liu trn co s cc bn ghi
hon ton trng nhau. du, ban c th tao mt truy vn lin kt cc bng
Customers vi bng Orders vi trung lin kt l trung Customer D. Bng
Customers khng cha cc bn ghi c cng ni dung trung Customer D,
nhung trong bng Orders th c bi mt khch hng c th c nhiu hop dng
dt mua hng. Cu lnh SQL sau chi ra cch ban dng chi dn DSTNCTROW
d dua ra mt danh sch cc cng ty c t nht mt hop dng dt mua hng
nhung khng cu th v cc hop dng d.
SELECT DSTNCTROW Company Name FROM Customers NNER JON
Order ON Customers.Customer D Orders.Customer D ORDER B
Company Name
Nu ban b st chi dn DSTNCTROW th kt qu s tr lai cc tn cng ty
trng nhau v c nhiu bn hop dng dt mua hng.
DSTNCTROW chi c hiu qu khi ban chon cc trung t mt s bng duoc
lin kt trong truy vn. DSTNCTROW duoc b qua khi ban chon t mt bng.
Lin kt tri, phi (LEFT JON RGHT JON - Lin kt ngoi):
Lin kt ngoi (OUTER JON) ni cc bn ghi ca bng ngun khi chng duoc
dng trong bt k mnh d FROM no vi c php sau:
FROM table1 LEFT RGHT JON table2 ON table1.field1 table2.field2
Dng LEFT JON d tao mt lin kt ngoi bn tri. Lin kt ngoi bn tri gm
tt c cc bn ghi t bng th nht (bng bn tri), tc l bao gm c cc bn
ghi khng khp ni dung trung lin kt vi bt c bn ghi no ca bng th hai
(bng bn phi).
Dng RGHT JON d tao lin kt ngoi bn phi. Lin kt ngoi bn phi bao
gm tt c cc bn ghi c trong bng th hai (bng bn phi), tc l bao gm c
cc bn ghi khng khp ni dung truong lin kt vi bt c bn ghi no ca
bng cn lai (bng bn tri).
du, ban c th dng LEFT JON cho bng Departments (tri) v bng
Employees (phi) d ly ra tt c cc phng ban, trong d c c cc phng
khng c nhn vin no. ly tt c cc nhn vin, bao gm c nhng nhn
vin khng thuc phng ban no, hy dng RGHT JON.
du sau c thy cch thc d ban c th lin kt bng Categories v bng
Products du trn trung Category D. Truy vn s dua ra danh sch tt c tn
cc hang muc, trong d c nhung hang muc khng c sn phm no.
SELECT Category Name, Product Name FROM Categories LEFT JON
Products ON Categories.Category D Products.Category D
Trong v du trn dy, Category D l mt trung lin kt, nhung khng c mt
trong kt qu ca truy vn v n khng duoc chon trong mnh d SELECT.
Lin kt lng nhau (Nested joins):
Ban c th lng cc chi dn JON nhu c php sau dy:
SELECT fields FROM table1 NNER JON (table2 NNER JON (table
NNER JON ( tablex NNER JON ... ) ON table.field tablex.fieldx)
ON table2.field2 table.field) ON table1.field1 table2.field2
Truy vn hop (Union Queries): Ban c th dng cc thao tc ni d tao cc truy
vn hop, kt hop kt qu ca hai hay nhiu bng hoc truy vn dc lp. query1
UNON ALL query2 UNON ALL queryn ...
query dai din cho biu thc xc djnh trung cha d liu kiu s m ban mun
tnh trung bnh hoc mt biu thc thuc hin mt php tnh c dng d liu trong
trung d. Ton hang trong biu thc c th tn ca cc trung, c th l mt
hng, mt hm (c th l c sn ca h thng hoc do ngui dng djnh ngha
nhung khng duoc l hm tng hop(aggregate functions)).
Ban c th kt hop kt qu ca mt truy vn v mt cu lnh SQL trong mt
php hop UNON don. du sau kt hop kt qu ca mt truy vn c tn goi
New Accounts v mt cu lnh SELECT: TABLE New Accounts UNON ALL
SELECT FROM Customers WHERE Order Amount 1000
Mc djnh, khng c hai bn ghi no trng nhau trong kt qu ca mt truy vn
hop tuy nhin, ban c th bao gm c chi dn ALL d kt qu c c cc bn ghi
trng nhau. N cng lm cho truy vn thi hnh nhanh hon.
Tt c cc truy vn trong phep hop UNON yu cu c cng s trung, tuy nhin
cc trung khng cn thit phi c cng kch thuc hoc kiu d liu.
Ban c th dng mnh d GROUP B v/hoc HANG trong mi truy vn tham
gia php hop d nhm d liu. Ban c th dng mt mnh d ORDER B cui
truy vn cui cng d kt qu tr v duoc sp theo mt th tu xc djnh.
7.Ti uu truy vn:
Ti uu CSDL l mt ch d ln v bao hm nhiu vn d. Nhiu yu t, bao gm
c cu hnh phn cng v phn mm, ci dt Windows, b dm, khng lin quan
dn cc truy vn, nhung chng nh hung dn hiu qu ca CSDL.
Mt yu t quan trong khc l dng cc bng gn vi CSDL hon l kt ni truc
tip vi CSDL t xa. n d ny duoc bn k trong cun "Accessing External
Data.
Phn ny s trnh by ngn gon mt s cch ti uu lin quan dc bit ti su xy
dung cc truy vn, v tn dung kh nng ti uu Jet database d xy dung cc
truy vn.
Mt s chin luoc ti uu thung dng:
- Han ch dng cc trung sp xp, dc bit l cc trung khng duoc tao chi
muc.
- m bo cc bng kt ni t cc ngun khc nhau du duoc tao chi muc hoc
l duoc lin kt trn cc kho chnh.
- Nu d liu khng thay di thung xuyn, dng cc truy vn tao bng t truy
vn Dynasets ca ban. Dng cc bng d lm co s cho cc form, cc bo co
hon l dng cc truy vn.
- Nu ban dang tao mt truy vn Crosstab, hy dng tiu d ct c djnh bt c
khi no c th.
- Dng BETWEEN...AND, N v cc du " trn cc ct duoc dnh chi muc.
- hi tao mt truy vn, khng nn thm cc trung khng cn thit.
Ti uu cc truy vn vi cng ngh Rushmore:
Rushmore l mt cng ngh truy cp d liu duoc dng trong Jet database
engine cho php mt tp hop cc bn ghi duoc truy cp mt cch ht sc hiu
qu. i Rushmore, khi ban dng mt kiu biu thc nht djnh trong diu kin
truy vn, truy vn ca ban s thi hnh nhanh hon rt nhiu.
Biu thc ti uu dang don gin:
Jet database engine c th ti uu ho cc biu thc don gin trong mnh d
WHERE trong cu lnh SELECT. Dang biu thc don gin c th thnh lp nn
ton b hoc mt phn phn ca biu thc.
Mt biu thc don gin c th ti uu ho c mt trong nhng dang sau:
indexedfield comparisonoperator expression - or -expression
comparisonoperator indexedfield Trong dang biu thc don gin nht c th ti
uu:
- indexedfield phi l mt trung m trn d c tao lp chi muc.
- comparisonoperator phi l mt trong nhng kiu sau dy: , , , , , ,
BETWEEN, LE, hoc N.
- expression l mt biu thc hop l bt k, bao gm cc hng, cc hm, cc
trung t cc bng.
Ch : kt qu l tt nht, gi trj so snh trong biu thc dng LE phi bt
du bng mt k tu ch khng duoc l k tu dai din (, ?). Ban c th ti uu
LE "m ch khng th ti uu LE "m.
Biu thc c th ti uu dang phc hop.
Microsoft Jet dng Rushmore d ti uu ho cc biu thc phc hop duoc kt
hop t cc biu thc (c th ti uu) don gin vi cc ton t AND hoc OR. Mt
biu thc nhu th nm trong cc dang sau:
- simpleexpression AND simpleexpression
- simpleexpression OR simpleexpression
Ghi nh nhng diu sau dy khi dng biu thc ti uu ho Rushmore:
- Hm COUNT() duoc ti uu mc cao cho cc truy vn dng Rushmore.
- Nu chi muc l gim dn v ton t so snh khc du bng, truy vn khng th
ti uu duoc.
- Rushmore s lm vic vi Microsoft Access tables, cng nhu vi Microsoft
FoxPro

You might also like