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
/* 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
/* 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