You are on page 1of 29

GII THIU Nhng kin thc c bn ca SQL

Ngn ng truy vn c cu trc (SQL) l mt ngn c s d liu (CSDL) chun cng nghip c cng c qun tr d liu ca Microsoft (Microsoft jet database engine) s dng. SQL c s dng to nhng i tng truy vn (QueryDef objects), nh l i s cho phng thc m tp hp bn ghi (OpenRecordset method), v l thuc tnh ngun bn ghi (RecordSource property) ca iu khin d liu (data control). N cng c th c dng vi nhng phng thc thi hnh (Execute method) trc tip to v thao tc ... (jet databases), v to ra cc SQL PassThrough truy vn thao tc trn cc CSDL khch ch t xa (remote client/server databases). Chng ny s bn ti cu trc c bn ca SQL, v cch thc s dng n cho vic to, bo tr v sa i CSDL. Chng ta cng ni ti s xy dng v cng dng ca truy vn SQL to cc i tng tp hp bn ghi (Recordset objects), v chn, sp xp, lc v cp nht d liu trong nhng bng c s. Hn na, chng ny s xem xt cch thc ti u ho truy vn SQL v mt tc v hiu qu. Cui cng, chng ta bn ti s khc nhau gia Microsoft Jet SQL v ANSI SQL mt cch c th SQL L G ? SQL l mt ngn ng lp trnh v CSDL c ngun gc lin quan mt thit ti s pht minh ra m hnh CSDL quan h ca E.F.Codd vo u nhng nm 70. Tin thn ca SQL l ngn ng Sequel, v v l do ny SQL vn thng c pht m l sequel hn l ess cue ell, mc du c hai cch pht m u c chp nhn. SQL ngy nay pht trin rng v tr thnh mt ngn ng chun cho CSDL quan h, v c nh ngha bi chun ANSI. Hu ht cc bn thi hnh ca SQL ch l s bin i nh t SQL chun, bao gm c phin bn c Jet database engine h tr. Nhng s khc nhau ny s c nhc ti cui chng, nhng hu ht cc cu trc v cc chc nng ca ngn ng l nht qun i vi cc nh pht trin cc h qun tr CSDL. Nu bn s dng bt c bn thi hnh no ca SQL, bn s thy khng kh khn my khi chuyn sang Microsoft Jet SQL.

SQL vs. Navigation Nh cp trong phn u ti liu, Mircosoft Jet database engine cung cp hai phng thc tch bit hon tt hu ht cc tc v CSDL: - Mt m hnh iu hng da trn c s dch chuyn qua li gia cc bn ghi. - Mt m hnh quan h da trn truy vn hi c cu trc (SQL). M hnh iu hng bao gm nhng thuc tnh v phng thc c m t trong To v sa i CSDL (Creating and Modifying Databases) v Thao tc vi bn ghi v trng (Working with Records and Fields). M hnh quan h c ni bn ti trong chng ny. Nhng lp trnh vin khng quen thuc vi nhng h qun tr c s d liu hng file nh dBASE, Foxpro, v Paradox c th cm thy d chu khi bt u vi cc phng thc iu hng c tho lun trong chng trc. Tuy nhin, trong hu ht cc trng hp nhng phng thc SQL vi vai tr tng ng t ra hiu qu hn, v ni chung chng nn c dng cho nhng ni tnh hiu qu c xem l quan trng hn c. Hn na SQL c mt li im l mt giao tip mc chun cng nghip v CSDL, th nn mt s hiu bit v cc lnh SQL cho phep bn 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 , cc ton t, v cc hm tng hp (hm nhm - aggregate functions). Nhng thnh phn ny c kt hp vo trong cc pht biu (statements) dng to, cp nht, v thao tc trn CSDL. Nhng mc sau s m t nhng thnh t mt cch ngn gn, v phn cn li ca chng ny s a ra cho bn nhng v d c th v cng dng ca chng. Ch : Nhng mc sau s nhng lnh v t kho c dng thng xuyn nht, nhng khng phi tt c. c mt tham kho hon chnh v danh sch cc t kho SQL, hy tm kim SQL trong Books Online. 1.Lnh SQL:

Ging nh m hnh iu hng ca DAO (Data Access Object), SQL cung cp c hai phn, ngn ng nh ngha d liu (DDL Data Definition Language) v ngn ng thao tc d liu (DML Data Manipulation Language). Tuy c vi phn trng lp, nhng nhng cu lnh DDL cho php bn to v nh ngha cc CSDL, cc trng, cc ch mc mi, trong khi nhng cu lnh DML bn xy dng cc truy vn, sp xp, lc, v trch d liu t trong CSDL. DDL Cc cu lnh DDL trong SQL l biu thc c xy dng chung quanh nhng mnh sau: CREATE Dng to mi cc bng, cc trng v cc ch mc. DROP Dng xo cc bng v ch mc khi CSDL. ALTER Dng sa i cc bng bng cch thm trng, thay i nh ngha ca cc trng. DML Cc cu lnh DML l cc biu thc c xy dng da trn cc mnh sau: SELECT Dng truy vn CSDL ly c nhng bn ghi tho mn nhng tiu chun no . INSERT Dng chn mt nhm d liu vo CSDL thng qua mt thao tc. UPDATE Dng thay i gi tr ca nhng trng, nhng bn ghi c th. DELETE Dng loi b nhng bn ghi ra khi CSDL. 2.Mnh SQL: Mnh l nhng iu kin thay i c dng xc nh d liu bn mun chn, mun thao tc. Bng sau lit k nhng mnh bn c th dng. FROM Lit k danh sch cc bng m ta cn ly cc bn ghi t . WHERE Xc nh cc iu kin m bn ghi c chn phi p ng c. GROUP BY Dng nhm cc bn ghi c chn thnh cc nhm ring bit. HAVING Dng a ra iu kin cho mi nhm. ORDER BY Dng sp xp cc bn ghi c ch theo mt th

t no . 3.Nhng ton hng SQL: C hai loi ton hng trong SQL: ton hng logic v ton hng so snh. Ton hng logic: Ton hng logic c dng ni cc biu thc, thng l trong phm vi ca mnh WHERE. V d nh: SELECT * FROM MY_TABLE WHERE Condition1 AND Condition2; Nhng ton t logic bao gm: AND, OR, NOT Ton hng so snh: Ton hng so snh c dng so snh tng i gi tr hai biu thc xc nh nhng hot ng no s c thc hin. V d: SELECT * FROM Publishers WHERE PubID = 5; Nhng ton t so snh bao gm: < b hn <= b hn hoc bng > ln hn >= ln hn hoc bng = bng <> khc 4.Hm tng hp (aggregate functions) Hm tng hp (hm nhm) c dng trong phm vi ca mnh SELECT trn mt nhm bn ghi tr li mt gi tr. V d, hm AVG c th tr li gi tr trung bnh ca tt c cc gi tr trong mt trng c th. Bng sau lit k danh sch cc hm tng hp. AVG Tr li gi tr trung bnh trong mt trng. COUNT Tr li s bn ghi c chn. SUM Hm tnh tng cc gi tr trong mt trng c th. MAX Hm tr v gi tr cc i ca trng .

