Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

Select ltrim('Khang ')

(cid:190) Thuû tuïc RTRIM: Thuû tuïc loaïi boû khoaûng traéng beân phaûi cuûa chuoãiï:

'khang'

Keát quaû traû veà nhö sau:

(cid:190) Haøm Left: Haøm traû veà chuoãi beân traùi tính töø ñaàu cho ñeán vò trí thöù n: Select left('Khang',3)

'Kha'

Keát quaû traû veà nhö sau:

Select Right('KHang',4)

(cid:190) Haøm Right: Haøm traû veà chuoãi beân phaûi tính töø cuoái cho ñeán vò trí thöù n:

'Hang'

Keát quaû traû veà nhö sau:

(cid:190) Haøm Instr: Haøm traû veà vò trí chuoãi baét ñaàu cuûa chuoãi con trong chuoãi xeùt: Select INSTR ('Khang','Pham Huu Khang')

Keát quaû traû veà nhö sau: 11

11 laø töông ñöông vò trí thöù 11 cuûa chöõ Khang trong chuoãi "Pham Huu Khang"

5.3.3. Caùc haøm veà xöû lyù thôøi gian

(cid:190) Haøm CurDate(): Haøm traû veà ngaøy, thaùng vaø naêm hieän haønh cuûa heä thoáng: Select curdate() as 'Today is’

Keát quaû traû veà nhö sau Today is --------------------------- 2001-11-21

(cid:190) Haøm CurTime(): Haøm traû veà giôø, phuùt vaø giaây hieän haønh cuûa heä thoáng: Select curtime() as 'Time is’

Keát quaû traû veà nhö sau Time is --------------------------- 09:12:05

Select Period_diff (OrderDate, getdate())

(cid:190) Haøm Period_Diff: Haøm traû veà soá ngaøy trong khoaûng thôøi gian giöõa 2 ngaøyï:

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

as 'So ngay giua ngay thu tien ñen hom nay:' from tblOrders

Keát quaû traû veà nhö sau

So ngay giua ngay thu tien ñen hom nay: --------------------------------- 74 72

Select dayofmonth(curdate())

as 'hom nay ngay

(cid:190) Haøm dayofmonth: Haøm dayofmonth traû veà ngaøy thöù maáy trong thaùng:

21

Keát quaû traû veà nhö sau:

Ngoaøi caùc haøm trình baøy nhö treân, baïn coù theå tìm thaáy nhieàu haøm xöû lyù veà thôøi gian trong phaàn Funtions xuaát hieän beân phaûi maøn hình cuûa trình ñieàu khieån nhö hình 8-6.

Hình 8-6: Söû duïng chöùc naêng Funcitons

5.3.4. Caùc haøm veà toaùn hoïc

Select sqrt (4)

(cid:190) Haøm sqrt: Haøm traû veà laø caên baät hai cuûa moät bieåu thöùc:

Keát quaû traû veà laø

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

2

(cid:190) Haøm Round: Haøm traû veà laø soá laøm troøn cuûa moät bieåu thöùc: Select round (748.58,-1)

7500

Keát quaû traû veà laø

Ñeå tham khaûo theâm moät soá haøm khaùc baïn coù theå tham khaûo trong phaàn Functions nhö hình 8-9.

5.4. Phaùt bieåu SQL daïng Select vôùi AS

Khi caàn thieát phaûi thay ñoåi teân tröôøng naøo ñoù trong caâu truy vaán, baïn chæ caàn duøng phaùt bieåu AS. AS cho pheùp aùnh xaï teân cuõ, hay giaù trò chöa coù teân thaønh teân môùi (header).

Ví duï, khi söû duïng GROUP BY ôû trong phaàn treân, nhöõng coät taïo ra töø caùc pheùp toaùn count, sum, max, min, ... cho ra keát quaû khoâng coù header, nghóa laø khoâng coù teân coät ñeå tham chieáu trong khi goïi ñeán chuùng. Chuùng ta phaûi caàn phaùt bieåu AS cho nhöõng tröôøng hôïp naøy.

Select CustID, Count (CustID) as No, Sum(Amount) as TIENHD, Max(Amount) as HDLONNHAT, Min(Amount) as HDNHONHAT, Avg(Amount) as TRUNGBINH From tblOrders Group by CustID Order by CustID

Ví duï 4-11: SQL daïng SELECT vôùi AS vaø caùc haøm

7 2956562368 1.95713899 26000 422366052 459162 427002511

9 3843022604 39879489

4 72382804 48168567

2903576 18095701

CustID No TIENHD HDLONNHAT HDNHONHAT TRUNGBINH ---------- ----------- ------------------------ 16 12 13 8 145913378 1.36727628 230000 18239172.25 10

Keát quaû hieån thò nhö sau:

5.5. Phaùt bieåu SQL daïng Select vôùi Limit N , M

Phaùt bieåu SQL daïng SELECT cho pheùp truy luïc chæ moät soá maåu tin tính töø vò trí thöù n ñeán vò trí thöù m trong Table (theo moät tieâu chuaån hay saép xeáp naøo ñoù). Ñeå laøm ñieàu naøy, trong phaùt bieåu SQL daïng SELECT baïn duøng chæ ñònh töø khoaù LIMIT vôùi soá löôïng maåu tin caàn laáy töø vò trí thöù n ñeán m.

Chaúng haïn, trong tröôøng hôïp baïn khai baùo Select * from tblOrders limit 0,10. Keát quaû seõ traû veà 10 maåu tin ñaàu tieân trong baûng tblOrders.

Baïn cuõng coù theå söû duïng keát hôïp LIMIT vôùi caùc meänh ñeà nhö WHERE, ORDER BY nhaèm taïo ra keát quaû nhö yù muoán.

Do yeâu caàu khaùc nhau thoâng qua phaùt bieåu SQL daïng SELECT coù söû duïng LIMIT, nghóa laø keát quaû traû veà soá löôïng 10 maåu tin ñaàu tieân vôùi taát caû caùc coät trong baûng tblOrders

Ví duï 8-12: Phaùt bieåu SQL daïng SELECT vôùi Limit N,M

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

Select * From tblOrders Limit 0,10