MIN Hm tr v gi tr cc tiu ca trng NHNG THAO TC DLL DDL bao gm mt s lnh bn c th dng to bng v ch mc, v sa i cc bng bng cch thm hoc loi b cc ct hoc ch mc. Nhng cu lnh nh ngha d liu c th ch c dng vi Jet database; Chng khng c h tr cho bt c CSDL nh dng ngoi. Ch : dng cu lnh DDL, hoc bt c truy vn no khng tr li tp bn ghi, hy ng ngoc kp v s dng chng nh l i s ca cc phng thc thi hnh ca CSDL hay i tng truy vn (QueryDef object) nh trong v d sau: MyDB.Execute CREATE TABLE Employees ([First Name] TEXT, [Last_ Name] TEXT); dng bt c mt cu lnh no tr li cc bn ghi (nh SELECT), dng biu thc nh l i s ngun ca phng thc m tp bn ghi (OpenRecordset method), nh trong v d sau: MyDB.OpenRecordset (SELECT * FROM Titles WHERE Au_ID = 5, _ dbOpenDynaset); 1.To mt bng: to mt bng trong CSDL, dng cu lnh CREATE TABLE. Mt cu lnh hon chnh nhn cc i s l tn bng, tn cc trng, kiu d liu ca cc trng v rng ca cc trng. V d sau to mt bng c tn l Employees, c hai trng kiu TEXT vi rng l 25: CREATE TABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25)); Thm v xo ct: Bn c th thm, sa i hoc xo cc ct vi cu lnh ALTER TABLE. V d, cu lnh sau thm mt trng kiu TEXT c rng 25 v tn l Notes vo bng Employees: ALTER TABLE Employees ADD COLUMN Notes TEXT(25); loi b mt ct, dng t kho DROP. V d ny loi b ct c tn l Notes mi va c thm lc ny: ALTER TABLE Employees DROP COLUMN Notes;

sa i mt trng, trc tin bn phi xo n, v sau l thm trng mi vi tn nh c. V d sau tng rng ca trng Notes: ALTER TABLE Employees DROP COLUMN Notes; ALTER TABLE Employees ADD COLUMN Notes TEXT(30); Ch : Dng ALTER TABLE, bn ch c th thm hoc xo mt trng ti mi thi im. 2.To v xo ch mc: C ba cch khc nhau to ch mc: - Lc bt u to bng vi cu lnh CREATE TABLE - Vi cu lnh CREATE INDEX. - Vi cu lnh ALTER TABLE Mc du c ba cch ny u cho kt qu tng t, nhng vn c nhng khc im khc nhau. Nu bn mun thm mt kho ngoi (foreign key) v p buc ton vn tham chiu (enfore referential integrity), bn phi dng mt mnh rng buc (CONSTRAINT clause) trong cc cu lnh CREATE TABLE hoc ALTER TABLE. i khi ngi ta mun to mt bng ban u khng c ch mc, v tip l thit k cc tham s ch mc sau khi dng mu bng. Vi tnh hung ny, bn nn dng CREATE TABLE to mu bng khng c ch mc, v sau thm cc ch mc vi cu lnh CREATE INDEX hoc ALTER TABLE. To mt ch mc vi cu lnh CREATE TABLE. Khi bn to mt bng, bn c th to mt ch mc cho tng ct ring r, hoc hai hoc nhiu hn cc ct, dng mnh SQL CONSTRAINT (t kho CONSTRAINT bt u nh ngha mt ch s). V d sau y minh ho cch to ra mt bng vi ba trng c ch mc: CREATE TABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25), _ [Date of Birth] DATETIME, CONSTRAINT EmployeesIndex UNIQUE _ ([First Name], [Last Name], [Date of Birth])); nh ch mc vi mt ct, bn t mnh CONSTRAINT vo mt trong nhng m t ct. V d, nh ch mc trng Date of Birth, bn dng cu lnh CREATE TABLE sau y: CREATE TABLE Employees ([First Name] TEXT(25), [Last Name]

TEXT(25), _ [Date of Birth] DATETIME CONSTRAINT EmployeesIndex PRIMARY); S khc nhau gia nh ch mc cho nhiu trng v cho mt trng l: cho mt trng n, t kho CONSTRAINT bt u nh ngha ch mc khng b tch bit vi trng cui cng bi du phy m i st ngay sau kiu d liu ca trng c nh ch mc . To ch mc vi cu lnh CREATE INDEX. Bn cng c th dng mnh CREATE INDEX thm mt ch mc. V d sau y a ra cng mt kt qu vi v d trc, ngoi tr vic dng CREATE TABLE thay th cho ALTER TABLE. CREATE UNIQUE INDEX MyIndex ON Employees ([Date of Birth]); Trong mnh tu chn WITH, bn c th p buc d liu vi rng buc PRIMARY, c ngha y l trng ch mc chnh; DISALLOW NUL, ngha l trng ny khng b b trng; IGNORE NULL, c ngha bn ghi s khng c nh ch mc nu trng trng. V d sau thm mnh WITH vo v d trc, cho khng bn ghi no c th c thm vo bng m ct s bo him x hi b b trng: CREATE UNIQUE INDEX MyIndex ON Employees (SSN) _ WITH DISALLOW NULL; Ch : Khng dng t kho PRIMARY khi bn to ra mt ch mc mi trong bng m bng tn ti kho chnh (Primary key); Nu bn vi phm iu ny th h thng s bo li. Bn ang dng CREATE INDEX to mt c t ch mc trn mt bng m cha tn ti ch mc no. to mt ch mc nh th; bn khng cn s cho php hoc truy cp ti mt my ch xa, v CSDL xa khng nhn bit c hay khng h nh hng bi ch mc . Bn dng cng mt c php cho bng kt ni v bng gc. iu ny c hu dng khi to mt ch mc trn mt bng thng l ch c (read only) bi v n thiu mt ch mc. To mt ch mc vi cu lnh ALTER TABLE Bn cng c th thm mt ch mc cho mt bng tn ti

bng cch dng cu lnh ALTER TABLE, dng c php ADD CONSTRAINT. V d sau thm mt ch mc cho trng SSN: ALTER TABLE Employees ADD CONSTRAINT MyIndex _ PRIMARY (SSN);