2903576 48168567 5107032 2.3555347 1.81074847 26000 1867682 3600000 1.95713899 9.61804228

10 10 10 10 16 16 16 16 16 16

Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- ------- 01 2001-09-05 02 2001-09-05 03 2001-09-05 04 2001-09-08 05 2001-09-08 06 2001-09-10 07 2001-09-11 08 2001-09-12 09 2001-09-13 10 2001-09-14

Neáu muoán loïc ra 10 hôïp ñoàng coù soá tieàn nhieàu nhaát, baïn chæ caàn söû duïng saép xeáp theo coät TotalAmount hay Amount trong baûng tblOrders.

Select OrderID,OrderDate,CustID,Amount From tblOrders Order by Amount Desc Limit 0,10

Amount

26000 230000 244904 459162 459525 603033 1452000 2001-09-15 13 1531200 1867682 2903576

2001-09-10 16 2001-09-13 13 2001-09-11 13 2001-09-11 12 2001-09-16 13 2001-09-14 13 2001-09-15 13 2001-09-11 16 2001-09-05 10

Ví duï 8-13: Phaùt bieåu SQL daïng SELECT vôùi Limit N,M

Keát quaû traû veà nhö sau: OrderID OrderDate CustID ---------- --------------------------- ------- 06 26 25 23 31 27 28 30 07 01

Neáu muoán loïc ra 10 saûn phaåm coù soá löôïng baùn nhieàu nhaát, baïn chæ caàn söû duïng saép xeáp theo coät soá löôïng Qtty.

Select ItemID,Qtty,Price,Amount from tblOrderDetails Where Amount>10 order by Qtty Limit 0,10

Qtty Price Amount

Ví duï 8-14: Phaùt bieåu SQL daïng Select vôùi Limit N,M

900 12000 12960000

Keát quaû traû veà nhö sau: ItemID --------------------------------------------- 1

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

2 1000 12000 14400000 3 5000 12000 72000000 3 6000 12000 86400000 4 8000 12000 15200000 4 8000 12000 15200000 4 8000 10000 15200000 5 9000 12000 29600000 5 9000 12000 129600000 5 9000 12000 129600000

5.6. Phaùt bieåu SQL daïng SELECT vôùi DISTINCT

Neáu coù moät hay nhieàu baûng keát noái vôùi nhau, seõ xaûy ra truøng laëp nhieàu maåu tin. Nhöng trong tröôøng hôïp naøy baïn chæ caàn laáy ra moät maåu tin trong taäp maåu tin truøng laëp, baïn söû duïng phaùt bieåu SQL daïng SELECT vôùi chæ ñònh DISTINCT.

Select ItemID,Qtty,Price,Amount from tblOrderDetails order by Qtty

Qtty Price Amount

Ví duï 8-14: Phaùt bieåu SQL daïng SELECT

Keát quaû traû veà nhö sau: ItemID ---------------------------------------------- 1 900 12000 12960000 2 1000 12000 14400000 3 5000 12000 72000000 3 6000 12000 86400000 4 8000 12000 115200000 4 8000 12000 115200000 4 8000 10000 115200000 5 9000 12000 129600000 5 9000 12000 129600000 5 9000 12000 129600000 ... ...

Select Distinct ItemID,Qtty,Price,Amount From tblOrderDetails Order by Qtty

Qtty Price Amount

Ví duï 8-15: Phaùt bieåu SQL daïng SELECT vôùi DISTINCT

Keát quaû loaïi boû nhöõng maåu tin truøng laép nhö sau: ItemID ---------------------------------------------- 1 900 12000 12960000 2 1000 12000 14400000 3 6000 12000 86400000 4 8000 12000 115200000 5 9000 12000 129600000 ... ... ...

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

5.7.

Nhaäp döõ lieäu baèng phaùt bieåu SQL daïng Insert

Khi caàn theâm maåu tin vaøo baûng trong cô sôû döõ lieäu MySQL, baïn coù nhieàu caùch ñeå thöïc hieän coâng vieäc naøy. Trong Visual Basic 6.0, VB.NET, C Sharp hay Java coù nhöõng phöông thöùc ñeå theâm maåu tin vaøo baûng trong cô sôû döõ lieäu. Tuy nhieân, ñeå söû duïng caùc phaùt bieåu SQL mang tính chuyeân nghieäp trong MySQL, baïn caàn söû duïng phaùt bieåu INSERT.

Baïn coù theå söû duïng phaùt bieåu Insert ngay treân öùng duïng keát noái vôùi MySQL. Trong tröôøng hôïp baïn söû duïng cô sôû döõ lieäu SQL Server hay Oracle, baïn coù theå taïo ra moät Stored Procedure vôùi muïc ñích INSERT döõ lieäu vaøo baûng chæ ñònh tröôùc.

Khi theâm döõ lieäu, caàn chuù yù kieåu döõ lieäu gioáng hoaëc töông öùng kieåu döõ lieäu ñaõ khai baùo cuûa coät ñoù, neáu khoâng phuø hôïp thì loãi seõ phaùt sinh.

Ngoaøi ra baïn caàn quan taâm ñeán quyeàn cuûa User ñang truy caäp cô sôû döõ lieäu. User phaûi ñöôïc caáp quyeàn Insert döõ lieäu vaøo töøng baûng cuï theå (quyeàn naøy do nhaø quaûn trò cô sôû döõ lieäu phaân quyeàn cho User ñoù).

Trong phaùt bieåu INSERT INTO chuùng toâi thöïc hieän treân baûng tblOrderDetails vaø baûng

ItemID int(3) unsigned DEFAULT '0' , OrderID int(3) unsigned DEFAULT '0' , No tinyint(3) unsigned DEFAULT '0' , Qtty int(3) unsigned DEFAULT '0' , Price int(3) unsigned DEFAULT '0' , Discount int(3) unsigned DEFAULT '0' , Amount bigint(3) unsigned DEFAULT '0'

/* Baûng tblOrderDetails*/ CREATE TABLE tblorderdetails ( );