Bn cng c th thm ch mc cho nhiu trng v mt bng bng cch dng cu lnh ALTER TABLE ging nh sau: ALTER TABLE Employees ADD CONSTRAINT NameIndex _ UNIQUE ([Last Name], [First Name], SSN); Mnh CONSTRAINT v ton vn tham chiu (Referential Integrity). Mt rng buc l mt ch mc. Bn dng mnh CONSTRAINT to hoc xo cc ch mc vi cc cu lnh CREATE TABLE v ALTER TABLE, nh ch ra phn trc. Mnh CONSTRAINT cng cho php bn nh ngha kho chnh v kho ngoi, nh 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 To v sa i CSDL (Creating and Modifying Databases). C hai loi mnh CONSTRAINT: Mt to ch mc cho tng trng n v mt to ch mc cho nhiu hn mt trng. C php ca ch mc trn mt trng l: CONSTRAINT name {PRIMARY KEY | UNIQUE | REFERENCES foreigntable [(foreginfield1, foreignfield2)]} C php cho ch mc trn nhiu trng l: CONSTRAINT name {PRIMARY KEY (primary1[,primary2[,...]]) | UNIQUE (unique1[,unique2[,...]]) | FOREIGN KEY (ref1[,ref2[,...]]) REFERENCES foreigntable [(foreignfield1[,foreignfield2[,...]])}; Sau y l cc i s p dng cho hai loi trn:

name : Tn ca ch mc c to. primary1, primary2 : Tn ca trng hay cc trng c ch nh lm kho chnh. unique1, unique2 : Tn ca trng hay cc trng c ch nh lm kho khng lp. ref1, ref2 : Tn ca trng hoc cc trng kho ngoi tham chiu ti mt trng, mt s trng bng khc. foreigntable Tn ca bng ngoi cha mt hoc mt s trng c xc nh bi foreignfield. foreignfield1, foreignfield2: Tn ca trng hoc mt s trng trong bng ngoi c xc nh bi ref1, ref2. Dng CONSTRAINT, bn c th gn cho mt trng nh mt trong nhng loi ch mc sau: - UNIQUE Ch nh trng mt trng c gi tr khng lp. iu ny c ngha l hai bn ghi bt k trong bng khng c cng gi tr trong trng ny. Bn c th rng buc bt k trng no hoc mt danh sch cc trng l duy duy nht (unique). Nu nhiu trng c ch nh l khng lp, b gi tr kt hp ca cc trng phi l duy nht, du l hai hoc mt s bn ghi c cng gi tr trong mt trng ca nhm cc trng . - PRIMARY KEY Ch nh mt hoc mt tp cc trng trong bng to thnh kho chnh. Tt c gi tr trong kho chnh phi duy nht, v c mt kho chnh duy nht cho mt bng. Nu bn thit lp mt kho chnh cho mt bng tn ti kho chnh th h thng s bo li. - FOREIGN KEY Xc nh mt trng nh mt kho ngoi. Nu kho chnh ca bng ngoi c nhiu hn mt trng, bn phi dng mt nh ngha cho ch mc nhiu trng, lit k tt c cc trng tham chiu, tn ca cc bng, tn ca bng ngoi, v tn ca cc trng c tham chiu trong bng ngoi theo cng mt th t nh lit k danh sch cc trng tham chiu. Nu trng c tham chiu l kho chnh ca bng ngoi, bn khng cn ch nh trng c tham chiu m Jet engine ngm nh kho chnh ca bng ngoi l trng c tham chiu. V d, thm mt ch mc cho bng Titles trong CSDL Biblio.mdb, bn c th dng cu lnh sau y: ALTER TABLE Titles ADD CONSTRAINT MyIndex _ FOREIGN KEY (PubID) REFERENCES Publishers (PubID);

Nh rng, bng cch dng t kho FOREIGN KEY, Chng ta ang thit lp mt quan h gia trng PubID ca bng Titles (kho ngoi) v trng PubID trong bng Publishers (kho chnh). Mi quan h ny s c rng buc bi Jet engine, nh th bn ang dng phng thc CreateRelation c m t trong "To v sa i CSDL" PHN NGN NG THAO TC TRN D LIU - DML Phn ngn ng thao tc trn d liu (DML - Data Manipulation Languague) c dng ly cc bn ghi trong cc bng, cp nht, thm, xo cc bn ghi ca cc bng. C mt s cu lnh h tr cc tc v ny, nhng phn ln l c cu trc ca cu lnh SELECT. Truy vn chn: S dng cu lnh SELECT ly cc bn ghi t CSDL nh mt tp hp cc bn ghi, lu tr chng trong mt i tng tp bn ghi mi (Recordset object). ng dng ca bn c th thao tc trn tp bn ghi ny nh hin th, thm, thay i v xo nu cn thit. ng dng ca bn cng c th hin th, sinh cc bo co t d liu . SELECT thng l t u tin trong mt cu lnh SQL. Hu ht cc cu lnh hoc l SELECT hoc l SELECT...INTO. Bn c th dng mt cu lnh SELECT trong SQL l thuc tnh ca i tng truy vn (QueryDef object), l thuc tnh RecordSource ca mt iu khin d liu (data control), hoc mt i s cho phng thc OpenRecordset. cu lnh SELECT khng thay i d liu trong CSDL; chng ch ly d liu ra t CSDL. Dng tng qut ca cu lnh SELECT l: SELECT fieldlist FROM tablenames IN databasename WHETE searchconditions GROUP BY fieldlist HAVING group criteria ORDER BY fieldlist WITH OWNERACCESS OPTION Mi phn trong cu lnh i din cho mt mnh c bn n cc phn sau:

Truy vn n gin: Dng n gin nht ca cu lnh SELECT l: SELECT * FROM tablename; V d, truy vn chn sau tr li tt c cc ct ca tt c cc bn ghi trong bng Employees: SELECT * FROM Employees; Du sao cho bit rng tt c cc trng ca bng c chn. Bn cng c th ch nh mt s trng nht nh. Khi hin th, d liu trong mi ct s hin theo th t nh chng c lit k, v vy bn c th thay i li th t cho d c: SELECT [First Name], [Last Name] FROM Employees; Ch nh ngun d liu c chn: Mt cu lnh SELECT lun c mnh FROM, cho bit danh sch cc bng ta cn ly cc bn ghi t . Nu mt trng tn ti trong nhiu bng trong mnh FROM, t trc chng tn trng v du chm. Trong v d sau, trng Department c trong c hai bng Employees v Supervisors. Cu lnh ch chn trng Department ca bng Employees v SupvName t bng Supervisors: SELECT Employees. Department, SupvName _ FROM Employees, Supervisors _ WHERE Employees.Department = Supervisors.Department; Khi mnh FROM lit k nhiu hn mt bng, th t ca chng khng quan trng. Xc nh mt bng t mt CSDL bn ngoi. i khi, bn cn thit tham chiu ti mt bng ca mt CSDL bn ngoi m cng c qun tr CSDL (Microsoft Jet database engine) c th kt ni ti, nh CSDL dBASE, Paradox hoc mt Jet database bn ngoi. Bn c th lm iu ny bng mnh tu chn IN. Mnh IN thng xut hin sau tn bng trong mnh FROM, nhng cng c th c dng trong SELECT INTO hoc INSERT INTO, khi ch l mt CSDL ngoi. Ch : Bn ch c th IN kt ni mt CSDL ngoi ti mt thi im. Trong mt s trng hp, i s ng dn cp ti c th

mc cha CSDL. V d, khi lm vic vi dBASE, Foxpro, hoc Paradox, tham s ng dn ch ra cc th mc cha cc file c ui .DBF hoc .DB. Tn bng c bt ngun t ch hoc biu thc bng. xc nh khng phi l mt Jet database, thm du chm phy v sau tn, v ng li bng du trch n hoc du ngoc kp. V d: dBASE IV; Bn cng c th dng t kho DATABASE ch nh CSDL ngoi. V d, c hai dng sau ch ra cng mt bng; SELECT * FROM Table IN [dBASE IV; _ DATABASE=C:\DBASE\DATA\SALES;]; SELECT * FROM Table IN C:\DBASE\DATA\SALES _ dBASE IV; Ch : nng hiu qu v d s dng, thng ngi ta dng bng kt ni thay cho mnh IN. bit thm thng tin v bng kt ni, xem cun Working with Records and Fields v cun Accessing External Data. Bit danh ca ct. Khi i tng Recordset c to ra t cu lnh SELECT, tn ct ca bng tr thnh tn trng ca i tng Recordset. Nu bn mun tn khc i, dng mnh AS. V d sau dng DOB l bit danh ca trng [Date of Birth] trong bng Employees: SELECT [Date of Birth] AS DOB FROM Employees; Bt c khi no bn dng truy vn tr li tn trng nhp nhng hoc trng tn trng, bn phi dng mnh AS cung cp tn khc nhau cho cc trng. V d sau dng b danh Head Count gn kt qu m trong tp bn ghi: SELECT COUNT(EmployeeID) AS [Head Count] FROM Employees; S dng bin Visual Basic trong cu lnh SQL Trong mt chng trnh Visual Basic, bn c th to mt cu lnh SELECT trong ng dng ca bn bng cch ghp cc bin

cc b vo trong mt cu lnh khi cn chn, sp xp, lc d liu c yu cu bi ng dng ca bn. V d bn c mt iu khin TextBox (TitleWanted) cha tn ca mt tiu v bn mun ly tt c cc sch trong bng Titles c nhan nh nhan trong hp TextBox, bn c th to mt cu lnh SQL bao gm c gi tr hin thi ca hp TextBox. Nhng nh rng SQL ng TitleWanted trong mt du trch n (): Set Rst = Db.OpenRecordset(SELECT * FROM Titles _ & WHERE Title = & TitleWanted.Text & ) 1.Lc v sp xp kt qu ca truy vn: SQL cung cp mt s t kha xc nhn v mnh tu chn gip bn thun tin hn trong vic hn ch v sp xp kt qu. Phn sau s tho lun v s tin dng ny. Ch dn DISTINCT b qua cc bn ghi trng nhau, dng t kho DISTINCT. Nu c dng, gi tr trong trng hay mt nhm cc trng c chn trong cu lnh SELECT s l duy nht. V d, C mt vi nhn vin lit k trong bng Employees c cng h. Nu hai bn ghi c cng ni dung trng Last Name l Smith th cu lnh sau s tr li mt bn ghi c ni dung l Smith: SELECT DISTINCT [Last Name] FROM Employees; Nu b t kho DISTINCT th truy vn s tr li nhiu hn mt gi tr Smith. Kt qu tp hp bn ghi ca truy vn dng DISTINCT khng cho php cp nht v khng phn nh c nhng thay i sau ca ngi dng khc. Ch dn TOP tr li mt s bn ghi nht nh u hoc cui ca phm vi cc bn ghi. Dng ch dn TOP. Gi s bn mun ly tn ca 25 sinh vin u ca lp tt nghip nm 1994: SELECT TOP 25 [First Name], [Last Name] FROM Students _ WHERE [Graduation Year] = 1994 _ ORDER BY [Grade Point Average] DESC; Nu bn khng dng mnh ORDER BY, truy vn s tr li 25 bn ghi tu trong bng Students tho mn iu kin trong

mnh WHERE. Bt c khi no bn dng truy vn tr li tn trng nhp nhng hoc trng tn trng, bn phi dng mnh AS cung cp tn khc nhau cho cc trng. V d sau dng b danh Head Count gn kt qu m trong tp bn ghi: SELECT COUNT(EmployeeID) AS [Head Count] FROM Employees; S dng bin Visual Basic trong cu lnh SQL Trong mt chng trnh Visual Basic, bn c th to mt cu lnh SELECT trong ng dng ca bn bng cch ghp cc bin cc b vo trong mt cu lnh khi cn chn, sp xp, lc d liu c yu cu bi ng dng ca bn. V d bn c mt iu khin TextBox (TitleWanted) cha tn ca mt tiu v bn mun ly tt c cc sch trong bng Titles c nhan nh nhan trong hp TextBox, bn c th to mt cu lnh SQL bao gm c gi tr hin thi ca hp TextBox. Nhng nh rng SQL ng TitleWanted trong mt du trch n (): Set Rst = Db.OpenRecordset(SELECT * FROM Titles _ & WHERE Title = & TitleWanted.Text & ) 1.Lc v sp xp kt qu ca truy vn: SQL cung cp mt s t kha xc nhn v mnh tu chn gip bn thun tin hn trong vic hn ch v sp xp kt qu. Phn sau s tho lun v s tin dng ny. Ch dn DISTINCT b qua cc bn ghi trng nhau, dng t kho DISTINCT. Nu c dng, gi tr trong trng hay mt nhm cc trng c chn trong cu lnh SELECT s l duy nht. V d, C mt vi nhn vin lit k trong bng Employees c cng h. Nu hai bn ghi c cng ni dung trng Last Name l Smith th cu lnh sau s tr li mt bn ghi c ni dung l Smith: SELECT DISTINCT [Last Name] FROM Employees; Nu b t kho DISTINCT th truy vn s tr li nhiu hn mt gi tr Smith. Kt qu tp hp bn ghi ca truy vn dng DISTINCT khng cho php cp nht v khng phn nh c nhng thay i sau

ca ngi dng khc. Ch dn TOP tr li mt s bn ghi nht nh u hoc cui ca phm vi cc bn ghi. Dng ch dn TOP. Gi s bn mun ly tn ca 25 sinh vin u ca lp tt nghip nm 1994: SELECT TOP 25 [First Name], [Last Name] FROM Students _ WHERE [Graduation Year] = 1994 _ ORDER BY [Grade Point Average] DESC; Nu bn khng dng mnh ORDER BY, truy vn s tr li 25 bn ghi tu trong bng Students tho mn iu kin trong mnh WHERE. Ch dn TOP khng chn la gia nhng bn ghi bng nhau. Trong v d, nu bn ghi th 25 v th 26 c cng hng th truy vn s tr li 26 bn ghi. Bn cng c th dng t kho PERCENT tr li mt s phn trm bn ghi u hay cui tu thuc vo mnh ORDER BY. Gi s rng thay v 25 sinh vin, bn mun 10 phn trm sinh vin ca lp. SELECT TOP 10 PERCENT [First Name], [Last Name] _ FROM Students _ WHERE [Graduation Year] = 1994 _ ORDER BY [Grade Point Average] DESC; Mnh WHERE Mnh WHERE xc nh nhng bn ghi t cc bng c lit k trong mnh FROM Microsoft Jet Database engine chn cc bn ghi tho mn iu kin lit k trong mnh WHERE. Nu bn khng c mnh WHERE, truy vn s tr li tt c cc dng t cc bng c chn. Nu bn ch ra hn mt bng trong truy vn v khng c mnh WHERE hoc mnh kt ni JOIN, truy vn ca bn s tr li kt qu tch cc ca cc bng. Ch : Mc d mnh WHERE c th m nhn tc v kt ni cc bng, nhng bn phi dng mt mnh JOIN thc hin cc thao tc kt ni nhiu bng vi nhau nu bn mun kt qu ca truy vn c th cp nht c.

Mnh WHERE tng t nh HAVING. WHERE xc nh nhng bn ghi c chn. Mt cch tng t, mt khi cc bn ghi c nhm bi GROUP BY, HAVING s quyt nh nhng bn ghi no c hin th. Dng mnh WHERE loi b cc bn ghi bn khng mun nhm bi GROUP BY. Mt mnh WHERE c th c ti 40 biu thc c kt ni bi cc ton t logic nh AND, OR. Khi bn dng mt trng tn c cha du cch hoc du cu, bn phi b tn trng trong du ngoc vung ([]): SELECT [Product ID], [Units In Stock] _ FROM Products _ WHERE [Units In Stock] <= [Reorder Level]; Khi bn xc nh i s iu kin, ngy phi nh dng theo dng ca M, ngay c khi bn khng dng phin bn Jet database ca M. V d, May 10, 1994, c vit l 10/5/94 theo kiu Anh v 5/10/94 theo kiu M. chc chn, cn t ngy ca bn vo trong cp du thng (#), nh v d sau y: tm cc bn ghi c ngy May 10, 1994 trong mt CSDL Anh, bn phi dng cu lnh sau y: SELECT * FROM Orders _ WHERE [Shipped Date] = #5/10/94#; Bn c th dng hm DateValue, n nhn bit c mi nh dng c thit lp bi Microsoft Windows. V d, m sau cho chun ngy M: SELECT * FROM Orders _ WHERE [Shipped Date] = DateValue(5/10/94); M sau dng cho Anh: SELECT * FROM Orders _ WHERE [Shipped Date] = DateValue(10/5/94); Mnh GROUP BY: GROUP BY l mnh tu chn cho php kt hp cc bn ghi theo mt gi tr ging ht nhau ca mt trng trng xc nh vo trong mt bn ghi duy nht. Gi tr tng hp c to ra cho mi bn ghi nu trong cu lnh SQL c cha hm tng hp (aggregate function), nh hm Sum, Count.v.v. Cc bn ghi c gi tr rng trng nhm vn c nhm. Tuy nhin, n khng c tng hp nu trng tng hp l rng.

Dng mnh WHERE loi b cc bn ghi bn khng mun nhm, v dng mnh HAVING lc cc bn ghi sau khi chng c nhm. Tr khi d liu l kiu k c (Memo) hoc trng t ng (Automation), mt trng trong danh sch nhm sau mnh GROUP BY c th tham chiu ti bt k trng no c lit k trong mnh FROM, thm ch nu trng khng c trong mnh SELECT. Jet database engine khng th nhm trn cc trng Memo hoc Automation. Tt c cc trng c lit k sau SELECT phi hoc bao gm trong danh sch trng nhm hoc ; mt hm nhm (aggregate function). Mnh HAVING Xc nh nhng bn ghi c nhm no c hin th trong mnh SELECT vi mt mnh GROUP BY. Mt khi mnh GROUP BY kt hp cc bn ghi, HAVING hin th bt c bn ghi no c nhm tho mn iu kin trong mnh HAVING. HAVING tng t WHERE, n quyt nh nhng bn ghi no c chn. Mt khi cc bn ghi c nhm bi GROUP BY, HAVING xc nh bn ghi no c hin th. HAVING l mt mnh tu chn. Mt mnh HAVING c th c ti 40 biu thc c kt hp cc ton t logic nh AND v OR. Mnh ORDER BY Mnh ORDER BY xc nh th t sp xp ca cc bn ghi trong truy vn. Trong mnh ORDER BY, bn xc nh mt trng hay cc trng c dng lm kho sp xp, v sau xc nh cc bn ghi xut hin theo th t ln tng dn hay gim dn. V d sau tr li tt c cc bn ghi trong bng Employees c lit k h theo th t ABC : SELECT * FROM Employees ORDER BY [Last Name] ASC; Trong v d ny, ASC l tu chn - th t sp xp mc nh l tng dn. Tuy nhin, bn c th thm t kho ASC v cui mi trng bn mun sp theo th t tng dn.

sp theo th t gim dn, thm t kho DESC vo cui cc trng bn mun sp theo th t gim dn. Bn cng c th dng cng c th dng s th t ca trng c chn trong mnh SELECT ch ra trng lm kho sp xp: SELECT [First Name], [Last Name] FROM Employees ORDER BY 2 ASC; Bn cng c th sp xp theo nhiu trng. Cc bn ghi trc ht c sp theo trng u tin trong danh sch cc trng sp xp. Cc bn ghi c cng gi tr trn trng li tip tc c sp xp trn trng tip theo trong danh sch v qu trnh li c th lp li nu tn ti mt s bn ghi c cng gi tr ti trng va ri. V d sau chn trng lng v sp xp gim dn, tt c cc nhn vin cng lng s c sp h tng dn theo th t ABC. SELECT [Last Name], Salary FROM Employees _ ORDER BY Salary DESC, [Last Name]; ORDER BY thng l thnh phn cui cng trong cu lnh SQL. N l mnh tu chn (tr khi bn dng ch dn TOP hoc TOP n PERCENT trong mnh SELECT). Mnh WITH OWNERACCESS Trong mi trng a ngi dng vi nhm lm vic c chia quyn, dng WITH OWNERACCESS cui mi truy vn trao cho ngi dng, ngi thi hnh truy vn cho php xem d liu trong truy vn du rng ngi mt khc b hn ch xem cc bng c bn ca CSDL. V d sau cho php ngi dng tr li thng tin v lng, thm ch nu ngi dng khng c php xem bng kt ton, l kt qu ca mt truy vn do mt ngi khc c quyn thi hnh. SELECT [Last Name], [First Name], Salary FROM Employees _ ORDER BY [Last Name] _ WITH OWNERACCESS OPTION; Nu mt ngi dng mt khc b ngn khng c to hoc thm vo mt bng, bn c th dng WITH OWNERACCESS OPTION cho php ngi dng thi hnh mt cu lnh to hoc ni bng.

Tu chn ny yu cu bn truy cp vo file h thng System.mda c kt hp vi CSDL. N thc s hu dng ch trong mi trng a ngi dng c chia quyn. 2.Dng mt truy vn to bng. Mt s bin i trong cu lnh SELECT cho php bn to ra mt bng mi, thay th cho mt i tng Recordset. lm iu ny, bn thm mnh INTO. V d sau to ra mt bng mi New Employees bi truy vn bng Employees: SELECT * INTO [New Employees] FROM Employees; Bn c th dng truy vn to bng ly cc bn ghi, to mt bng d phng, hoc lm mt bn sao a sang mt CSDL khc hoc dng lm c s cho cc bo co hin th d liu trong mi nh k. V d, bn c th to ra bn bo co bn hang tng thng bng cch thi hnh truy vn to bng ny mi thng. Bn c th mun xc nh mt kho chnh cho bng mi to. Khi bn to bng , cc trng trong bng mi s tha k kiu d liu va kch thc ca mi trng trong bng c s, nhng cc c tnh khc ca cc trng hoc bng khng c chuyn sang. 3 Dng truy vn xo. To mt truy vn xo loi b cc bn ghi t mt hoc cc bng c lit trong mnh FROM tho mn iu kin trong mnh WHERE, nh c php di y: DELETE [table *] FROM tableexpression WHERE criteria DELETE c bit hu dng khi bn mun xo mt lc nhiu bn ghi. Trong mt cu lnh xo trn nhiu bng, bn phi bao gm i table. Nu bn xc nh 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 cn nhanh hn l dng truy vn xo. Bn c th dng mt phng thc thi hnh vi mt cu lnh DROP TABLE xo bng ra khi CSDL. Tt nhin nu bn xo

bng th mt lun c cu trc. Ngc li, khi dng truy vn xo th ch phn d liu b xo; Cu trc bng v cc thuc tnh ca cc trng vn cn nguyn vn. Bn c th dng DELETE 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 ch xo bng bn n ca quan h . V d, trong quan h gia bng Customers v bng Orders, bng Orders l pha n, nn thao tc xo ch nh hng n bng Orders. Mt truy vn xo xo ton b bn ghi, khng xo chn lc theo cc trng. Nu bn mun xo d liu trong mt trng c th no , dng truy vn cp nht (UPDATE) thit lp d liu trng l rng (NULL). Mt khi bn loi b cc bn ghi bng cch dng truy vn xo, bn khng th khi phc li thao tc ca mnh. Nu bn mun bit nhng bn ghi c xo, trc ht, kim tra kt qu ca truy vn chn c cng iu kin (vi truy vn xo) v sau tin hnh truy vn xo. Bt c lc no bn cng nn sao lu d liu phng khi bn xo nhm cc bn ghi. 4.Dng truy vn b sung. Bn c th dng mnh INSERT INTO thm cc bn ghi vo bng hay to mt truy vn b sung. Bn c th dng nhng c php sau y thc hin truy vn b sung nhiu bn ghi: INSERT INTO target [IN externaldatabase] SELECT [source.]field1[, field2[, ...] FROM tableexpression Ngc li, dng c php sau thc hin truy vn b sung mt bn ghi: INSERT INTO target [(field1[, field2[,...]])] VALUES (value1[, value2[, ...]) Bn c th dng mnh INSERT INTO thm mt bn ghi n vo mt bng dng c php truy vn b sung bn ghi n. Trong trng hp ny, Cu lnh phi xc nh tn v gi tr cho mi trng ca bn ghi. Bn phi xc nh cc trng ca bn

ghi m d liu se c gn vo cng nh gi tr ca trng . Khi bn khng ch r danh sch trng, gi tr mc nh hoc NULL s in vo cc trng vng mt. Cc bn ghi c thm vo cui bng. Bn cng c th dng INSERT INTO ni mt tp hp cc bn ghi t mt bng khc hoc mt truy vn dng mnh SELECT ... FROM c ch ra c php trn. Trong trng hp ny, mnh SELECT ch r trng ni thm vo bng ch. Bng ngun hoc bng ch c th l mt bng hay mt truy vn. Nu mt truy vn c xc nh, Microsoft Jet database engine ni mt tp hp bn ghi vo mt hoc nhiu bng c ch ra trong truy vn. INSERT INTO l mt tu chn, nhng khi c mt n, phi ng trc SELECT. Nu bng ch cha kho chnh, phi chc chn rng bn b sung nhng bn ghi vi ni dung kho l duy nht, v trng khng c trng. Nu bn b sung cc bn ghi vo mt bng vi trng Couter, loi b trng ra khi danh sch nu bn mun Microsoft Jet nh s li cc bn ghi. Thm trng Counter vo truy vn nu bn mun gi li gi tr ban u. Nu c gi tr trng, tt nhin l Jet database s khng b sung bn ghi . Dng mnh IN ni cc bn ghi vo mt bng ca mt CSDL khc. to mt bng mi, dng mnh SELECT ... INTO thay th to mt truy vn to bng. tm ra cc bn ghi s c b sung, trc khi thi hnh truy vn b sung, hy xem qua kt qu ca truy vn chn vi cng biu thc iu kin. Mt truy vn b sung khng nh hng ti cc bng hoc truy vn ngun. 5.Truy vn cp nht: Truy vn UPDATE thay i gi tr trong cc trng c tho mn cc iu kin cp nht.

UPDATE table SET newvalue WHERE criteria; UPDATE c bit hu dng khi bn mun thay i ni dung nhiu bn ghi hoc khi cc bn ghi bn mun thay i nm trn nhiu bng. Thng thng bn dng truy vn ny vi mt phng thc thi hnh. Bn c th thay i mt vi trng cng lc. V d sau tng Order Amount ln 10% v gi tr Freight ln 3%: UPDATE Orders _ SET [Order Amount] = [Order Amount] * 1.1, _ Freight = Freight * 1.03 _ WHERE [Ship Country] = UK; UPDATE khng to ra tp kt qu. Nu bn mun xem nhng bn ghi no c cp nht, trc tin xem kt qu ca truy vn chn (dng cng biu thc iu kin) v sau thi hnh truy vn cp nht. Truy vn Crosstab: Truy vn Crosstab cho php bn chn cc gi tr t cc trng hay cc biu thc nh l cc tiu ct, v th, bn c th xem d liu mt cch c ng hn vi mt cu lnh SELECT bnh thng. Bn dng mnh TRANSFORM to cc truy vn Crosstab. TRANSFORM aggfunction selectstatement PIVOT pivotfield [IN (value1[,value2[,...]])] Mnh TRANSFORM dng nhng tham s sau: aggfunction Mt hm tng hp trn d liu c chn. selectstatement : Mt cu lnh SELECT pivofield : Trng hoc biu thc bn mun dng to tiu ct trong kt qu ca truy vn. value1, value2: Cc gi tr c nh c dng to tiu ct. Khi bn tng hp d liu vi cng c l truy vn Crosstab, bn chn cc gi tr cc trng hay biu thc c th nh l cc tiu v th bn c th xem d liu trong mt dnh c ng hn. TRANSFORM ng trc mnh SELECT xc nh cc tiu dng v ng trc mt mnh GROUP BY xc nh cc dng c th c nhm. Tt nhin, bn c th tu chn cc mnh khc, nh WHERE, nhng mnh xc nh thm cc tiu chun chn hay sp xp. Cc gi tr tr li trong pivotfield c dng nh l tiu ct

trong tp kt qu ca truy vn. V d, vic xoay doanh s bn hng trong mt thng trong mt truy vn Crosstab s to ra 12 ct. Bn c th hn ch pivotfield to cc tiu ct t cc ga tr c nh (gi tr 1, gi tr 2) c lit k trong mnh tu chn IN. V d sau to ra mt truy vn Crosstab trnh by kt qu bn hng theo thng trong mt nm ca mt ngi no . Cc thng c tr li l cc ct t tri sang phi, v tn sn phm c lit k t trn xung di nh 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 INNER _ JOIN (Products INNER JOIN [Order Details] ON Products.[Product ID] = _ [Order Details].[Product ID]) ON Orders.[Order ID] = _ [Order Details].[Order ID] WHERE DatePart _ (yyyy, [Order Date]) = [ Sales for which year ? ] _ GROUP BY [Product Name] ORDER BY [Product Name] _ PIVOT DatePart(m, [Order Date]); Kt ni: Mt trong nhng c tnh hu ch nht ca CSDL quan h l kh nng ni hai hay nhiu bng vi nhau to nn mt bng mi (hay mt Recordset) cha ng thng tin t cc bng c. Cc bng c ni theo cc mi quan h gia chng, thng thng nht l gia kho chnh ca mt bng v kho ngoi tng ng ca bng kia. Tu thuc vo cch thc ni cc bng vi nhau m bn c th to ra cc loi lin kt sau: INNER JOIN Cc bn ghi ca c hai bng c cha trong lin kt ch khi mt trng c th trong bng khp vi mt trng c th trong bng th hai. LEFT OUTER JOIN Tt c cc bn ghi t bng mt c cha trong lin kt, cng vi cc bn ghi trong bng hai m cc trng c th khp vi cc trng tng ng trong bng mt. RIGHT OUTER JOIN Tt c cc bn ghi t bng th hai c a vo lin kt cng vi cc bn ghi t bng mt m c cc trng khp vi cc trng trong bng hai. Inner joins:

to ra mt truy vn ch cha cc bn ghi c d liu trong trng lin kt ging nhau, hy dng php lin kt INNER JOIN. INNER JOIN kt hp cc bn ghi ca hai bng khi c cc gi tr khp nhau trong trng lin kt. Dng c php sau: FROM table1 INNER JOIN table2 ON table1.field = table2.field2 Bn c th dng INNER JOIN trong bt c mnh FROM no. N to ra mt lin kt tng ng (Equi-joins) , nh mt lin kt INNER JOIN. Equi-joins l mt dng kt ni ph bin. Chng kt hp cc bn ghi t hai bng khi c d liu trong hai trng kt ni khp nhau. Bn c th dng INNER JOIN vi cc bng Department v Employees chn tt c cc nhn vin trong mi phng. Ngc li, chn tt c cc phng (thm ch nu mt s phng khng c nhn vin no), bn c th dng LEFT JOIN hoc RIGHT JOIN. Bn c th lin kt bt c hai trng kiu s no, thm ch nu chng khc kiu. V d bn c th kt ni mt trng s, vi thuc tnh kch thc c thit lp l s nguyn, v mt trng Couter. V d sau cho chng ta bit kt ni hai bng Categories v Products trn trng CategoryID nh th no: SELECT [Category Name], [Product Name] _ FROM Categories INNER JOIN Products _ ON Categories.[Category ID] = Products. [Category ID]; V d sau to ra hai lin kt tng ng (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 a ra mt danh sch cc nhn vin v tng s v hng h bn c: Dim MyQRY AS QueryDef MyQRY.SQL = SELECT DISTINCTROW Sum([Unit Price].[Quantity]) _ AS [Sales], [First Name] & & _ [Last Name] AS Name FROM Employees _ INNER JOIN (Order INNER JOIN [Order Details] _ ON Order.[Order ID] = [Order Details].[Order ID]) _ ON Employees.[Employee ID] = Orders. [Employee ID] _ GROUP BY [First Name] & & [Last Name]; Cu lnh ny phi c s dng nh l thuc tnh ca i

tng QueryDef hoc l tham s ca phng thc OpenRecordset. V d trn dng ch dn DISTINCTROW loi b d liu trn c s cc bn ghi hon ton trng nhau. V d, bn c th to mt truy vn lin kt cc bng Customers vi bng Orders vi trng lin kt l trng Customer ID. Bng Customers khng cha cc bn ghi c cng ni dung trng Customer ID, nhng trong bng Orders th c bi mt khch hng c th c nhiu hp ng t mua hng. Cu lnh SQL sau ch ra cch bn dng ch dn DISTINCTROW a ra mt danh sch cc cng ty c t nht mt hp ng t mua hng nhng khng c th v cc hp ng . SELECT DISTINCTROW [Company Name] _ FROM Customers INNER JOIN Order _ ON Customers.[Customer ID = Orders. [Customer ID] _ ORDER BY [Company Name]; Nu bn b st ch dn DISTINCTROW th kt qu s tr li cc tn cng ty trng nhau v c nhiu bn hp ng t mua hng. DISTINCTROW ch c hiu qu khi bn chn cc trng t mt s bng c lin kt trong truy vn. DISTINCTROW c b qua khi bn chn t mt bng. Lin kt tri, phi (LEFT JOIN & RIGHT JOIN - Lin kt ngoi): Lin kt ngoi (OUTER JOIN) ni cc bn ghi ca bng ngun khi chng c dng trong bt k mnh FROM no vi c php sau: FROM table1 [ LEFT | RIGHT ] JOIN table2 ON table1.field1 = table2.field2 Dng LEFT JOIN to 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 trng lin kt vi bt c bn ghi no ca bng th hai (bng bn phi). Dng RIGHT JOIN to 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 trng lin kt vi bt c bn ghi no ca bng cn li (bng bn tri).

V d, bn c th dng LEFT JOIN cho bng Departments (tri) v bng Employees (phi) ly ra tt c cc phng ban, trong 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 RIGHT JOIN. V d sau c thy cch thc bn c th lin kt bng Categories v bng Products d trn trng Category ID. Truy vn s a ra danh sch tt c tn cc hng mc, trong c nhng hng mc khng c sn phm no. SELECT [Category Name], [Product Name] _ FROM Categories LEFT JOIN Products _ ON Categories.[Category ID] = Products. [Category ID]; Trong v d trn y, Category ID l mt trng lin kt, nhng khng c mt trong kt qu ca truy vn v n khng c chn trong mnh SELECT. Lin kt lng nhau (Nested joins): Bn c th lng cc ch dn JOIN nh c php sau y: SELECT fields FROM table1 INNER JOIN (table2 INNER JOIN [(]table3 _ [INNER JOIN [(] tablex [INNER JOIN ... )] _ ON table3.field3 = tablex.fieldx)] _ ON table2.field2 = table3.field3) _ ON table1.field1 = table2.field2; Truy vn hp (Union Queries): Bn c th dng cc thao tc ni to cc truy vn hp, kt hp kt qu ca hai hay nhiu bng hoc truy vn c lp. query1 UNION [ALL] query2 [UNION [ALL] queryn [...]] query i din cho biu thc xc nh trng cha d liu kiu s m bn mun tnh trung bnh hoc mt biu thc thc hin mt php tnh c dng d liu trong trng . Ton hng trong biu thc c th tn ca cc trng, c th l mt hng, mt hm (c th l c sn ca h thng hoc do ngi dng nh ngha nhng khng c l hm tng hp(aggregate functions)). Bn c th kt hp kt qu ca mt truy vn v mt cu lnh SQL trong mt php hp UNION n. V d sau kt hp kt qu ca mt truy vn c tn gi New Accounts v mt cu lnh SELECT: TABLE [New Accounts] UNION ALL _ SELECT * FROM

Customers WHERE [Order Amount] > 1000; Mc nh, khng c hai bn ghi no trng nhau trong kt qu ca mt truy vn hp; tuy nhin, bn c th bao gm c ch dn ALL kt qu c c cc bn ghi trng nhau. N cng lm cho truy vn thi hnh nhanh hn. Tt c cc truy vn trong phep hp UNION yu cu c cng s trng, tuy nhin cc trng khng cn thit phi c cng kch thc hoc kiu d liu. Bn c th dng mnh GROUP BY v/hoc HAVING trong mi truy vn tham gia php hp nhm d liu. Bn c th dng mt mnh ORDER BY cui truy vn cui cng kt qu tr v c sp theo mt th t xc nh. 7.Ti u truy vn: Ti u CSDL l mt ch ln v bao hm nhiu vn . Nhiu yu t, bao gm c cu hnh phn cng v phn mm, ci t Windows, b m, khng lin quan n cc truy vn, nhng chng nh hng n hiu qu ca CSDL. Mt yu t quan trng khc l dng cc bng gn vi CSDL hn l kt ni trc tip vi CSDL t xa. Vn ny c bn k trong cun Accessing External Data. Phn ny s trnh by ngn gn mt s cch ti u lin quan c bit ti s xy dng cc truy vn, v tn dng kh nng ti u Jet database xy dng cc truy vn. Mt s chin lc ti u thng dng: - Hn ch dng cc trng sp xp, c bit l cc trng khng c to ch mc. - m bo cc bng kt ni t cc ngun khc nhau u c to ch mc hoc l c lin kt trn cc kho chnh. - Nu d liu khng thay i thng xuyn, dng cc truy vn to bng t truy vn Dynasets ca bn. Dng cc bng lm c s cho cc form, cc bo co hn l dng cc truy vn. - Nu bn ang to mt truy vn Crosstab, hy dng tiu ct c nh bt c khi no c th. - Dng BETWEEN...AND, IN v cc du = trn cc ct c nh ch mc. - Khi to mt truy vn, khng nn thm cc trng khng cn thit. Ti u cc truy vn vi cng ngh Rushmore: Rushmore l mt cng ngh truy cp d liu c dng trong Jet database engine cho php mt tp hp cc bn ghi c

truy cp mt cch ht sc hiu qu. Vi Rushmore, khi bn dng mt kiu biu thc nht nh trong iu kin truy vn, truy vn ca bn s thi hnh nhanh hn rt nhiu. Biu thc ti u dng n gin: Jet database engine c th ti u ho cc biu thc n gin trong mnh WHERE trong cu lnh SELECT. Dng biu thc n gin c th thnh lp nn ton b hoc mt phn phn ca biu thc. Mt biu thc n gin c th ti u ho c mt trong nhng dng sau: indexedfield comparisonoperator expression - or -expression comparisonoperator indexedfield Trong dng biu thc n gin nht c th ti u: - indexedfield phi l mt trng m trn c to lp ch mc. - comparisonoperator phi l mt trong nhng kiu sau y: <, >, =, >=, <=, <>, BETWEEN, LIKE, hoc IN. - expression l mt biu thc hp l bt k, bao gm cc hng, cc hm, cc trng t cc bng. Ch : kt qu l tt nht, gi tr so snh trong biu thc dng LIKE phi bt u bng mt k t ch khng c l k t i din (*, ?). Bn c th ti u LIKE m* ch khng th ti u LIKE *m*. Biu thc c th ti u dng phc hp. Microsoft Jet dng Rushmore ti u ho cc biu thc phc hp c kt hp t cc biu thc (c th ti u) n gin vi cc ton t AND hoc OR. Mt biu thc nh th nm trong cc dng sau: - simpleexpression AND simpleexpression - simpleexpression OR simpleexpression Ghi nh nhng iu sau y khi dng biu thc ti u ho Rushmore: - Hm COUNT(*) c ti u mc cao cho cc truy vn dng Rushmore. - Nu ch mc l gim dn v ton t so snh khc du bng, truy vn khng th ti u c. - Rushmore s lm vic vi Microsoft Access tables, cng nh vi Microsoft FoxPro

Link T: http://www.sinhvienitvn.net/forum/ngon-ngu-sql-mysql/12498-sql-nhung-kienthuc-co-ban-nhat.html#ixzz1SzakzC4R

You might also like