/* Baûng tblOrderDetailsHist, duøng ñeå chöùa caùc thoâng tin

hôïp ñoàng chi tieát khi hôïp ñoàng cuûa khaùch haøng naøy keát thuùc,

chöông trình töï ñoäng xoaù trong tblOrderDetails vaø lö tröõ laïi

trong baûng tblOrderDetailsHist.*/

ItemID int(3) unsigned DEFAULT '0' , OrderID int(3) unsigned DEFAULT '0' , No tinyint(3) unsigned DEFAULT '0' , Qtty int(3) unsigned DEFAULT '0' , Price int(3) unsigned DEFAULT '0' , Discount int(3) unsigned DEFAULT '0' , Amount bigint(3) unsigned DEFAULT '0'

CREATE TABLE tblorderdetailshist ( );

tblOrderDetailsHist, hai baûng naøy coù caáu truùc nhö sau:

Khi Insert döõ lieäu vaøo baûng, coù 3 tröôøng hôïp xaûy ra: insert döõ lieäu vaøo baûng töø caùc giaù trò cuï theå, insert vaøo baûng laáy giaù trò töø moät hay nhieàu baûng khaùc, vaø cuoái cuøng laø keát hôïp caû hai tröôøng hôïp treân.

5.7.1.

Insert vaøo baûng laáy giaù trò cuï theå: INSERT INTO [] Values (data_value)

Ví duï 8-16: INSERT döõ lieäu vaøo baûng töø giaù trò cuï theå

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

(CustName,Username,Password, Address,Tel,FaxNo,Email,Contact, CountryCode,ProvinceCode)

/* Theâm maåu tin vôùi moät soá coät */ INSERT INTO TBLCUSTOMERS Values ('Khach San CENTURY', ‘century’,

’1111’,’5 Le Loi’,’8676767’,’8767676’, ‘century@yahoo.com’,’Hoang Anh’, ‘VNA’,’HCM’)

/* Theâm maåu tin vôùi moät soá coät */ INSERT INTO TBLORDERS(OrderID,OrderDate, CustID,Description,Amount) Values ('11',curdate(),’1', 'Dat hang qua mang', 20000)

5.7.2. Insert vaøo baûng laáy giaù trò töø baûng khaùc:

INSERT INTO [] Select [columnname list] From Where

/* Theâm maåu tin vôùi caùc coät cuï theå */

/* Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng

tblOrderDetails vaøo baûng tblOrderDetailsHist */

INSERT INTO TBLORDERDETAILSHIST( ItemID, OrderID, No, Qtty, Price, Discount, Amount) SELECT ItemID, OrderID, No, Qtty, Price, Discount, Amount From tblOrderDetails ORDER BY OrderID ASC

/* Coù theå vieát laïi theâm maåu tin vôùi taát caû caùc coät nhö sau

Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist vôùi ñieàu kieän soá coät töông öùng trong baûng tblOrderDetails baèng vôùi soá coät trong baûng tblOrderDetailsHist, baïn coù theå vieát laïi nhö sau */

Ví duï 8-17: INSERT vaøo baûng töø giaù trò cuûa baûng khaùc

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

INSERT INTO TBLORDERDETAILSHIST SELECT * from tblOrderDetails ORDER BY OrderID ASC

5.7.3. Insert vaøo baûng laáy giaù trò cuï theå, baûng khaùc:

INSERT INTO [] Select [columnname list], valueslist From Where ORDER BY ASC/DESC

/* Theâm maåu tin vôùi caùc coät cuï theå */

/* Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist. Giaû söû raèng, ngoaøi nhöõng coät gioáng nhö tblOrderDetails, baûng tblOrderDetailsHist coøn coù theâm coät Tranferdate. */

INSERT INTO TBLORDERSHIST( OrderID, OrderDate, ReceiveFolio, CustID, Descriion, Amount, Historydate) SELECT OrderID, OrderDate, ReceiveFolio, CustID, Descriion, Amount, getdate() as Historydate From tblOrders where Month(OrderDate)=12 Order by OrderDate,CustID

/* Coù theå vieát laïi theâm maåu tin vôùi taát caû caùc coät nhö sau */

/* Chuyeån taát caû nhöõng phieáu thu trong thaùng 12 töø baûng tblOrders vaøo baûng tblOrdersHist vôùi ñieàu kieän soá coät töông öùng trong baûng tblOrders baèng vôùi soá coät trong baûng tblOrdersHist, baïn coù theå vieát laïi nhö sau */ INSERT INTO TBLORDERDETAILSHIST( ItemID, OrderID, No, Qtty, Price, Discount, Amount,TranferDate) SELECT ItemID,

Ví duï 8-18: INSERT vaøo baûng töø giaù trò cuï theå, baûng khaùc

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

OrderID, No, Qtty, Price, Discount, Amount,CurDate() From tblOrderDetails ORDER BY OrderID ASC

5.8. Phaùt bieåu SQL daïng UPDATE

/* neáu caäp nhaát giaù trò cuï theå */ Update

Set =,[=] [where ]

/* neáu caäp nhaát giaù trò laø keát quaû traû veà töø phaùt bieåu

select treân moät hay nhieàu baûng khaùc */

Update

Set =
Where

Vôùi phaùt bieåu SQL daïng DELETE thì ñôn giaûn hôn. Khi thöïc hieän leänh xoaù maåu tin trong baûng chuùng ta chæ caàn quan taâm ñeán teân baûng, vaø meänh ñeà WHERE ñeå xoaù vôùi nhöõng maåu tin ñaõ choïn loïc neáu coù. Cuù phaùp cuûa Delete:

Vôùi meänh ñeà WHERE gioáng nhö baát kyø meänh ñeà WHERE naøo trong phaùt bieåu SELECT hay UPDATE vaø INSERT cuûa baát kyø öùng duïng cô sôû döõ lieäu naøo coù söû duïng SQL.

Conditions coù theå laø pheùp toaùn giöõa caùc coät vaø giaù trò, nhöng cuõng coù theå giaù trò laø keát quaû traû veà töø moät phaùt bieåu SELECT khaùc.

Ghi chuù: Khoâng coù khaùi nieäm xoùa giaù trò trong moät coät, vì xoùa giaù trò moät coät ñoàng nghóa vôùi caäp nhaät coät ñoù baèng giaù trò roãng.

/* Xoaù maåu tin töø baûng vôùi ñieàu kieän */ Delete from tblCustomers Where CustName is null

Ví duï 8-19: Xoùa maåu tin vôùi phaùt bieåu SQL daïng DELETE

Trong tröôøng hôïp coù raøng buoäc veà quan heä cuûa döõ lieäu, thì xoùa maåu tin phaûi tuaân thuû theo quy taéc: Xoaù maåu tin con tröôùc roài môùi xoaù maåu tin cha.

Chaúng haïn, trong tröôøng hôïp ta coù 2 baûng: hôïp ñoàng baùn haøng (tblOrders) vaø hôïp ñoàng baùn haøng chi tieát (tblOrderDetails).

Ñeå xoaù moät hôïp ñoàng baïn caàn xoùa maåu tin trong baûng tblOrders tröôùc roài môùi ñeán caùc maåu tin trong baûng tblOrderDetails.

Ví duï 8-20: Xoaù maåu tin vôùi Delete

/* Xoaù maåu tin töø baûng con */ Delete from tblOrderDetails where OrderID=123 /* Xoaù maåu tin töø baûng cha */ Delete from tblOrders where OrderID=123

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

Baïn coù theå thöïc hieän moät phaùt bieåu SQL daïng DELETE vôùi ñieàu kieän trong meänh ñeà WHERE laáy giaù trò traû veà töø phaùt bieåu SELECT töø baûng khaùc, khai baùo nhö vaäy chæ coù hieäu löïc trong cô sôû döõ lieäu MySQL phieân baûn 8.1 trôû veà sau hay trong cô sôû döõ lieäu SQL Server vaø Oracle.

Ví duï 8-21: Xoaù maåu tin theo quy taéc coù raøng buoäc quan heä

/* Xoaù maåu tin töø baûng vôùi ñieàu kieän laáy giaù trò töø baûng khaùc */ Delete from tblOrderDetails where ItemID in (select ItemID from tblItems where ItemName like 'IT%')

6. PHAÙT BIEÅU SQL DAÏNG JOIN

Ngoaøi caùc phaùt bieåu SQL vôùi 4 daïng treân, trong phaàn keá tieáp, chuùng toâi trình baøy moät soá phaùt bieåu SQL daïng Select ñeåâ keát noái döõ lieäu giöõa caùc baûng coù quan heä vôùi nhau, nhöõng phaùt bieåu seõ trình baøy trong chöông 5 nhö:

(cid:190) Khaùi nieäm JOIN (cid:190) Phaùt bieåu INNER JOIN (cid:190) Phaùt bieåu LEFTJOIN (cid:190) Phaùt bieåu RIGHT JOIN

6.1. Khaùi nieäm veà quan heä

Ñeå phaùt trieån öùng duïng Web baèng baát kyø loaïi cô sôû döõ lieäu naøo, giai ñoaïn phaân tích thieát keá heä thoáng cöïc kyø quan troïng. Neáu keát quaû phaân tích khoâng toái öu thì öùng duïng ñoù khoâng theå ñaït ñöôïc giaù trò kyõ thuaät cuõng nhö giaù trò thöông maïi. Thieát keá cô sôû döõ lieäu khoâng toái öu, chuùng coù theå daãn ñeán vieäc chöông trình chaïy chaäm vaø khoâng beàn vöõng.

Moät khi öùng duïng chaïy chaäm ñi do cô sôû döõ lieäu khoâng toái öu thì raát coù theå baïn phaûi thieát keá vaø xaây döïng laïi töø ñaàu toaøn boä caáu truùc cuûa chöông trình vaø cô sôû döõ lieäu.

Xuaát phaùt töø lyù do naøy, khi xaây döïng moät öùng duïng thoâng tin quaûn lyù, chuùng ta caàn phaûi qua nhöõng böôùc phaân tích thieát keá heä thoáng kyõ löôõng ñeå coù ñöôïc moâ hình quan heä vaø ERD tröôùc khi ñeán caùc moâ hình chöùc naêng chi tieát.

Tuy nhieân, trong lyù thuyeát moät soá kieán thöùc cô baûn baét buoäc baïn phaûi thöïc hieän theo moâ hình heä thoáng öùng vôùi nhöõng quan heä toaøn veïn, nhöng trong thöïc teá, do tính ñaëc thuø cuûa öùng duïng, thöôøng baïn phaûi thieát keá laïi moâ hình theo nhu caàu caân ñoái giöõa ñoä phöùc taïp vaø tính toái öu.

Trong öùng duïng baùn haøng qua maïng Test ñaõ trình baøy trong chöông 3, khi quan taâm ñeán moät hôïp ñoàng treân maïng, ngoaøi nhöõng thoâng tin lieân laïc veà khaùch haøng, baïn caàn phaûi löu tröõ döõ lieäu khaùc nhö chieát haøng mua, phöông thöùc traû tieàn, phöông thöùc giao haøng,... Vaán ñeà ñöôïc thaûo luaän ôû ñaây, moãi hôïp ñoàng coù nhì6u maët haøng chi tieát.

Trong tröôøng hôïp naøy, chuùng ta coù 6 thöïc theå lieân quan nhö sau, thöïc theå danh muïc Customers (thoâng tin lieân laïc cuûa khaùch haøng), Orders (hôïp ñoàng mua haøng), OrderDetails (chi tieát haøng mua), Items (danh muïc saûn phaåm).

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

Customers

1 - n

Orders

1 - n Items

1 - n

Order Details

Sô ñoà 8-1: Moâ hình quan heä

Giaû söû raèng khi nhaäp soá lieäu vaøo cô sôû döõ lieäu, öùng vôùi hôïp ñoàng coù maõ 101, cuûa khaùch haøng coù teân Nguyeãn Vaên A, ... coù hai saûn phaåm chi tieát: 11 (Nöôùc ngoït) vaø 32 (xaø phoøng Lux).

Trong tröôøng hôïp naøy baïn ñang coù moät maåu tin hôïp ñoàng trong baûng tblCustomers, moät maåu tin hôïp ñoàng trong baûng tblOrders vaø hai maåu tin trong baûng tblOrderDetails.

Neáu muoán bieát thoâng tin hôïp ñoàng cuûa khaùch haøng A, roõ raøng baïn caàn duøng phaùt bieåu SELECT vôùi meänh ñeà keát hôïp töø 3 baûng treân. Keát quaû traû veà 2 maåu tin laø söï keát hôïp thoâng tin töø hai baûng tblCustomers, tblOrders vaø tblOrderDetails.

Khi thöïc thi phaùt bieåu SQL daïng SELECT öùng vôùi cô sôû döõ lieäu nhö treân baïn phaûi duyeät qua hai maåu tin.

Taát nhieân, khi vieát öùng duïng thì ñieàu naøy chaáp nhaän ñöôïc, vaø coù theå coi laø toái öu. Giaû söû raèng, öùng duïng naøy ñöôïc phaùt trieån treân WEB caàn löu taâm ñeán vaán ñeà toái öu toác ñoä truy vaán thì sao?

Ngöôøi thieát keá cô sôû döõ lieäu trong tröôøng hôïp naøy phaûi thay ñoåi laïi caáu truùc ñeå taêng toác ñoä truy caäp qua maïng khi xöû lyù treân cô sôû döõ lieäu cuûa ngöôøi duøng.

6.2. Khaùi nieäm veà meänh ñeà JOIN

Trong haàu heát phaùt bieåu SELECT, phaàn lôùn keát quaû maø baïn mong muoán laáy veà ñeàu coù lieân quan ñeán moät hoaëc nhieàu baûng khaùc nhau. Trong tröôøng hôïp nhö vaäy, khi truy vaán döõ lieäu baïn caàn söû duïng meänh ñeà JOIN ñeå keát hôïp döõ lieäu treân hai hay nhieàu baûng laïi vôùi nhau.

Khi söû duïng JOIN, baïn caàn quan taâm ñeán tröôøng (coät) naøo trong baûng thöù nhaát coù quan heä vôùi tröôøng (coät) naøo trong baûng thöù hai. Neáu moâ hình quan heä cuûa baïn khoâng toái öu hay khoâng ñuùng, quaûn trình söû duïng JOIN seõ cho keát quaû traû veà khoâng nhö yù muoán.

Trôû laïi öùng duïng baùn haøng qua maïng trong giaùo trình naøy, khi xuaát moät hôïp ñoàng baùn haøng cho khaùch haøng, theo thieát keá trong cô sôû döõ lieäu chuùng ta coù raát nhieàu baûng lieân quan ñeán nhau.

Chaúng haïn, neáu quan taâm baùn haøng thì baùn cho ai. Suy ra, lieân quan ñeán thoâng tin khaùch haøng, baùn saûn phaåm gì cho hoï thì lieân quan ñeán maõ saûn phaåm, neáu khaùch haøng traû tieàn thì lieân quan ñeán phieáu thu, neáu khaùch haøng coù coâng nôï thì lieân quan ñeán nôï kyø tröôùc...

Trong phaân naøy, chuùng toâi tieáp tuïc thieát keá moät soá baûng döõ lieäu cuøng vôùi kieåu döõ lieäu töông öùng vaø quan heä giöõa caùc baûng ñöôïc moâ taû nhö sau:

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

tblCustomers (danh saùch khaùch haøng)

[CustID] int auto_increment Primary key, [CustName] [varchar] (50) NULL , [Address] [varchar] (100) NULL, [Tel] [varchar] (20) NULL, [FaxNo] [varchar] (20) NULL, [Email] [varchar] (50) NULL, [Contact] [varchar] (50) NULL [Country] [varchar] (3) NULL, [Province] [varchar] (3) NULL

auto_increment Primary Key,

tblOrders (Hôïp ñoàng baùn haøng) [OrderID] [int] Not null [OrderDate] [date] NULL , [CustID] int , [Description] [varchar] (200) NULL , [ShipCost] [float] NULL , [TranID] [tinyint] NULL , [PaymentID] [tinyint] NULL , [Amount] [float] NULL , [TotalAmount] [float] NULL ,

tblOrderDetails (Hôïp ñoàng baùn haøng chi tieát) [SubID] [int] auto_increment NOT NULL , [OrderID] int , [ItemID] int, [No] int, [Qtty] [int] NULL , [Price] int NULL , [Discount] [Float] NULL , [Amount] [Float] NULL

tblItems (Danh saùch saûn phaåm) [ItemID] int auto_increment Primary key, [ItemName] [varchar] (200) NULL , [Unit] [nvarchar] (20) NULL , [Cost] [Float] NULL , [Active] [tinyint] NOT NULL , [Category] int

Baïn coù theå tìm thaáy caùc baûng döõ lieäu coøn laïi trong döõ lieäu Test trong ñóa ñính keøm theo saùch.

6.3. Meänh ñeà INNER JOIN

Phaùt bieåu SQL daïng SELECT coù söû duïng meänh ñeà INNER JOIN thöôøng duøng ñeå keát hôïp hai hay nhieàu baûng döõ lieäu laïi vôùi nhau, cuù phaùp cuûa SELECT coù söû duïng meänh ñeà INNER JOIN:

SELECT [SELECT LIST] FROM INNER JOIN ON WHERE ORDER BY [ASC / DESC]

Neáu baïn caàn laáy ra moät soá coät trong caùc baûng coù keát noái laïi vôùi nhau baèng meänh ñeà INNER JOIN thì cuù phaùp naøy vieát laïi nhö sau:

SELECT [FIELD1,FIELD2, ...] FROM INNER JOIN

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

ON WHERE ORDER BY [ASC / DESC]

/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */

Ví duï 8-23: INNER JOIN vôùi moät soá coät chæ ñònh

Select CustName,OrderID, OrderDate,Amount, TotalAmount from tblCustomers inner join tblOrders on tblCustomers.CustID = tblOrders.CustID where month (OrderDate) = 10 order by CustName

OrderID OrderDate .. TotalAmount

19 2001-10-17 86400000 11 2001-10-17 576000000 15 2001-10-17 288000000

CustName --------------------------------------------- CENTURY Hotel 13 2001-10-17 388800000 CENTURY Hotel 14 2001-10-18 518400000 CENTURY Hotel 16 2001-10-17 388800000 CENTURY Hotel 17 2001-10-18 14400000 CENTURY Hotel 18 2001-10-18 12960000 CENTURY Hotel 110 2001-10-18 216000000 Plaza Hotel 12 2001-10-17 403200000 Plaza Hotel Plaza Hotel Plaza Hotel

Keát quaû traû veà nhö sau:

Neáu baïn caàn laáy ra taát caû caùc coät trong caùc baûng coù keát noái laïi vôùi nhau baèng meänh ñeà INNER JOIN, cuù phaùp treân coù theå vieát laïi nhö sau:

SELECT first_tablename.*, second_tablename.* [,next table name] FROM INNER JOIN ON [INNER JOIN ON ] WHERE ORDER BY [ASC / DESC]

/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */

Select CustID,CustName,OrderID, OrderDate,TotalAmount from tblCustomers inner join tblOrders On TblCustomers.CustID=tblOrders.CustID where month (OrderDate) = 10 order by CustName DESC

Ví duï 8-24: INNER JOIN vôùi taát caùc tröôøng lieân quan

Keát quaû traû veà nhö sau:

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

CustID CustName .. OrderID ..TotalAmount ------ --------------------------------------- 13 Plaza Hotel .. 11 .. 576000000 13 Plaza Hotel .. 15 .. 288000000 Plaza Hotel .. 12 . . 403200000 12 .. 86400000 Plaza Hotel .. 19 12 .. 388800000 CENTURY Hotel .. 13 16 .. 518400000 CENTURY Hotel .. 14 16 .. 388800000 CENTURY Hotel .. 16 16 .. 14400000 CENTURY Hotel .. 17 16 .. 12960000 CENTURY Hotel .. 18 16 16 .. 216000000 CENTURY Hotel .. 110

Neáu trong nhöõng baûng caàn keát noái coù teân tröôøng (coät) gioáng nhau thì khi thöïc thi phaùt bieåu SQL daïng SELECT phaûi chæ roõ coät thuoäc baûng naøo. Trong tröôøng hôïp caû hai cuøng laáy döõ lieäu ra thì baïn caàn chuyeån aùnh xaï teân khaùc cho coät thoâng qua meänh ñeà AS, ví duï nhö:

SELECT first_tablename.CustID as CUSTID, second_tablename.CustID as CUSTID FROM INNER JOIN ON WHERE ORDER BY [ASC / DESC]

Neáu trong nhöõng baûng caàn keát noái ñoù coù teân tröôøng (coät) gioáng nhau vaø khoâng ñöôïc chæ roõ nhö tröôøng hôïp treân khi khai baùo trong cô sôû döõ lieäu SQL Server, khi thöïc thi phaùt bieåu SQL daïng SELECT baïn seõ bò loãi, chaúng haïn nhö:

SELECT first_tablename.*, second_tablename.* FROM INNER JOIN ON WHERE ORDER BY [ASC / DESC]

Server: Msg 209, Lecel 16, State Line 1 Ambiguous column name 'CustID'

Tuy nhieân, vôùi phaùt bieåu treân baïn coù theå thöïc thi trong cô sôû döõ lieäu MySQL. Ngoaøi ra, phaùt bieåu SQL daïng SELECT söû duïng INNER JOIN baïn coù theå aùnh xaï (alias) teân cuûa baûng thaønh teân ngaén goïn ñeå deã tham chieáu veà sau.

Thöïc ra phaùt bieåu ALIAS coù yù nghóa gioáng nhö AS vôùi teân coät trong baûng thaønh teân coät khaùc trong phaùt bieåu SELECT.

Select p.*,s.* from tablename1 inner join tablename2 On tablename1.field1 = tablename2.field2

/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */

Ví duï 8-25: INNER JOIN vôùi aùnh xaï teân baûng

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

Select c.CustName, s.OrderID,s.OrderDate, s.TotalAmount from tblCustomer c inner join tblOrders s On c.CustID=s.CustID where month (s.OrderDate) = 10 order by c.CustName DESC

OrderID OrderDate .. TotalAmount

CustName ----------------------------------------------CENTURY Hotel 13 2001- 10-17 .. 388800000 CENTURY Hotel 14 2001-10-18 .. 518400000 CENTURY Hotel 16 2001-10-17 .. 388800000 CENTURY Hotel 17 2001-10-18 .. 14400000 CENTURY Hotel 18 2001-10-18 .. 12960000 CENTURY Hotel 11 2001-10-18 .. 216000000 Plaza Hotel 12 2001-10-17 .. 403200000 Plaza Hotel 19 2001-10-17 .. 86400000 Plaza Hotel 11 2001-10-17 .. 576000000 Plaza Hotel 15 2001-10-17 .. 288000000

Keát quaû traû veà nhö sau:

Taát nhieân, baïn cuõng coù theå vieát phaùt bieåu treân öùng vôùi töøng coät muoán laáy ra baèng caùch khai baùo teân coät.

6.4. Meänh ñeà Left Join

Tröôøng hôïp baïn mong muoán keát quaû laáy ra trong hai baûng keát hôïp nhau theo ñieàu kieän: Nhöõng maåu tin baûng beân traùi toàn taïi öùng vôùi nhöõng maåu tin ôû baûng beân phaûi khoâng toàn taïi baïn haõy duøng meänh ñeà LEFT JOIN trong phaùt bieåu SQL daïng SELECT, cuù phaùp coù daïng:

select from lefttablename LEFT JOIN righttablename on lefttabkename.field1=righttablename.field2 Where Order by ASC/DESC

Chaúng haïn, baïn choïn ra taát caû caùc saûn phaåm (vôùi caùc coät) coù hay khoâng coù doanh soá baùn trong thaùng hieän taïi. Moät soá saûn phaåm khoâng baùn trong thaùng seõ coù coät Amount coù coät Amount giaù trò NULL.

/* in ra danh saùch saûn phaåm baùn trong thaùng 10 */

select ItemID,ItemName,Amount from tblItems left join tblOrderDetails on tblItems.ItemID=tblOrderDetails.ItemID order by Amount

Amount

Ví duï 8-26: SELECT duøng LEFT JOIN

ASW-60VP

NULL

Keát quaû traû veà nhö sau: ItemID ItemName ---------------------------------------------- 12

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

ASW-60VT

NULL ASW-660T 120V TW 29340 NULL ASW-685V 120V TW 29440 NULL ASW60VP 220V 34571 NULL ASW-45Z1T1 ASW-45Y1T 127V ASW-45Y1T 220V ASW-45Y1T 220V ASW-45Z1T

2960000 14400000 72000000 86400000 15200000

13 14 14 15 16 17 18 19 20 ...

6.5. Meänh ñeà Right Join

Ngöôïc laïi vôùi phaùt bieåu SQL daïng SELECT söû duïng meänh ñeà LEFT JOIN laø phaùt bieåu SQL daïng SELECT söû duïng meänh ñeà RIGHT JOIN seõ xuaát döõ lieäu cuûa baûng beân phaûi cho duø döõ lieäu cuûa baûng beân traùi khoâng toàn taïi, cuù phaùp coù daïng:

Select From lefttablename RIGHT JOIN righttablename On lefttabkename.field1=righttablename.field2 Where Order by ASC/DESC

Trong ví duï sau, baïn coù theå choïn ra taát caû caùc saûn phaåm coù hay khoâng coù doanh soá baùn trong thaùng hieän taïi. Caùc saûn phaåm khoâng toàn taïi doanh soá baùn seõ khoâng hieän ra.

/* in ra danh saùch saûn phaåm baùn trong thaùng ngaøy 17 */

/* trong phaùt bieåu SELECT naøy coù söû duïng meänh ñeà

WHERE söû duïng phaùt bieåu SELECT khaùc, keát quaû cuûa SELECT trong meänh ñeà WHERE traû veà moät maûng OrderID */

Select ItemName,Qtty, Price,Amount From tblItems Right join tblOrderDetails On tblItems.ItemID=tblOrderDetails.ItemID Where OrderID in (12,14,23,15) Order by ItemID

Qtty Price Amount

Ví duï 8-27: SELECT duøng RIGHT JOIN

Keát quaû traû veà nhö sau: ItemName ---------------------------------------------- ASW-45Y1T 127V SDIA29350 11000 12000 58400000 ASW-45Y1T 127V SDIA29350 10000 12000 44000000 ASW-45Y1T 127V SDIA 29350 10000 12000 14400000 ASW-45Y1T 127V SDIA 29350 10000 12000 44000000 ASW-45Y1T 127V SDIA 29350 11000 12000 58400000 ASW-45Y1T 127V SDIA 29350 10000 12000 44000000 ASW-45Y1T 127V SDIA 29350 11000 12000 58400000 ASW-45Y1T 220V ARG 29391 6000 12000 86400000 9000 12000 29600000 ASW-45Z1T ASW-45Z1T 9000 12000 29600000 ...

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

6.6. Pheùp toaùn hôïp (union)

Union khoâng gioáng nhö nhöõng meänh ñeà JOIN ñaõ giôùi thieäu treân ñaây. Union laø pheùp toaùn duøng ñeå noái hai hay nhieàu caâu truy vaán daïng Select laïi vôùi nhau.

Ñoái vôùi JOIN, baïn coù theå keát noái döõ lieäu ñöôïc thöïc hieän theo chieàu ngang. Ñoái vôùi Union baïn keát noái döõ lieäu ñöôïc thöïc hieän theo chieàu doïc.

Ñeå choïn ra nhöõng khaùch haøng thöôøng xuyeân trong tblCustomers, keát quaû traû veà laø danh saùch caùc khaùch haøng thöôøng xuyeân.

Ví duï 8-28: Khaùch haøng thöôøng xuyeân trong tblCustomers

Select CustID,CustName from tblCustomers

CustName

New World Hotel Kinh Do Hotel CENTURY Hotel PLAZA Hotel

Keát quaû traû veà nhö sau: CustID ---------- ----------------- 13 12 16 10

Ñeå choïn ra nhöõng khaùch haøng vaõng lai trong tblTempCustomers, keát quaû traû veà laø danh saùch caùc khaùch haøng vaõng lai.

Ví duï 8-29: Khaùch haøng vaõng lai trong tblTempCustomers

Select CustID,CustName from tblTempCustomers

CustName

Cong ty nuoc giai khat ‘12’COLA Cong ty nuoc giai khat PEPSI Cong ty nuoc giai khat REDBULK Cong ty nuoc giai khat TRIBICO

Keát quaû traû veà nhö sau: CustID ---------- --------------------------------- 23 24 25 26

Neáu duøng pheùp toaùn UNION ñeå keát noái hai baûng treân, keát quaû traû veà laø danh saùch caû hai loaïi khaùch haøng trong cuøng moät recordset.

Ví duï 8-30: SELECT söû duïng pheùp hôïp UNION

Select CustID,CustName From tblCustomers UNION Select CustID,CustName From tblTempCustomers

Keát quaû traû veà nhö sau: CustID CustName

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

Cong ty nuoc giai khat ‘12’COLA Cong ty nuoc giai khat PEPSI Cong ty nuoc giai khat REDBULK Cong ty nuoc giai khat TRIBICO Kinh Do Hotel PLAZA Hotel CENTURY Hotel New World Hotel

---------- ----------------------------------- 23 24 25 26 12 10 16 13

Ghi chuù: Khi söû duïng pheùp toaùn Union trong phaùt bieåu SQL daïng Select, baïn caàn löu yù caùc quy ñònh sau:

(cid:190) Taát caû nhöõng truy vaán trong UNION phaûi cuøng soá coät hay tröôøng. Neáu truy vaán thöù nhaát coù hai coät thì truy vaán thöù hai ñöôïc söû duïng UNION cuõng phaûi coù hai coät töông töï.

(cid:190) Khi söû duïng UNION, nhöõng coät naøo coù teân coät hay bí danh (alias) môùi thì keát quaû traû veà seõ coù töïa ñeà (header) cuûa töøng coät vaø teân laø teân coät cuûa truy vaán thöù nhaát.

(cid:190) Kieåu döõ lieäu trong caùc coät cuûa truy vaán 2 töông thích vôùi kieåu döõ lieäu caùc coät töông öùng trong truy vaán thöù nhaát.

(cid:190) Trong UNION baïn coù theå keát hôïp nhieàu caâu truy vaán laïi vôùi nhau.

(cid:190) Keát quaû hieän ra theo thöù töï cuûa truy vaán töø döôùi leân treân.

6.7.

SQL daïng thay ñoåi vaø ñònh nghóa cô sôû döõ lieäu

Phaùt bieåu SQL daïng CREATE

6.7.1.

CREATE Database

Phaùt bieåu SQL daïng CREATE duøng ñeå taïo cô sôû döõ lieäu vaø nhöõng ñoái töôïng cuûa cô sôû döõ lieäu

CREATE

trong MySQL, SQL Server, Oracle, ..., chuùng cuù phaùp nhö sau:

(cid:190) OBJECT TYPE: Loaïi ñoái töôïng cuûa cô sôû döõ lieäu ví duï nhö Procedure, Table, View,...

(cid:190) OBJECT NAME: Teân cuûa ñoái töôïng trong cô sôû döõ lieäu SQL nhö sp_IC, tblEmployer, ...

Taïo cô sôû döõ lieäu - Create database

6.7.2.

Khi xaây döïng cô sôû döõ lieäu, baïn baét ñaàu töø moâ hình cô sôû döõ lieäu ERD, hay töø moät giai ñoaïn naøo ñoù trong quy trình phaân tích thieát keá heä thoáng. Ñeå taïo cô sôû döõ lieäu treân MySQL hay SQL Server baïn söû duïng cuù phaùp sau:

CREATE DATABASE

[Name= <'Logical file name'>,]

FileName=<'File Name'>

CREATE DATABASE [ ON [PRIMARY] ( [, SIZE= ]

[, MAXSIZE= ][, FILEGROWTH = ]

)]

Cuù phaùp ñaày ñuû cuûa phaùt bieåu taïo cô sôû döõ lieäu nhö sau, neáu baïn söû duïng cô sôû döõ lieäu SQL Server:

Giaùo vieân: Phaïm Höõu Khang

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com

COMPUTER LEARNING CENTER

WWW.HUUKHANG.COM

[Name= <'Logical file name'>,]

FileName=<'File Name'>

[ LOG ON ( [, SIZE= ]

[, MAXSIZE= ][, FILEGROWTH = ]

)]

[COLLATE ] [For Load | For Attach]

6.7.3. Dieãn giaûi CREATE Database trong SQL Server

(cid:190) ON: Duøng ñeå ñònh nghóa nôi chöùa cô sôû döõ lieäu vaø khoâng gian chöùa taäp tin log.

(cid:190) NAME: Duøng ñònh nghóa teân cuûa cô sôû döõ lieäu. Teân naøy duøng tham chieáu khi goïi ñeán cô sôû döõ lieäu, teân ñöôïc duøng cho quaù trình backup, export, Import, Shrink cô sôû döõ lieäu ñoù.

(cid:190) FILENAME: Teân taäp tin cô sôû döõ lieäu löu trong ñóa cöùng, thoâng thöôøng khi caøi SQL Server leân oå ñóa naøo thì giaù trò maëc ñònh cho pheùp löu taäp tin ñeán thö muïc ñoù. Tuy nhieân, neáu muoán baïn cuõng coù theå thay ñoåi vò trí caùc file naøy.

Khi taïo cô sôû döõ lieäu, baïn ñaõ ñònh nghóa vò trí ñaët taäp tin ôû thö muïc naøo thì khoâng theå di chuyeån moät caùch thuû coâng (nhö duøng Explorer cuûa Windows), vì laøm ñieàu ñoù thaät nguy hieåm nhaát laø khi döõ lieäu trong cô sôû döõ lieäu ñang coù giaù trò kinh teá.

(cid:190) SIZE: Dung löôïng cuûa cô sôû döõ lieäu khi khôûi taïo chuùng. Thoâng thöôøng giaù trò maëc ñònh laø 1 MB.

(cid:190) Dung löôïng phaûi laø soá nguyeân, coù theå taêng theâm baèng caùch söû duïng thuû tuïc Shrink trong SQL Server.

(cid:190) MAXSIZE: Dung löôïng lôùn nhaát, khi dung löôïng cô sôû döõ lieäu taêng leân ñeán möùc MaxSize thì döøng laïi.

Neáu khi dung löôïng baèng MaxSize, caùc chuyeån taùc coù theå bò huyû boû hay traû veà loãi khoâng theå thöïc hieän ñöôïc, vaø coù theå laøm cho cô sôû döõ lieäu cuûa baïn bò treo.

Ñeå traùnh ñieàu naøy xaûy ra, thì ngöôøi quaûn trò cô sôû döõ lieäu phaûi thöôøng xuyeân theo gioûi quaù trình taêng dung löôïng cô sôû döõ lieäu theo thôøi gian, ñeå coù bieän phaùp traùnh moïi ruûi ro coù theå xaûy ra.

(cid:190) FILEGROWTH: Dung löôïng khôûi taïo cuøng dung löôïng toái ña cho pheùp taêng trong quaù trình theâm döõ lieäu vaøo cô sôû döõ lieäu. Nhaèm töï ñoäng hoùa, chuùng ta phaûi thieát laäp quaù trình taêng töï ñoäng theo chæ soá KB cho tröôùc hay tyû leä phaàn traêm theo dung löôïng ñang coù.

(cid:190) LOG ON: Log on cho pheùp baïn quaûn lyù nhöõng chuyeån taùc xaûy ra trong quaù trình söû duïng cô sôû döõ lieäu cuûa SQL Server.

Xaây döïng cô sôû döõ lieäu Test

Nhö ñaõ trình baøy ôû treân, sau ñaây ví duï taïo cô sôû döõ lieäu Test coù cuù phaùp nhö sau:

USE master GO CREATE DATABASE Test ON ( NAME = Test, FILENAME = 'c:\mssql7\data\Testdat.mdf',

Ví duï 8-31: Taïo cô sôû döõ lieäu Test trong SQL Server

Giaùo vieân: Phaïm Höõu Khang