1. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 1
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc:
Giôùi thieäu PHP
Caáu hình IIS, Apache Web Server
Caøi ñaët PHP.
o Caøi ñaët PHP.
o Caáu hình öùng duïng PHP
Giôùi thieäu PHP.
o PHP Script.
o Ghi chuù trong PHP
o In noäi dung baèng PHP
1. GIÔÙI THIEÄU PHP
PHP vieát taét cuûa chöõ Personal Home Page ra ñôøi naêm 1994 do phaùt minh cuûa
Rasmus Lerdorf, vaø noù tieáp tuïc ñöôïc phaùt trieån bôûi nhieàu caù nhaân vaø taäp theå khaùc, do ñoù
PHP ñöôïc xem nhö moät saûn phaåm cuûa maõ nguoàn môû.
PHP laø kòch baûn trình chuû (server script) chaïy treân phía server (server side) nhö
caùch server script khaùc (asp, jsp, cold fusion).
PHP laø kòch baûn cho pheùp chuùng ta xaây döïng öùng duïng web treân maïng internet hay
intranet töông taùc vôùi moïi cô sôû döõ lieäu nhö mySQL, PostgreSQL, Oracle, SQL Server vaø
Access.
Löu yù raèng, töø phieân baûn 4.0 trôû veà sau môùi hoã trôï session, ngoaøi ra PHP cuõng nhö
Perl laø kòch baûng xöû lyù chuoãi raát maïnh chính vì vaäy baïn coù theå söû duïng PHP trong nhöõng
coù yeâu caàu veà xöû lyù chuoãi.
2. CAØI ÑAËT PHP
Caøi ñaët PHP treân neàn Windows thì söû duïng php-4.0.6-Win32.zip, sau khi caøi ñaët
öùng duïng naøy treân ñóa cöùng seõ xuaát hieän thö muïc PHP, trong thöï muïc naøy seõ coù taäp tin
php4ts.dll vaø php.exe cuøng vôùi thö muïc sessiondata.
Ngoaøi ra, trong thö muïc WINDOW hoaëc WINNT seõ xuaát hieän taäp tin php.ini, taäp
tin naøy cho pheùp baïn caáu hình cho öùng duïng PHP. Chaúng haïn, khi söû duïng session, PHP
caàn moät nôi ñeå löu tröõ chuùng, trong taäp tin naøy maëc ñònh laø session.save_path =
C:PHPsessiondata, neáu baïn caøi ñaët PHP vôùi thö muïc PHP treân ñóa D thì baïn caàn thay
ñoåi ñöôøng daãn trong khai baùo naøy.
Töông töï nhö vaäy, khi coù loãi trong trangPHP thì loãi thöôøng xuaát hieän khi trieäu goïi
chuùng, ñeå che daáu caùc loãi naøy thì baïn caàn khai baùo display_errors = Off thay vì chuùng ôû
traïng thaùi display_errors = On.
Ngoaøi ra, trang PHP cuõng coù theå trình baøy moät soá warning khi chuùng phaùt hieän cuù
phaùp khoâng hôïp lyù, chính vì vaäy ñeå che daáu caùc warning naøy thì baïn cuõng caàn khai baùo
traïng thaùi Off thay vì On nhö assert.warning = Off.
3. CAÁU HÌNH ÖÙNG DUÏNG PHP
3.1. Caáu hình IIS
Sau khi caøi ñaët heä ñieàu haønh Windows NT hay 2000 trôû veà sau, baèng caùch khai baùo
môùi moät web site hay virtual site trong moät site ñang coù theo caùc böôùc nhö sau:
1. Taïo moät thö muïc coù teân myPHP ñeà löu tröõ caùc taäp tin PHP
2. Khôûi ñoäng IIS (töï ñoäng khôûi ñoäng neáu Windows NT/2000)
Giaùo vieân: Phaïm Höõu Khang
2. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
3. Choïn Start | Programs | Administrative Tools | Internet Information Server
4. Neáu taïo virtual site thì choïn Default Web Ste | R-Click | New | Virtual Site
5. Trong tröôøng hôïp taïo môùi Site thì Default Web Ste | R-Click | New | Site
6. Neáu choïn tröôøng hôïp 4 thì baïn cung taáp dieãn giaûi cuûa site nhö hình 1-1
Hình 1-1: Khai baùo dieãn giaûi
7. Choïn nuùt Next vaø khai baùo IP vaø port, trong tröôøng hôïp baïn khoâng söû duïng port
80 cho öùng site khaùc thì choïn giaù trò maëc ñònh. Tuy nhieân neáu coù nhieàu öùng
duïng tröôùc ñoù ñaõ caáu hình trong IIS thì baïn coù theå thay ñoåi port khaùc, ví duï
choïn port 85 nhö hình 1-2.
Hình 1-2: Khai baùo IP vaø Port
Löu yù raèng, port 80 laø port chuaån ñieàu naøy coù nghóa laø khi trieäu goïi treân trình
duyeät baïn khoâng caàn goõ port, ví duï http://localhost/. Ñoái vôùi tröôøng hôïp port khaùc thì baïn
phaûi goõ töông töï nhö http://localhost:85/
Giaùo vieân: Phaïm Höõu Khang
3. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
8. Choïn Next, baïn choïn thö muïc cuûa öùng duïng, ñoái vôùi tröôøng hôïp naøy chuùng ta
choïn vaøo thö muïc myPHP, chaúng haïn trong tröôøng hôïp naøy chuùng ta choïn htö
muïc myPHP nhö hình 1-3.
Hình 1-3: Choïn thö muïc myPHP
9. Keá ñeán choïn quyeàn truy caäp web site, trong tröôøng hôïp ñang thieát keá thì baïn
choïn vaøo Browse. Ngoaøi ra, neáu baïn cho pheùp ngöôøi söû duïng internet coù theå
thöïc thi taäp tin thöïc thi töø xa thì choïn vaøo tuyø choïn execute.
Hình 1-4: Quyeàn truy caäp
10.Choïn Next vaø Finish, trong cöûa soå IIS xuaát hieän öùng duïng coù teân myPHP (khai
baùo trong phaàn dieãn giaûi) nhö hình 1-5.
Giaùo vieân: Phaïm Höõu Khang
4. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-5: Taïo thaønh coâng öùng duïng PHP trong IIS
11.Sau khi taïo öùng duïng xong, baïn choïn teân öùng duïng myPHP | R-Click }
Properties | cöûa soå xuaát hieän nhö hình 1-5.
Hình 1-5: Caáu hình PHP trong IIS
12.Baèng caùch choïn vaøo nuùt Configuration, cöûa soå seõ xuaát hieän nhö hình 1-6.
Giaùo vieân: Phaïm Höõu Khang
5. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-6: Theâm PHP Engine
13.Choïn nuùt Add, vaø khai baùo nhö hình 1-7.
Hình 1-7: Khai baùo PHP Engine
14.Ñeå kieåm tra uùng duïng, baïn môû cöûa soå IE vaø goõ treân thanh ñòa chæ chuoãi nhö sau:
http://localhost:85/ , keát quaû xuaát hieän nhö hình 1-8.
Giaùo vieân: Phaïm Höõu Khang
6. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-8: ÖÙng duïng PHP ñaõ ñöôïc khôûi ñoäng
3.2.
4.
Caøi ñaët Apache Web Servr
Ñeå caøi ñaët Apache Web Server, baïn theo caùc böôùc sau
1. Chep tap tin apache_1.3.22-win32-x86.exe xuong dia cung
2. Chay tap tin nay va cai dat len dia C:Program Files, sau khi ket thuc thanh
cong phan cai dat Apache, baïn baét ñaàu caáu hình öùng duïng PHP.
3. Cheùp ba doøng leänh töø taäp tin install.txt trong thö muïc C:PHP
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
4. Paste vaøo taäp tin httpd.conf trong thö muïc C:Program FilesApache
GroupApacheConf
5. Chon Start | Programs | Apache HTTP Server | Control Apache Server | Start
6. Viet trang test.php voi noi dung <?echo "hello";?>
7. Chep tap tin test.php vao thu muc C:Program FilesApache
GroupApachehtdocs
8. Sau ñoù goõ treân trình duyeät http://localhost/test.php
GIÔÙI THIEÄU PHP
4.1. Yeâu caàu
PHP döïa treân cuù phaùp cuûa ngoân ngöõ laäp trình C, chính vì vaäy khi laøm vieäc vôùi PHP
baïn phaûi laø ngöôøi coù kieán thöùc veà ngoân ngöõ C, C++, Visual C. Neáu baïn xaây döïng öùng
duïng PHP coù keát noái cô sôû döõ lieäu thì kieán thöùc veà cô sôû döõ lieäu MySQL, SQL Server hay
Oracle laø ñieàu caàn thieát.
Giaùo vieân: Phaïm Höõu Khang
7. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
4.2.
4.3.
4.4.
Giôùi thieäu
PHP laø kòch baûn trình chuû (Server Script) ñöôïc chaïy treân neàn PHP Engine, cuøng
vôùi öùng duïng Web Server ñeå quaûn lyù chuùng. Web Server thöôøng söû duïng laø IIS, Apache
Web Server, ...
Thoâng dòch trang PHP
Khi ngöôøi söû duïng goïi trang PHP, Web Server trieäu goïi PHP Engine ñeå thoâng dòch
(töông töï nhö ASP 3.0 chæ thoâng dòch chöù khoâng phaûi bieân dòch) dòch trang PHP vaø traû veà
keát quaû cho ngöôøi söû duïng nhö hình 1-9.
Hình 1-9: Quaù trình thoâng dòch trang PHP
Taäp tin
PHP
Web
Server
PHP
Engine
P
Parse
Response
Request
Parse
Request
Response
Kòch baûn (script)
Noäi dung cuûa PHP coù theå khai baùo laãn loän vôùi HTML, chính vì vaäy baïn söû duïng caëp
daáu giaù <?=trò/bieåu thöùc/bieán?> ñeå khai baùo maõ PHP. Chaúng haïn, chuùng ta khai baùo:
<br>
1-Giaù trò bieán Str: <?=$groupid?>
2-Giaù trò bieán i: <?=$i?>
3-Giaù trò cuõ theå: <?=10?>
Chaúng haïn baïn khai baùo trang hello.php vôùi noäi dung nhö ví duï 1-1 sau:
Ví duï 1-1: Trang hello.php
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
Greeting: <?="Hello PHP"?>
</BODY>
</HTML>
Keát quaû traû veà nhö hình 1-10 khi trieäu goïi trang naøy treân trình duyeät.
Giaùo vieân: Phaïm Höõu Khang
20. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Baøi 3
PHEÙP TOAÙN VAØ PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN
TRONG PHP
Chöông naøy chuùng ta seõ laøm quen vaø tìm hieåu toaùn töû, phaùt bieåu
coù ñieàu kieän vaø voøng laëp cuûa PHP.
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy
Toaùn töû.
Pheùp gaùn trong PHP
Phaùt bieåu coù ñieàu khieån.
Voøng laëp.
1. KHAÙI NIEÄM VEÀ CAÙC TOAÙN TÖÛ TRONG PHP
Khi baïn laäp trình treân PHP laø söû duïng cuù phaùp cuûa ngoân ngöõ C, C++.
Töông töï nhö nhöõng ngoân ngöõ laäp trình khaùc, toaùn töû giuùp cho baïn thöïc hieän
nhöõng pheùp toaùn nhö soá hoïc hay treân chuoãi.
Baûng sau ñaây giuùp cho baïn hình dung ñöôïc nhöõng toaùn töû söû duïng trong
PHP, PHP ñònh nghóa toaù töû toaùn hoïc, quan heä, soá hoïc, bit vaø noät soá pheùp toaùn
gaùn.
Loaïi toaùn töû Toaùn töû Dieãn giaûi Ví duï
Arithmetic
+
-
*
/
%
Addition
Subtraction
Multiplication
Division
Modulus
a + b
a - b
a * b
a / b
a % b
Relational
>
<
>=
<=
!=
==
Greater than
Less than
Greater than or equal
Less than or equal
Not equal
Equal
a > b
a < b
a >= b
a <= b
a != b
a == b
Logical
!
&&
||
Not
AND
OR
!a
a && b
a || b
huukhang@yahoo.com 3-1
21. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Assignment
=
++
--
+=
-=
*=
/=
%=
|=
&=
^=
.=
Increment and assign
Decrement and assign
Add and assign
Subtract and assign
Multiply and assign
Divide and assign
Take modulus and assign
OR and assign
AND and assign
XOR and assign
Concat and assign
a = b
a++
a--
a += b
a -= b
a *= b
a /= b
a %= b
a |= b
a &= b
a ^= b
a .= b
Allocation new
Create a new object of a
class
new A()
Selection ? : If...Then selection a ? b : c
2. GIÔÙI THIEÄU TOAÙN TÖÛ
Khi noùi ñeán toaùn töû, chuùng ta luoân lieân töôûng ñeán thöù töï xöû lyù, cuõng nhö
trong toaùn hoïc, toaùn töû trong PHP cuõng co ñoä öu tieân add-subtract-multi-divide.
2.1. Toaùn töû AND
Khi thöïc hieän moät vieäc taêng leân giaù trò thì baïn söû duïng cuù phaùp nhö sau:
$ i=0;$j=0;
j=i++;// i taêng sau khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j vaãn
khoâng thay ñoåi
j=++i;// i taêng tröôùc khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j thay
ñoåi.
Ví duï 3.1: Pheùp toaùn AND.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>AND Operator</h4>
<?php
huukhang@yahoo.com 3-2
77. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
for($i=0;$i<=7;$i++)
{
for($j=0;$j<=7;$j++)
{
$arrs[$i][$j]=10+$i*$j;
}
}
for($i=0;$i<=7;$i++)
{
for($j=0;$j<=7;$j++)
{
echo $arrs[$i][$j]." ";
}
echo "<br>";
}
echo "<br>";
?>
</body>
</html>
Khi trieäu goïi trang naøy treân trình duyeät, keát quaû trình baøy nhö hình 7-8.
Hình 7-8: Maûng hai chieàu
Giaùo vieân: Phaïm Höõu Khang
78. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
3. KIEÅU DATETIME
Ñeå laøm vieäc vôùi kieåu döõ lieäu Date vaø Time, baïn söû duïng haøm cuûa PHP coù saün. Chaúng haïn, muoán
trình baøy chuoãi ngaøy thaùng, baïn duøng haøm date vôùi caùc tham soá nhö ví duï sau:
<html>
<head>
<title>Date and Time</title>
</head>
<body>
<h4>Ngay hien tai</h4>
<?php
echo date("j-S-F-Y");
echo "<br>";
echo date("M/Y");
echo "<br>";
echo "Days of ".date("M")." is ".date("t");
echo "<br>";
?>
</body>
</html>
Keát quaû traû veà nhö hình 7-9.
Hình 7-9: Söû duïng haøm Date
Löu yù raèng, than soá trong haøm date ñöôïc trình baøy trong baûng sau
-----------------------------------------------------------------------
Code Dieãn giaûi
-----------------------------------------------------------------------
a Buoåi saùng/Chieàu baèng hai kyù töï thöôøng am/pm.
A Buoåi saùng/Chieàu baèng hai kyù töï hoa AM/PM.
B Ñònh daïng thôøi gian Swatch Internet, baïn coù theå tham khaûo
http://swatch.com/internettime/internettime.php3.
d Day (01-31) trong thaùng vôùi hai soá, neáu ngaøy 1-9 seõ coù keøm soá 0.
D Day (Mon-Sun) trong tuaàn vôùi 3 kyù töï.
Giaùo vieân: Phaïm Höõu Khang
79. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
F Thaùng (January-December) trong naêm vôùi teân thaùng ñaày ñuû daïng text.
g Hour (1-12) trong ngaøy 1 hoaëc 2 soá (khoâng keøm 0 neáu giôø töø 1-9).
G Hour (0-23) trong ngaøy 1 hoaëc 2 soá (khoâng keøm 0 neáu giôø töø 0-9).
h Hour (01-12) trong ngaøy 2 soá (keøm 0 neáu giôø töø 01-09).
H Hour (00-23) trong ngaøy 2 soá (keøm 00 neáu giôø töø 00-09).
i Minutes (01-59) ñaõ troâi qua (keøm 00 neáu phuùt töø 00-59).
j Day (1-31) 1 hoaëc 2 soá (khoâng keøm 0 neáu ngaøy töø 1-9).
l Day (Monday-Sunday) trong tuaàn daïng text.
L Naêm nhuaàn traû veà 1, ngöôïc laïi haøm traû veà 0.
m Month (01-12) trong naêm 2 soá (keøm 00 neáu thaùng töø 01-09).
M Month (Jan-Dec) trong naêm 3 kyù töï.
n Month (1-12) 1 hoaëc 2 soá (khoâng keøm 0 neáu thaùng töø 1-9).
s Seconds (01-59) ñaõ troâi qua (keøm 00 neáu giaây töø 00-59).
S Theâm hai kyù töï st, nd, rd hay th theo sau ngaøy daïng hai kyù töï soá
(ví duï nhö 12th
).
t Traû veà toång soá ngaøy trong thaùng (töø 28 -31).
T Kyù töï Timezone cuûa server vôùi 3 kyù töï, chaúng haïn nhö EST.
U Toång soá Seconds töù 1 January 1970 tôùi hoâm nay öùng vôùi UNIX Time Stamp.
w Day (0-6) cuûa tuaàn, 0 öùng vôùi Sunday vaø 6 öùng vôùi Saturday.
y Naêm ñònh daïng 2 con soá (03).
Y Naêm ñònh daïng 4 con soá (2003).
z Ngaøy trong naêm moät hoaëc 2 con soá (0-365).
X Timezone hieän taïi tính baèng giaây töø –43200 ñeán 43200.
-----------------------------------------------------------------------
4. KEÁT LUAÄT
Trong baøi naøy, chuùng ta taäp trung tìm hieåu xöû lyù chuoãi, maûng vaø haøm ngaøy thaùng. Trong baøi tieáp,
chuùng ta tieáp tuïc tìm hieåu cô sôû döõ lieäu mySQL.
Giaùo vieân: Phaïm Höõu Khang
80. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: MySQL
Baøi 8
Baøi hoïc naøy chuùng ta seõ laøm quen caùch thao taùc treân cô sôû döõ lieäu MySQL:
Giôùi thieäu cô sôû döõ lieäu MySQL
Caøi ñaët MySQL
Caáu hình
Kieåu döõ lieäu
Khai baùo caùc phaùt bieåu
1. GIÔÙI THIEÄU CÔ SÔÛ DÖÕ LIEÄU MYSQL
MySQL laø cô sôû döõ lieäu ñöôïc söû duïng cho caùc öùng duïng Web coù quy moâ vöøa vaø nhoû. Tuy khoâng
phaûi laø moät cô sôû döõ lieäu lôùn nhöng chuùng cuõng coù trình giao dieän treân Windows hay Linux, cho pheùp
ngöôøi duøng coù theå thao taùc caùc haønh ñoäng lieân quan ñeán cô sôû döõ lieäu.
Cuõng gioáng nhö caùc cô sôû döõ lieäu, khi laøm vieäc vôùi cô sôû döõ lieäu MySQL, baïn ñaêng kyù keát noái,
taïo cô sôû döõ lieäu, quaûn lyù ngöôøi duøng, phaàn quyeàn söû duïng, thieát keá ñoái töôïng Table cuûa cô sôû döõ lieäu
vaø xöû lyù döõ lieäu.
Tuy nhieân, trong baát kyø öùng duïng cô sôû döõ lieäu naøo cuõng vaäy, neáu baûn thaân chuùng coù hoã trôï moät
trình giao dieän ñoà hoaï, baïn coù theå söû duïng chuùng tieän lôïi hôn caùc söû duïng Command line. Bôûi vì, cho
duø baïn ñieàu khieån MySQL döôùi baát kyø hình thöùc naøo, muïc ñích cuõng quaûn lyù vaø thao taùc cô sôû döõ
lieäu.
2. CAØI ÑAËT MYSQL
Ñeå caøi ñaët MySQL treân neàn Windows baïn theo caùc böôùc sau:
Tröôùc tieân baïn cheùp taäp tin mysql-4.0.0a-alpha-win.zip vaøo ñóa cöùng hoaëc choïn chuùng töø ñóaq
CD vaø giaûi neùn taäp tin
Chaïy taäp tin Setup.exe, choïn ñóa C hay D
Sau khi caøi ñaët thaønh coâng, baïn kieåm tra trong Windows Services xuaát hieän dòch vuï mySQL
hay khoâng?. Ñeå söû duïng ñöôïc MySQL thì traïng thaùi cuûa dòch vuï naøy phaûi ôû cheá ñoä Started.
Löu yù raèng, trong tröôøng hôïp MySQL khoâng theå chaïy ñöôïc, do dòch vuï cuûa MySQL chöa Started
nhö , ñeå coù theå chaïy ñöôïc MySQL thì baïn caàn moät soá thay ñoåi trong taäp tin my.ini trong thö muïc
WINNT
--------------------------------------------------------------------------------------
#This File was made using the WinMySQLAdmin 1.3
#Tool
#9/11/2003 10:50:13 AM
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysqld-nt]
basedir=C:/mysql
#bind-address=127.0.0.1
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
Giaùo vieân: Phaïm Höõu Khang
81. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=root
password=
QueryInterval=10
3. TAÏO CÔ SÔÛ DÖÕ LIEÄU VAØ NGÖÔØI DUØNG
Trong tröôøng hôïp baïn söû duïng giao dieän ñoà hoaï thì duøng ích quaûn trò cô sôû döõ lieäu MySQL, baïn
coù theå chaïy taäp tin mysqlfront.exe trong thö muïc MySQL Control, baèng caùch chaïy taäp tin cöûa soå xuaát
hieän nhö hình 8-1. Neáu laàn ñaàu tieân taïo keát noái cô sôû döõ lieäu, baïn caàn phaûi taïo moät Connection, cung
caáp teân Server hay IP cuûa maùy chöùa MySQL.
Tuy nhieân, trong tröôøng hôïp maùy chöùa cô sôû döõ lieäu MySQL laø maùy ñang söû duïng, baïn coù theå
söû duïng localhost. Ngaøi ra, cuõng gioáng nhö caùc cô sôû döõ lieäu khaùc, Username maëc ñònh cuûa cô sôû döõ
lieäu MySQl laø root vaø Password laø roãng.
Neáu baïn ñaõ coù cô sôû döõ lieäu ñang toàn taïi, baïn coù theå goõ teân cô sôû döõ lieäu trong phaàn Databases (
neáu muoán môû nhieàu database, baïn coù theå duøng daáu ; ñeå phaân caùch).
Trong tröôøng hôïp laàn ñaàu tieân, baïn khoâng caàn cung caáp teân cô sôû döõ lieäu, baïn coù theå taïo chuùng
sau khi keát noái.
Hình 8-1: Keát noái cô sôû döõ lieäu baèng MySQLFront Tool
Sau keát noái cô sôû döõ lieäu thaønh coâng, trình ñieàu khieån cô sôû döõ lieäu MySQL coù giao dieän nhö
hình 8-2, coäng vieäc ñaàu tieân baïn phaûi thöïc hieän laø taïo cô sôû döõ lieäu.
Baét ñaàu töø menu coù teân Tools | Create Database hay choïn teân root@localhost | R-Click | Create
Database, cöûa soå xuaát hieän nhö hình 8-3.
Giaùo vieân: Phaïm Höõu Khang
82. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-2: Giao dieän ñieàu khieån cô sôû döõ lieäu MySQL
Cung caáp teân cô sôû döõ lieäu, trong tröôøng hôïp naøy baïn coù theå nhaäp Test, baám nuùt OK, cô sôû döõ
lieäu xuaát hieän trong cöûa soå ñieàu khieån.
Hình 8-3: Taïo cô sôû döõ lieäu coù teân Test
Trong caû hai tröôøng hôïp taïo cô sôû döõ lieäu baèng MySQL thaønh coâng nhö treân, baïn coù theå tìm
thaáy teân cô sôû döõ lieäu ñoù trong thö muïc mysql/data nhö hình 8-4 sau:
Giaùo vieân: Phaïm Höõu Khang
83. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-4: Thö muïc tin cô sôû döõ lieäu Test
3.1. Quaûn lyù ngöôøi duøng
Laøm theá naøo ñeå ñaêng nhaäo vaøo cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch nhö trình
baøy ôû treân. Tuy nhieân, sau khi taïo ra caùc username khaùc, baïn coù theå söû duïng chuùng ñeå ñaêng nhaäp.
Ñeå ñaêng nhaäp vaøo MySQL baèng Command line, baïn chæ caàn goõ >mysql – hostname –u username
– p töø daáu nhaéc hay ñaêng nhaäp baèng caùch söû duïng trình giao dieän ñoà hoaï. Töø khoaù -h hæ ra raèng teân
(computer name), IP, hay localhost cuûa maùy coù söû duïng cô sôû döõ lieäu MySQL, -u chæ ra raèng baïn söû
duïng username, username laø teân username, -p ñöôïc chæ ñònh khi username naøy coù password. Trong
tröôøng hôïp password laø roãng, baïn coù theå khoâng cung caáp tham soá –p.
Ñeå taïo User trong cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch treân. Neáu baïn thöïc hieän
vieäc taïo moät Username baèng Command line, baïn coù theå goõ töø daáu nhaéc nhö phaùt bieåu sau:
GRANT
Select, Insert, Update,
Delete, Index, Alter,
Create, Drop, References
ON *.* TO 'myis'@'%'
IDENTIFIED BY '12345678'
Trong phaùt bieåu treân, vöøa taïo ra User coù teân myis, vôùi hostname laø cô sôû döõ lieäu hieän haønh,
password laø 1234 vaø ñöôïc caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân
cô sôû döõ lieäu hieän haønh.
Trong tröôøng hôïp baïn taïo ra moät Username khoâng cung caáp caùc ñaët quyeàn treân cô sôû döõ lieäu,
baïn coù theå thöïc hieän nhö phaùt bieåu taïo username: test, password: 1234 sau:
GRANT
usage
ON *.* TO 'test'@'%'
Giaùo vieân: Phaïm Höõu Khang
84. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
IDENTIFIED BY '1234'
Neáu baïn söû duïng giao dieän ñoà hoaï, baïn coù theå taïo username vaø gaùn quyeàn nhö treân baèng caùch
söû duïng menu coù teân Tools | User-Manager, cöûa soå xuaát hieän nhö hình 8-5.
Hình 8-5: Taïo Username
3.2. Caáp quyeàn cho ngöôøi duøng
Caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân cô sôû döõ lieäu, baïn
coù theå tham khaûo chi tieát trong baûng 8-1.
Baûng 8-1: Caùc ñaët quyeàn treân cô sôû döõ lieäu
----------------------------------------------
Loaïi aùp duïng Dieãn giaûi
----------------------------------------------
select tables, Cho pheùp user truy vaán maåu
columns tin töø Table.
insert tables, Cho pheùp user theâm môùi maåu
columns tin vaøo Table.
update tables, Cho pheùp user thay ñoåi giaù
columns trò cuûa maåu tin toàn taïi
trong Table.
delete tables Cho pheùp user maåu tin toàn
taïi trong Table.
index tables Cho pheùp user theâm môùi hay
xoaù chæ muïc cuûa Table.
alter tables Cho pheùp user thay ñoåi caáu
truùc cuûa ñoái töôïng Table
Giaùo vieân: Phaïm Höõu Khang
85. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
hay Database toàn taïi, nhö
theâm coät vaøo trong Table
toàn taïi, thay ñoåi kieåu döõ
lieäu cuûa coät döõ lieäu, ..
create databases Cho pheùp user taïo môùi ñoái
tables töôïng Table hay Database.
drop databases Cho pheùp user xoaù ñoái
tables töôïng Table hay Database.
----------------------------------------------
Xuaát phaùt töø caùc quyeàn coù aûnh höôûng ñeán caáu truùc cô sôû döõ lieäu, caùc ñoái töôïng cuûa cô sôû döõ lieäu
vaø döõ lieäu, baïn coù theå xem xeùt kyõ caøng tröôùc khi caáp quyeàn cho user aøm vieäc treân cô sôû döõ lieäu.
Ngoaøi caùc quyeàn treân, trong MySQL coøn coù moät soá quyeàn khoâng gaùn maëc ñònh nhö trong baûng
8-2, baïn coù theå xem xeùt caùc ñaët quyeàn quaûn trò ñeå caáp cho ngöôøi duøng.
Baûng 8-2: Caùc ñaët quyeàn quaûn trò treân cô sôû döõ lieäu
----------------------------------------------
Loaïi Dieãn giaûi
----------------------------------------------
reload Cho pheùp ngöôøi quaûn trò naïp laïi caùc
Table, quyeàn, host, logs vaø Table.
shutdown Cho pheùp ngöôøi quaûn trò chaám döùt hoaït
ñoäng MySQL Server.
process Cho pheùp ngöôøi quaûn trò xem quaù trình
thöïc hieän cuûa trình chuû vaø coù theå chaám
döùt moät soá quaù trình ñang thöïc thi.
file Cho pheùp döõ lieäu ghi vaøo Table töø taäp
tin.
----------------------------------------------
Löu yù: Nhöõng username bình thöôøng khoâng neân caáp quyeàn nhö trong baûng 8-2 cho hoï, trong
tröôøng hôïp baïn muoán caàp taát caû caùc quyeàn trong baûng 8-1 vaø Baûng 8-2 cho username khi taïo ra hoï,
baïn Table söû duïng töø khoaù All thay vì All Privileges trong phaùt bieåu taïo user nhö sau:
GRANT
ALL
ON *.* TO 'ekhang'@'%'
IDENTIFIED BY '12345678'
Töông töï nhö vaäy, trong tröôøng hôïp baïn khoâng cung caáp baát kyø ñaët quyeàn naøo treân cô sôû döõ
lieäu hieän haønh, baïn coù theå khai baùo phaùt bieåu caáp uyeàn nhö sau:
GRANT
usage
ON *.* TO 'ekhang'@'%'
IDENTIFIED BY '12345678'
3.3. Xoaù quyeàn cuûa user
Ñeå xoaù caùc quyeàn cuûa user töø cô sôû döõ lieäu hieän haønh, baïn coù theå söû duïng phaùt bieåu SQL coù teân
Revoke, phaùt bieåu Revoke ngöôïc laïi vôùi phaùt bieåu Grant.
Neáu baïn xoaù moät soá quyeàn cuûa user, baïn coù theå söû duïng khai baùo nhö phaùt bieåu sau:
Revoke privileges [(columns)]
ON item
From username
Trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user, baïn coù theå söû duïng phaùt bieåu nhö sau:
Giaùo vieân: Phaïm Höõu Khang
86. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Revoke All
ON item
From username
Neáu user ñoù ñöôïc caáp quyeàn vôùi tuyø choïn Grant Option, ñeå xoaù caùc quyeàn ñoù cuûa user, baïn coù
theå khai baùo nhö sau:
Revoke Grant Option
ON item
From username
Ñeå tham khaûo chi tieát quaù trình caáp vaø xoaù quyeàn cuûa moät user, baïn coù theå tham khaûo moät soá
phaùt bieåu nhö sau:
Gaùn quyeàn Administrator cho user coù teân fred treân moïi cô sôû döõ lieäu trong MySQL, password
cuûa anh ta laø mnb123, baïn coù theå khai baùo nhö sau:
Grant all
On *
To fred indetifyed by ‘mnb123’
With Grant Option;
Neáu baïn khoâng muoán user coù teân fred trong heä thoáng, baïn coù theå xoaù anh ta baèng caùch khai
baùo phaùt bieåu sau:
Revoke all
On *
From fred;
Taïo moät user coù teân ekhang vôùi password laø 12345678, ñöôïc laøm vieäc treân cô sôû döõ lieäu Test,
khoâng caáp quyeàn cho user naøy, baïn coù theå khai baùo nhö sau:
Grant usage
On Test.*
To ekhang identified by ‘12345678’;
Töông töï nhö vaäy, trong tröôøng hôïp baïn muoán caáp moät soá quyeàn cho user coù teân ekhang treân cô
sôû döõ lieäu Test, baïn coù theå khai baùo nhö sau:
Grant select, insert, delete, update, index, drop
On Test.*
To ekhang;
Neáu baïn muoán xoaù bôùt moät soá quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå
khai baùo nhö sau:
Revoke update, delete, drop
On Test.*
From ekhang;
Nhöng trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test,
baïn coù theå khai baùo:
Revoke All
On Test.*
From ekhang;
Giaùo vieân: Phaïm Höõu Khang
87. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
4. KIEÅU DÖÕ LIEÄU CUÛA CÔ SÔÛ DÖÕ LIEÄU MYSQL
Tröôùc khi thieát keá cô sôû döõ lieäu treân MySQL, baïn caàn phaûi tham khaûo moät soá kieåu döõ lieäu
thöôøng duøng, chuùng bao goàm caùc nhoùm nhö: numeric, date and time vaø string.
Ñeàu caàn löu yù trong khi thieát keá cô sôû döõ lieäu, baïn caàn phaûi xem xeùt kieåu döõ lieäu cho moât coät
trong Table sao cho phuø hôïp vôùi döõ lieäu cuûa theá giôùi thöïc.
Ñieàu naøy coù nghóa laø khi choïn döõ lieäu cho coät trong Table, baïn phaûi xem xeùt ñeán loaïi döõ lieäu
caàn löu tröõ thuoäc nhoùm kieåu döõ lieäu naøo, chieàu daøi cuõng nhö caùc raøng buoäc khaùc, nhaèm khai baùo cho
phuø hôïp.
4.1. Loaïi döõ lieäu numeric
Kieåu döõ lieäu numeric bao goàm kieåu soá nguyeân trình baøy trong baûng 8-3 vaø kieåu soá chaám ñoäng,
trong tröôøng hôïp döõ lieäu kieåu daáu chaám ñoäng baïn caàn phaûi chæ roõ bao nhieàu soá sau ñaáu phaàn leû nhö
trong baûng 8-4.
Baûng 8-3: Kieåu döõ lieäu soá nguyeân
----------------------------------------------
Loaïi Range Bytes Dieãn giaûi
----------------------------------------------
tinyint -127->128 1 Soá nguyeân raát nhoû.
hay
0..255
smallint -32768 2 Soá nguyeân nhoû.
->32767
hay
0..65535
mediumint -8388608 3 Soá nguyeân vöøa.
-> 838860
hay
0..16777215
int -231
->231
-1 4 Soá nguyeân.
hay
0..232
-1
bigint -263
->263
-1 8 Soá nguyeân lôùn.
hay
0..264
-1
----------------------------------------------
Baûng 8-4: Kieåu döõ lieäu soá chaám ñoäng
----------------------------------------------
Loaïi Range Bytes Dieãn giaûi
----------------------------------------------
float phuï thuoäc Soá thaäp phaân
Soá thaäp daïng Single hay
Phaân Double.
Float(M,D) 4 Soá thaäp phaân
±1.175494351E-38 daïng Single.
±3.40282346638
Double(M,D) 8 Soá thaäp phaân
daïng Double.
±1.7976931348623157308
±2.2250738585072014E-308
Giaùo vieân: Phaïm Höõu Khang
88. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Float(M[,D])
Soá chaám ñoäng löu
döôùi daïng char.
----------------------------------------------
4.2.
4.3.
Loaïi döõ lieäu Datet and Time
Kieåu döõ lieäu Date and Time cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi hay daïng soá nhö trong
baûng 8-5.
Baûng 8-5: Kieåu döõ lieäu soá nguyeân
----------------------------------------------
Loaïi Range Dieãn giaûi
----------------------------------------------
Date 1000-01-01 Date trình baøy döôùi daïng
yyyy-mm-dd.
Time -838:59:59 Time trình baøy döôùi
838:59:59 daïng hh:mm:ss.
DateTime 1000-01-01 Date vaø Time trình baøy döôùi
00:00:00 daïng yyyy-mm-dd hh:mm:ss.
9999-12-31
23:59:59
TimeStamp[(M)]
1970-01-01 TimeStamp trình baøy döôùi
00:00:00 daïng yyyy-mm-dd hh:mm:ss.
Year[(2|4)]
1970-2069 Year trình baøy döôùi
1901-2155 daïng 2 soá hay 4 soá.
----------------------------------------------
Ñoái vôùi kieåu döõ lieäu TimeStamp, baïn coù theå ñònh daïng nhieàu caùch nhö trình baøy trong baûng 8-
6.
Baûng 8-6: Trình baøy ñaïi dieän cuûa TimeStamp
----------------------------------------------
Loaïi Hieån thò
----------------------------------------------
TimeStamp YYYYMMDDHHMMSS
TimeStamp(14) YYYYMMDDHHMMSS
TimeStamp(12) YYMMDDHHMMSS
TimeStamp(10) YYMMDDHHMM
TimeStamp(8) YYYYMMDD
TimeStamp(6) YYMMDD
TimeStamp(4) YYMM
TimeStamp(2) YY
----------------------------------------------
Loaïi döõ lieäu String
Kieåu döõ lieäu String chia laøm ba loaïi, loaïi thöù nhaát nhö char (chieàu daøi coá ñònh) vaø varchar
(chieàu daøi bieán thieân). Char cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi vôùi chieáu daøi lôùn nhaát baèng
chieàu daøi baïn ñaõ ñònh nghóa, nhöng khi truy caäp döõ lieäu treân Field coù khai baùo daïng naøy, baïn caàn
phaûi xöû lyù khoaûng traéng. Ñieàu naøy coù nghóa laø neáu khai baùo chieàu daøi laø 10, nhöng baïn chæ nhaäp
hcuoãi 4 kyù töï, MySQL löu tröõ trong boä nhôù chieàu daøi 10.
Giaùo vieân: Phaïm Höõu Khang
89. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Ngöôïc laïi vôùi kieåu döõ lieäu Char laø Varchar, chieàu daøi lôùn haát ngöôøi duøng coù theå nhaäp vaøo baèng
chieàu daøi baïn ñaõ ñònh nghóa cho Field naøy, boä nhôù chæ löu tröõ chieàu daøi ñuùng vôùi chieàu daøi cuûa chuoãi
baïn ñaõ nhaäp.
Nhö vaäy, coù nghóa laø neáu baïn khai baùo kieåu varchar 10 kyù töï, nhöng baïn hcæ nhaäp 5 kyù töï,
MySQL chæ löu tröõ chieàu daøi 5 kyù töï, ngoaøi ra, khi baïn truy caäp ñeán Field coù kieåu döõ lieäu naøy, baïn
khoâng caàn phaûi giaûi quyeát khoaûng traéng.
Loaïi thöù hai laø Text hay Blob, Text cho pheùp löu chuoãi raát lôùn, Blob cho pheùp löu ñoái töôïng nhò
phaân. Loaïi thöù 3 laø Enum vaø Set. Baïn coù theå tham khaûo caû ba loaïi treân trong baûng 8-7.
Baûng 8-7: Kieåu döõ lieäu String
----------------------------------------------
Loaïi Range Dieãn giaûi
----------------------------------------------
char 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát
characters 255 kyù töï.
varchar 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát
characters 255 kyù töï (characters).
tinyblob 28
-1 Khai baùo cho Field chöùa kieåu
ñoái töôïng nhò phaân côû 255
characters.
tinytext 28
-1 Khai baùo cho Field chöùa kieåu
chuoãi côû 255 characters.
blob 216
-1 Khai baùo cho Field chöùa kieåu
blob côû 65,535 characters..
text 216
-1 Khai baùo cho Field chöùa kieåu
chuoãi daïng vaên baûn côû 65,535
characters.
Mediumblob
224
-1 Khai baùo cho Field chöùa kieåu
blob vöøa khoaûng 16,777,215
characters.
Mediumtext
224
-1 Khai baùo cho Field chöùa kieåu
chuoãi daïng vaên baûn vöøa
khoaûng 16,777,215
characters.
Longblob
232
-1 Khai baùo cho Field chöùa kieåu
blob lôùn khoaûng
4,294,967,295 characters.
Longtext
232
-1 Khai baùo cho Field chöùa kieåu
chuoãi daïng vaên baûn lôùn
khoaûng 4,294,967,295
characters.
----------------------------------------------
5. PHAÙT BIEÅU SQL
MySQL laø moät heä thoáng quaûn lyù cô sôû döõ lieäu quan heä (RDBMS) hay coøn ñöôïc goïi laø Relational
Database Management System. RDBMS laø moät trong nhöõng moâ hình cô sôû döõ lieäu quan heä thoâng
duïng hieän nay.
Giaùo vieân: Phaïm Höõu Khang
91. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.2.2. Phaùt bieåu SELECT vôùi meänh ñeà FROM
Phaùùt bieåu SQL daïng SELECT laø moät trong nhöõng phaùt bieåu yeâu caàu MySQL truy luïc döõ lieäu
treân cô sôû döõ lieäu chæ ñònh. SELECT duøng ñeå ñoïc thoâng tin töø cô sôû döõ lieäu theo nhöõng tröôøng quy
ñònh, hay nhöõng bieåu thöùc cho tröôøng ñoù.
Meänh ñeà FROM chæ ra teân moät baûng hay nhöõng baûng coù quan heä caàn truy vaán thoâng tin.
Thöôøng chuùng ta söû duïng coâng cuï MySQL-Front | Query ñeå thöïc thi phaùt bieåu SQL.
Sau khi thöïc thi phaùt bieåu SQL, keát quaû traû veà soá maåu tin vaø toång soá maåu tin ñöôïc laáy ra töø
baûng.
Daáu * cho pheùp loïc maåu tin vôùi taát caû caùc tröôøng trong baûng, neáu muoán chæ roõ nhöõng tröôøng naøo
caàn loïc baïn caàn neâu teân cuï theå nhöõng tröôøng ñoù.
Ñeå tieän tham khaûo trong giaùo trình naøy chuùng toâi söû duïng moät phaàn cô sôû döõ lieäu coù saün cuûa
MySQL, ñoàng thôøi boå sung theâm cô sôû döõ lieäu daønh cho öùng duïng baùn haøng qua maïng.
Cô sôû döõ lieäu baùn haøng qua maïng coù teân laø Test, vaø bao goàm nhieàu baûng. Baèng phaùt bieåu
SELECT chuùng ta coù theå bieát soá baûng hay ñoái töôïng khaùc ñang coù trong cô sôû döõ lieäu Test
Ví duï 8-2: Thöïc thi phaùt bieåu SQL SELECT heä thoáng
show tables
from Test
/* Hieån thò taát caû teân baûng cuûa cô sôû döõ lieäu hieän haønh */
Keát quaû traû veà danh saùch baûng nhö sau:
TABLES_IN_TEST
--------------------------------------
tblCountries
tblProvinces
tblAuthors
tblPayment
tblItemsion
tblCustomers
tblSoftware
Ghi chuù:
Baïn coù theå söû duïng phaùt bieåu SQL treân ñeå hieån thò nhöõng ñoái töôïng trong cô sôû döõ lieäu, baèng caùch thay
theá caùc tham soá vaø ñieàu kieän.
Cuù phaùp ñôn giaûn
Select *
From tablename
/* Loïc taát caû soá lieäu cuûa taát caû caùc coät (field) cuûa tablename*/
Select field1,field2
From tablename
/* Loïc taát caû soá lieäu cuûa 2 field: field1, field2 cuûa tablename*/
Select *
From tablename
Limit 0,10
/* Loïc top 10 maåu tin ñaàu tieân cuûa taát caû caùc field cuûa tablename*/
Select field1, field2
From tablename
Limit 0,10
/* Loïc top 10 maåu tin ñaàu tieân cuûa 2 fields field1, field2 cuûa
Giaùo vieân: Phaïm Höõu Khang
92. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
tablename*/
Ví duï 8-3: phaùt bieåu phaùt bieåu SQL daïng Select
Select *
From tblCountries
/* Lieät keâ taát caû caùc quoác gia trong baûng tblCountries hoaëc baïn coù theå lieät keâ teân nhö phaùt bieåu sau */
Select CountryName
From tblCountries
Keát quaû traû veà nhö sau:
CountryCode CountryName
-------- ---------- ------------ -------------
VNA Vietnam
SNG Singapore
USS United Stated
UKD United Kingdom
GER Germany
CAM Cambodia
THA Thai Land
MAL Malaysia
INC Indonesia
CHN China
5.2.3. Phaùt bieåu SQL daïng SELECT vôùi meänh ñeà Where
Khi baïn duøng meänh ñeà WHERE ñeå taïo neân tieâu chuaån caàn loïc maåu tin theo tieâu chuaån ñöôïc
ñònh nghóa, thoâng thöôøng WHERE duøng coät (tröôøng) ñeå so saùnh vôùi giaù trò, coät khaùc, hay bieåu thöùc
chöùa coät (tröôøng) baát kyø coù trong baûng. Phaùt bieåu SQL daïng Select vôùi meänh ñeà Where cuù phaùp coù
daïng nhö sau:
Select *
from tablename
where conditions
Select field1, field2, field3
from tablename
where conditions
Vôùi conditions trong caû hai phaùt bieåu treân ñöôïc ñònh nghóa ñieàu kieän truy vaán nhö khai baùo sau:
Select *
From tablename
where field1>10
select *
from tblCountries
where CountryCode in('VNA','CHN')
Caùc pheùp toaùn so saùnh trong conditions bao goàm:
♦ > : lôùn hôn where Amount > 100000;
♦ < : nhoû hôn where Amount < 100000;
♦ >= : lôùn hôn hoaëc baèng where Amount >= 100000;
♦ >= : nhoû hôn hoaëc baèng where Amount <= 100000;
♦ = : baèng where CustID=’12';
Giaùo vieân: Phaïm Höõu Khang
93. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
♦ != : Khaùùc where CustID!='12';
♦ <> : Khaùc where CustID<>'12';
Caùc pheùp toaùn logic coù theå söû duïng trong conditions
♦ and : Pheùp toaùn "and"
SELECT *
FROM tblOrders
Where Amount!>100000
And CustID='12';
♦ Or : Pheùp toaùn "or"
SELECT *
FROM tblOrderDetails
Where Amount!>100000
Or CustID=‘12’;
♦ Not : Pheùp toaùn phuû ñònh (not)
SELECT *
FROM tblOrders
where OrderDate is not null;
♦ Not in : Pheùp toaùn phuû ñònh (not in)
SELECT *
FROM tblOrders
where OrderID not in (‘12’,’15’);
♦ Between: Keát quaû thuoäc trong mieàn giaù trò
SELECT *
FROM tblOrders
Where Amount between 10
And 500;
♦ Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baèng kyù töï ñaïi
dieän
SELECT *
FROM tblCustomers
where CustName like '%A';
♦ Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá
baèng kyù töï ñaïi dieän
SELECT *
FROM tblCustomers
where CustName not like '%A';
♦ IN : Pheùp toaùn so saùnh trong moät taäp hôïp
SELECT *
FROM tblOrders
Where OrderID in ('100','200','300');
Ví duï 8-5: Ví duï veà SQL daïng SELECT vaø Where
Giaùo vieân: Phaïm Höõu Khang
94. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
/* > : lôùn hôn */
Select *
From tblOrders
Where Amount > 100000;
/* < : nhoû hôn */
Select *
From tblOrders
Where Amount < 100000;
/* >=: lôùn hôn hoaëc baèng */
Select *
From tblOrders
Where Amount >= 100000;
/* >=: nhoû hôn hoaëc baèng */
Select *
From tblOrders
Where Amount <= 100000;
/* = : baèng */
Select *
From tblOrders
Where CustID=‘12’;
/* != :Khaùùc */
Select *
From tblOrders
Where CustID !=‘12’;
/* <>: Khaùc */
Select *
From tblOrders
Where CustID <>‘12’;
/* !> : Khoâng lôùn hôn */
Select *
From tblOrders
Where Amount !> 100000;
/* !< : Khoâng nhoû hôn */
Select *
From tblOrders
Where Amount !< 100000;
-- Caùc pheùp toaùn logic
/* and : Pheùp toaùn vaø */
Select *
From tblOrders
Giaùo vieân: Phaïm Höõu Khang
95. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Where Amount !>100000
And CustID=‘12’;
/* Or : Pheùp toaùn hoaëc */
Select *
From tblOrders
Where Amount !>100000
Or CustID=‘12’;
/* Not : Pheùp toaùn phuû ñònh */
Select *
From tblOrders
Where OrderDate is NOT NULL;
/* Between: giaù trò naèm trong mieàn */
Select *
From tblOrders
Where Amount
Between 10 and 500;
/* Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu %
ñeå theå hieän thay theá baát kyø kyù töï */
Select *
From tblOrders
Where Descriion like '%A'
Or CustID ='152';
/* Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng,
söû duïng daáu % ñeå theå hieän thay theá baát kyø kyù töï */
Select *
From tblOrders
Where Descriion not like '%A'
Or CustID ='152';
/* IN: Pheùp toaùn so saùnh trong moät taäp hôïp */
Select *
From tblOrders
Where OrderID in ('134','244','433');
/* Not IN : Pheùp toaùn phuû ñònh so saùnh trong moät taäp hôïp */
Select *
From tblOrders
Where OrderID not in ('134','244','433');
Giaùo vieân: Phaïm Höõu Khang
96. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.2.4. Meänh ñeà Order by
Thoâng thöôøng, trong khi truy vaán maåu tin töø baûng döõ lieäu, keát quaû hieån thò caàn saép xeáp theo
chieàu taêng hay giaûm döïa treân kyù töï ALPHABET. Nhöng baïn cuõng coù theå saép xeáp theo moät tieâu chuaån
baát kyø, chaúng haïn nhö bieåu thöùc.
Khi saép xeáp döõ lieäu trình baøy trong keát quaû, caàn phaûi choïn tröôøng hay bieåu thöùc theo traät töï
taêng daàn hoaëc giaûm daàn.
Cuù phaùp cho meänh ñeà ORDER BY cuøng vôùi traïng thaùi taêng hay giaûm, öùng vôùi ASC saép xeáp
taêng daàn, DESC giaûm daàn.
Cuù phaùp coù daïng nhö sau:
Order by columnname DESC
Order by columnname1 + columnname2 DESC
Order by columnname ASC
Order by columnname1 ASC, columnname2 DESC
Ví duï 8-6: SELECT vôùi meänh ñeà Order by DESC
/*-- Giaûm daàn theo thôøi gian */
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderDate DESC
Keát quaû traû veà nhö sau:
OrderID OrderDate CustID Amount
---------- ------------ ----------------------
17 2001-09-20 12 178.243
18 2001-09-20 12 2.78534
16 2001-09-19 12 398.798
15 2001-09-18 12 5.758.876
14 2001-09-17 12 5.539.647
12 2001-09-16 12 1.330
13 2001-09-16 12 1.585.563
31 2001-09-16 13 459.525
11 2001-09-15 11 1.401.803
28 2001-09-15 13 1.45200
Ví duï 8-7: SQL daïng SELECT vôùi meänh ñeà Order by vaø ASC
/*-- Taêng daàn theo thôøi gian */
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderDate ASC
Keát quaû traû veà nhö sau
OrderID OrderDate CustID Amount
---------- --------------------------- --------
01 2001-09-05 10 2.903.576
02 2001-09-05 10 48.168.567
03 2001-09-05 10 5.107.032
04 2001-09-08 10 2.355.537
05 2001-09-08 16 1.817.487
06 2001-09-10 16 26.000
19 2001-09-10 12 575.667
Giaùo vieân: Phaïm Höõu Khang
114. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
ON <JOIN CONDITION>
WHERE <CRITERIANS>
ORDER BY <COLUMN LIST>
[ASC / DESC]
Ví duï 8-23: INNER JOIN vôùi moät soá coät chæ ñònh
/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */
Select CustName,OrderID,
OrderDate,Amount,
TotalAmount
from tblCustomers
inner join tblOrders
on tblCustomers.CustID = tblOrders.CustID
where month (OrderDate) = 10
order by CustName
Keát quaû traû veà nhö sau:
CustName OrderID OrderDate .. TotalAmount
---------------------------------------------
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 19 2001-10-17 86400000
Plaza Hotel 11 2001-10-17 576000000
Plaza Hotel 15 2001-10-17 288000000
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 <first_tablename>
INNER JOIN <second_tablename>
ON <join conditions>
[INNER JOIN <next_tablename>
ON <join conditions>]
WHERE <conditions>
ORDER BY <column list>
[ASC / DESC]
Ví duï 8-24: INNER JOIN vôùi taát caùc tröôøng lieân quan
/* 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
Keát quaû traû veà nhö sau:
Giaùo vieân: Phaïm Höõu Khang
115. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
CustID CustName .. OrderID ..TotalAmount
------ ---------------------------------------
13 Plaza Hotel .. 11 .. 576000000
13 Plaza Hotel .. 15 .. 288000000
12 Plaza Hotel .. 12 . . 403200000
12 Plaza Hotel .. 19 .. 86400000
16 CENTURY Hotel .. 13 .. 388800000
16 CENTURY Hotel .. 14 .. 518400000
16 CENTURY Hotel .. 16 .. 388800000
16 CENTURY Hotel .. 17 .. 14400000
16 CENTURY Hotel .. 18 .. 12960000
16 CENTURY Hotel .. 110 .. 216000000
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 <first_tablename>
INNER JOIN <second_tablename>
ON <join condition>
WHERE <criterians>
ORDER BY <column list>
[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 <first_tablename>
INNER JOIN <second_tablename>
ON <join condition>
WHERE <criterians>
ORDER BY <column list>
[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
Ví duï 8-25: INNER JOIN vôùi aùnh xaï teân baûng
/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */
Giaùo vieân: Phaïm Höõu Khang
116. 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
Keát quaû traû veà nhö sau:
CustName OrderID OrderDate .. TotalAmount
----------------------------------------------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
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 <Column list>
from lefttablename
LEFT JOIN righttablename
on lefttabkename.field1=righttablename.field2
Where <conditions>
Order by <column name>
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.
Ví duï 8-26: SELECT duøng LEFT JOIN
/* 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
Keát quaû traû veà nhö sau:
ItemID ItemName Amount
----------------------------------------------
12 ASW-60VP NULL
Giaùo vieân: Phaïm Höõu Khang
117. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
13 ASW-60VT NULL
14 ASW-660T 120V TW 29340 NULL
14 ASW-685V 120V TW 29440 NULL
15 ASW60VP 220V 34571 NULL
16 ASW-45Z1T1 2960000
17 ASW-45Y1T 127V 14400000
18 ASW-45Y1T 220V 72000000
19 ASW-45Y1T 220V 86400000
20 ASW-45Z1T 15200000
...
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 <Column list>
From lefttablename
RIGHT JOIN righttablename
On lefttabkename.field1=righttablename.field2
Where <conditions>
Order by <column name>
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.
Ví duï 8-27: SELECT duøng RIGHT JOIN
/* 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
Keát quaû traû veà nhö sau:
ItemName Qtty Price Amount
----------------------------------------------
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
ASW-45Z1T 9000 12000 29600000
ASW-45Z1T 9000 12000 29600000
...
Giaùo vieân: Phaïm Höõu Khang
118. 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
Keát quaû traû veà nhö sau:
CustID CustName
---------- -----------------
13 New World Hotel
12 Kinh Do Hotel
16 CENTURY Hotel
10 PLAZA Hotel
Ñ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
Keát quaû traû veà nhö sau:
CustID CustName
---------- ---------------------------------
23 Cong ty nuoc giai khat ‘12’COLA
24 Cong ty nuoc giai khat PEPSI
25 Cong ty nuoc giai khat REDBULK
26 Cong ty nuoc giai khat TRIBICO
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
119. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
---------- -----------------------------------
23 Cong ty nuoc giai khat ‘12’COLA
24 Cong ty nuoc giai khat PEPSI
25 Cong ty nuoc giai khat REDBULK
26 Cong ty nuoc giai khat TRIBICO
12 Kinh Do Hotel
10 PLAZA Hotel
16 CENTURY Hotel
13 New World Hotel
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:
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öï.
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.
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.
Trong UNION baïn coù theå keát hôïp nhieàu caâu truy vaán laïi vôùi nhau.
Keát quaû hieän ra theo thöù töï cuûa truy vaán töø döôùi leân treân.
6.7.
6.7.1.
6.7.2.
SQL daïng thay ñoåi vaø ñònh nghóa cô sôû döõ lieäu
Phaùt bieåu SQL daïng CREATE
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
trong MySQL, SQL Server, Oracle, ..., chuùng cuù phaùp nhö sau:
CREATE Database <Database NAME>
CREATE <OBJECT TYPE>
<OBJECT NAME>
OBJECT TYPE: Loaïi ñoái töôïng cuûa cô sôû döõ lieäu ví duï nhö Procedure, Table, View,...
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
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 <Database name>
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:
CREATE DATABASE <database_name>
[ ON [PRIMARY] (
[Name= <'Logical file name'>,] FileName=<'File Name'>
[, SIZE=<Size in Megabyte or KiloByte> ]
[, MAXSIZE=<Size in Megabyte or KiloByte> ][, FILEGROWTH = <No of
Kylobyte|Percentage>]
)]
Giaùo vieân: Phaïm Höõu Khang
120. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
[ LOG ON
(
[Name= <'Logical file name'>,] FileName=<'File Name'>
[, SIZE=<Size in Megabyte or KiloByte> ]
[, MAXSIZE=<Size in Megabyte or KiloByte> ][, FILEGROWTH = <No of
Kylobyte|Percentage>]
)]
[COLLATE <Collation Name>]
[For Load | For Attach]
6.7.3. Dieãn giaûi CREATE Database trong SQL Server
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.
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ù.
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á.
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.
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.
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.
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ù.
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:
Ví duï 8-31: Taïo cô sôû döõ lieäu Test trong SQL Server
USE master
GO
CREATE DATABASE Test
ON
( NAME = Test,
FILENAME = 'c:mssql7dataTestdat.mdf',
Giaùo vieân: Phaïm Höõu Khang
122. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moät soá quy ñònh khi thieát keá Table
6.7.4.
6.7.5.
6.7.6.
Teân coät - Column Name
Ñaët teân coät cuõng gioáng nhö ñaët teân baûng, coù raát nhieàu quy taéc ñaët teân (nhö ñaõ trình baøy ôû treân
phaàn table), nhöng khuyeán khích baïn neân theo moät soá quy taéc cô baûn sau:
Teân coät baét ñaàu chöõ hoa, coøn laïi baèng chöõ thöôøng.
Teân ngaén goïn vaø ñaày ñuû yù nghóa.
Khoâng neân ñaët teân coät coù khoaûng traéng, sau naøy baïn seõ gaëp nhöõng phieàn toaùi khi tham
chieáu ñeán coät ñoù.
Khoâng ñaët teân coät truøng vôùi nhöõng töø khoaù, töø daønh rieâng, vaø nhöõng kyù töï ñaëc bieät nhö
nhöõng pheùp toaùn hay toaùn töû khaùc.
Chuù yù, neân ñaët teân coät cuøng teân nhöõng coät coù quan heä vôùi nhöõng baûng khaùc trong cuøng cô sôû
döõ lieäu, giuùp deã hieåu vaø traùnh bò nhaàm laãn.
Moät soá ngöôøi thích theâm vaøo daáu gaïch chaân (_) ñeå phaân bieät yù nghóa hay teân goïi cuûa coät, ñieàu
naøy laø tuøy vaøo sôû thích cuûa baïn. Tuy nhieân chuùng toâi khoâng thích qui taéc naøy.
Nhöng ñoái vôùi kinh nghieäm laäp thieát keá xaây döïng cô sôû döõ lieäu thì baïn khoâng neân duøng daáu
gaïch döôùi _, vaø dó nhieân trong nhieàu tröôøng hôïp khaùc baïn seõ caûm thaáy khoù chòu khi theâm moät daáu _
trong teân cuûa ñoái töôïng cuûa cô sôû döõ lieäu.
Maëc duø khoâng coù vaán ñeà gì cho cuù phaùp hay caùc phaùt bieåu tham chieáu ñeán chuùng, nhöng baïn seõ
thaáy taïi sao chuùng ta khoâng neân duøng daáu gaïch chaân (_) khi ñaët teân ñoái töôïng hay teân cô sôû döõ lieäu
trong MySQL.
Neáu baïn ñaët teân coù daáu _ ,baïn phaûi toán thôøi gian hay naêng löôïng cho haønh ñoäng taïo ra daáu _
Trong chöøng möïc hay giôùi haïn naøo ñoù do hieäu öùng cuûa Font chöõ coù theå phaùt sinh loãi seõ gaây
ra nhaàm laãn cho ngöôøi laäp trình.
Noùi toùm laïi laø baïn seõ maát theâm thôøi gian löu taâm ñeán chuùng.
Kieåu döõ lieäu - Data type
Nhö ñaõ trình baøy caùc laïi döõ lieäu trong phaàn treân, khi xaây döïng cô sôû döõ lieäu, taát caû nhöõng
tröôøng trong baûng caàn phaûi coù kieåu döõ lieäu cuï theå. Vaán ñeà quan troïng laø choïn kieåu döõ lieäu naøo cho
phuø hôïp vôùi döõ lieäu maø ngöôøi duøng seõ nhaäp vaøo.
Ñeå thieát keá döõ lieäu phuø hôïp vôùi thöïc teá, ngoaøi tính öùng duïng hôïp vôùi ngöõ caûnh baïn cuõng caàn
quan taâm ñeán kieåu döõ lieäu töông thích vaø chieàu daøi cuûa töøng coät. Chaúng haïn nhö:
[CustID] [varchar] (10)
/* hay */
[CustID] int
Giaù trò maëc ñònh - Default
Thoâng thöôøng khi taïo ra moät coät trong baûng ñoâi khi chuùng ta caàn aùp duïng giaù trò maëc ñònh,
khoâng chæ cho tröôøng hôïp soá lieäu khoâng nhaäp töø beân ngoaøi maø coøn cho caùc coät töï ñoäng coù giaù trò töï
sinh. Vôùi nhöõng lyù do nhö vaäy, chuùng ta caàn coù moät soá giaù trò maëc ñònh cho nhöõng coät caàn thieát, ví duï
:
Neáu coät ñoù laø soá chuùng ta coù giaù trò maëc ñònh laø 0
Giaùo vieân: Phaïm Höõu Khang
123. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Neáu coät ñoù laø ngaøy thaùng chuùng ta coù giaù trò maëc ñònh laø ngaøy naøo ñoù (nhö 0000-00-00 laø
CurDate())
Neáu coät ñoù coù giaù trò laø 0 hoaëc 1, baïn coù theå khai baùo giaù trò maëc ñònh laø 0 hoaëc 1
Neáu coät ñoù laø chuoãi chuùng ta coù giaù trò maëc ñònh nhö laø 'A'
6.7.7. Soá töï ñoäng auto_increment
auto_increment laø khaùi nieäm cöïc kyø quan troïng trong MySQL (töông ñöông vôùi Identity trong
SQL Server, Autonumber trong MS Access). Khi baïn muoán moät coät coù giaù trò taêng töï ñoäng nhö
AutoNumber/Identity, baïn neân ñònh nghóa coät ñoù nhö auto_increment,.
Khi söû duïng auto_increment laøm soá taêng töï ñoäng thì kieåu döõ lieäu laø soá nguyeân hoaëc soá nguyeân
lôùn.
Trong tröôøng hôïp, baïn khai baùo soá töï ñoäng trong SQL Server, baïn caàn phaûi khai baùo theâm caùc
thoâng soá nhö seed. Seed laø giaù trò khôûi ñaàu khi SQL Server töï ñoäng taêng giaù trò, Increament laø böôùc
taêng, noù cho bieát moãi laàn taêng caàn bao nhieâu giaù trò.
Vì duï khi taïo auto_increment cho coät ItemID [Int] auto_increment, nghóa laø baét ñaàu soá 1 vaø moãi
laàn taêng 1 soá. Keát quaû baïn seõ coù laø 1,2,3,4, ...n.
Trong phaùt bieåu SQL cuûa MySQL, ñeå taïo baûng coù gaù trò taêng töï ñoäng baïn chæ caàn khai baùo teân
coät, kieåu döõ lieäu Int (Integer) vaø auto_increment nhö sau:
IDNO Int auto_increment NOT NULL
Trong giao dieän ñoà hoïa baïn chæ caàn check vaøo tuyø choïn AutoIncreament nhö hình 8-10.
Hình 8-10: Choïn auto_increment
Giaùo vieân: Phaïm Höõu Khang
124. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
NULL / NOT NULL
Ñaây laø traïng thaùi cuûa moät coät trong baûng cho pheùp chaáp nhaän giaù trò NULL hay khoâng? Neáu
baïn chæ ra raøng buoäc giaù trò NOT NULL thì baét buoäc phaûi coù giaù trò trong coät naøy moãi khi maåu tin
ñöôïc nhaäp vaøo.
Ñoái vôùi moät soá kieåu döõ lieäu khoâng cho pheùp NULL baïn neân thieát laäp giaù trò maëc ñònh cho coät
ñoù, ví duï nhö kieåu döõ lieäu bit khoâng cho pheùp NULL.
Trong phaùt bieåu SQL taïo baûng, baïn chæ caàn khai baùo NULL hay NOT NULL sau kieåu döõ lieäu
cuûa coät ñoù. Trong giao dieän ñoà hoïa chæ caàn ñaùnh daáu choïn vaøo tuyø choïn Not NULL nhö hình 8-10.
6.8. Thay caáu truùc ñoái töôïng baèng ALTER
Khi chuùng ta caàn thieát phaûi söûa ñoåi moät phaàn caáu truùc cuûa caùc ñoái töôïng nhö table (view, hay
SP trong SQL Server) vì muïc ñích naøo ñoù, thì Baïn söû duïng phaùt bieåu ALTER ñeå thay ñoåi caáu truùc cuûa
ñoái töôïng hieän coù:
ALTER <Object type>
<Object Name>
Khi moät baûng toàn taïi trong cô sôû döõ lieäu, do nhu caàu caàn thieát phaûi thay ñoåi caáu truùc baûng, baïn
söû duïng phaùt bieåu ALTER TABLE cuøng caùc tham soá cuûa chuùng nhö cuù phaùp sau:
ALTER TABLE table alteration [,alteration]
Chaúng haïn, baïn coù theå söû duïng phaùt bieåu ALTER TABLE ñeå theâm moät coät teân Activate vôùi
kieåu döõ lieäu TinyInt coù giaù trò maëc ñònh laø 1.
Ví duï 8-33: Theâm moät coät teân Activate vaøo baûng tblOrders
ALTER TABLE tblorders
ADD Activate TINYINT DEFAULT "1"
Khi thay ñoåi thieát laäp giaù trò maëc ñònh cho coät baïn neân quan taâm ñeán giaù trò maëc ñònh ñoù coù
phuø hôïp cho nhöõng maåu tin ñang toàn taïi hay khoâng.
Muoán thay ñoåi giaù trò maëc ñònh cuûa coät cho nhöõng maåu tin ñang toàn taïi, baïn söû duïng ñeán meänh
ñeà phuï nhö trong ví duï sau:
Ví duï 8-34: Thieát laäp giaù trò maëc ñònh trong baûng tblOrders
ALTER TABLE tblorders
CHANGE OrderDate
OrderDate DATETIME
DEFAULT "0000-00-00"
Thay ñoåi kieåu döõ lieäu töø Date dang DateTime, baïn coù theå khai baùo nhö ví duï 4-35 sau:
Ví duï 8-35: Thay ñoåi kieåu döõ lieäu
ALTER TABLE tblorders
CHANGE OrderDate
OrderDate DATE
DEFAULT "0000-00-00 00:00:00"
Giaùo vieân: Phaïm Höõu Khang
125. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Maëc khaùc, baïn cuõng coù theå taïo hay thay ñoåi baûng trong maøn hình MySQL-Front. Chæ caàn choïn
ngaên Database | R-Click | Create New Table, cöûa soå xuaát hieän nhö hình 8-11.
Hình 8-11: Giao dieän taïo baûng baèng MySQL-Front
6.9. Phaùt bieåu SQL daïng DROP
Drop laø phaùt bieåu thöïc hieän pheùp xoaù. DROP duøng ñeå xoaù ñoái töôïng cuûa cô sôû döõ lieäu nhö baûng,
cô sôû döõ lieäu, ...Cuù phaùp cuûa phaùt bieåu DROP:
DROP <Object type> <Object name> [, .... n]
Baïn coù theå xoaù cô sôû döõ lieäu, baèng caùch khai baùo nhö sau:
Drop Database Test
/* Phaùt bieåu DROP TABLE chæ roõ baûng naøo caàn xoaù,
neáu xoaù nhieàu baûng thì baïn caàn duøng daáu phaåy (,) */
DROP TABLE tblCustomers, tblSuppliers
Ngoaøi ra, baïn cuõng coù theå duøng MySQl-Front ñeå xoaù baûng hay caùc ñoái töôïng Table trong cô sôû
döõ lieäu chæ ñònh. Neáu choïn nhieàu baûng cuøng moät luùc baïn söû duïng phím Control hay Shift nhö sau:
Giaùo vieân: Phaïm Höõu Khang
126. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-12: Choïn ñoái töôïng ñeå xoaù baûng trong MySQL-Front
7. TAÏO KÒCH BAÛN SQL- SQL SCRIPTS
Thoâng thöôøng khi xaây döïng cô sôû döõ lieäu ñeå phaùt trieån öùng duïng, ñoâi khi baïn caàn chuyeån cô sôû
döõ lieäu töø maùy naøy sang maùy khaùc, hay töø khu vöïc naøy hay ñeán khu vöïc khaùc.
Coù raát nhieàu caùch ñeå laøm ñieàu naøy, ôû ñaây chuùng toâi giôùi thieäu ñeán caùc baïn moät coâng cuï taùi taïo
laïi cô sôû döõ lieäu môùi töø kòch baûn cuûa cô sôû döõ lieäu goác.
Kòch baûn SQL (SQL Script) laø toång hôïp taát caû caùc phaùt bieåu SQL duøng ñeå taïo ra cô sôû döõ lieäu
trong quaù trình xaây döïng chuùng, chuùng löu tröõ döôùi daïng vaên baûn coù teân môû roäng .sql (cautruc.sql).
Coâng cuï naøy taïo kòch baûn cho taát caû caùc ñoái töôïng cuûa cô sôû döõ lieäu vôùi nhöõng thuoäc tính caên
baûn. Tuy nhieân, neáu baïn choïn vaøo tuyø choïn Data, SQL Script bao goàm caùc phaùt bieåu SQL daïng Insert
cuøng vôùi döõ lieäu trong baûng.
Tröôùc tieân baïn coù theå nhaän thaáy cöûa soå coâng cuï naøy trong MySQL-Front, baèng caùch choïn teân cô
sôû döõ lieäu Test, sau ñoù choïn Tools / Im-Export / Export Table, cöûa soå xuaát hieän nhö hình 8-13 sau:
Giaùo vieân: Phaïm Höõu Khang
127. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-13: Taïo kòch baûn trong MySQl-Front
KEÁT CHÖÔNG
Trong chöông naøy, chuùng toâi ñaõ giôùi thieäu vôùi baïn haàu heát caùc phaùt bieåu SQL thuoäc loaïi ñònh
nghóa cô sôû döõ lieäu, thao taùc döõ lieäu nhö Select, Insert, Delete vaø Update.
Phaùt bieåu SQL daïng Select vôùi caùc meänh ñeà nhö JOIN cuøng pheùp toaùn giöõa hai hay nhieàu baûng
trong phaùt bieåu SQL daïng SELECT.
Ngoaøi ra, chuùng toâi cuõng trình baøy hai loaïi phaùt bieåu SQL daïng ñònh nghóa vaø thay ñoå cô sôû döõ
lieäu taïo nhö CREATE vaø ALTER, DROP.
Giaùo vieân: Phaïm Höõu Khang
128. PHP VAØ DATABASE 9-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
BAØI 9: PHP VAØ DATABASE
Ñeå keát noái cô sôû döõ lieäu mySQL trong PHP, chuùng ta coù nhieàu caùch
öùng vôùi nhieàu phöông thöùc keát noái cô sôû döõ lieäu, trong phaàn naøy chuùng ta
taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu mySQL töø PHP baèng chính
goùi cuûa noù.
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy
Khai baùo keát noái cô sôû döõ lieäu
Theâm maåu tin
Caäp nhaät maåu tin.
Xoaù maåu tin
Truy vaán döõ lieäu
1. KEÁT NOÁI CÔ SÔÛ DÖÕ LIEÄU
Ñeå keát noái cô sôû döõ lieäu mySQL baïn söû duïng khai baùp nhö sau:
<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("TestDB", $link);
?>
Trong ñoù khai baùo sau laø keát noái cô sôû döõ lieäu mySQL vôùi teân server/ip cuøng vôùi username vaù
password:
mysql_connect ("localhost", "root", "")
Vaø mysql_select_db("TestDB", $link); ñeå choïn teân cô sôû döõ lieäu sau khi môû keát noái cô sôû döõ lieäu, neáu
bieán $link coù giaù trò laø false thì keát noái cô sôû döõ lieäu khoâng thaønh coâng.
Sau khi môû keát noái cô sôû döõ lieäu maø khoâng söû duïng tìh baïn coù theå ñoùng keát noái cô sôû döõ lieäu vôùi cuù
phaùp nhö sau:
mysql_close($link);
Chaúng haïn, baïn khai baùo trang connection.php ñeå keát noái cô sôû döõ lieäu vaø ñoùng keát noái ngay
sau khi môû thaønh coâng.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
Mo va dong ket noi CSDL MySQL
<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("InterShop", $link);
mysql_close($link);
129. PHP VAØ DATABASE 9-2
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
?>
</BODY>
</HTML>
2. THEÂM MAÅU TIN
Ñeå theâm maåu tin, baïn söû duïng haøm mysql_query(chuoãi Insert). Chaúng haïn, chuùng ta khai baùo
trang insert.php ñeå theâm maåu tin vaøo baûng tblships coù hai coät döõ lieäu laø ShipID vaø ShipName nhö ví
duï trong trang insert.php.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Them mau tin</h3>
<?php
require("dbcon.php");
$sql="insert into tblships values('A01','Testing')";
$result = mysql_query($sql,$link);
$affectrow=0;
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin them vao<?= $affectrow?>
</BODY>
</HTML>
Trong ñoù, baïn söû duïng haøm mysql_query vôùi hai tham soá laø $sql vaø $link. Keát quaû traû veà laø soá
maåu tin thöïc thi. Ngoaøi ra, baïn coù theå söû duïng ñoaïn keát noái cô sôû döõ lieäu trong taäp tin dbcon.php nhö
ví duï sau:
<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("Test", $link);
?>
Trong tröôøng hôïp cho pheùp ngöôøi söû duïng theâm maåu tin thì baïn thieát keá form yeâu caàu ngöôøi söû
duïng nhaäp hai giaù trò sau ñoù submit ñeán trang keá tieáp ñeå thöïc thi vieäc theâm gt sau ñoù submit ñeán
trang keá tieáp ñeå thöïc thi vieäc theâm giaù trò vöøa nhaäp vaøo cô sôû döõ lieäu nhö hình 9-1.
130. PHP VAØ DATABASE 9-3
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 9-1: Theâm maåu tin
Ñeå laøm ñieàu naøy, tröôùc tieân baïn khai baùo trang them.php, trong ñoù khai baùo ñoaïn javascript ñeå
kieåm tra döõ lieäu nhaäp nhö sau:
<SCRIPT language=JavaScript>
function checkInput()
{
if (document.frmPHP.txtID.value=="")
{
alert("Invalid ID, Please enter ID");
document.frmPHP.txtID.focus();
return false;
}
if (document.frmPHP.txtName.value=="")
{
alert("Please enter Name");
document.frmPHP.txtName.focus();
return false;
}
return true;
}
</script>
Keá ñeán khai baùo theå form vaø hai theû input laïi text yeâu caàu ngöôøi söû duïng nnaäp ID vaø Name nhö
sau:
<form name="frmPHP" method="post"
action="doinsert.php"
onsubmit="return checkInput();">
<tr>
<td align="left" class="content-sm"><b>
Please enter ID and Name
</b></td>
</tr>
<tr>
<td align="left" >ID:</td>
</tr>
<tr>
<td align="left">
<input type="text" name="txtID"
size="25" maxlength="3" class="textbox">
</td>
131. PHP VAØ DATABASE 9-4
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
</tr>
<tr>
<td align="left" >Name:</td>
</tr>
<tr>
<td align="left" >
<input type="text" name="txtName"
size="25" maxlength="50" class="textbox">
</td>
</tr>
<tr>
<td align="left" valign="top"> <br>
<input type="submit"
value="Submit" class="button">
<input type="reset" value="Reset" class="button">
</td>
</tr>
</form>
Löu yù raèng, baïn khai baùo soá kyù töï lôùn nhaát cho pheùp nhaäp baèng vôùi kích thöôùc ñaõ khai baùo
trong cô sôû döõ lieäu öùng vôùi thuoäc tính maxlength.
Khi ngöôøi söû duïng nhaäp hai giaù trò vaø nhaán nuùt submit, trang keá tieáp ñöïôc trieäu goïi. Trang naøy
laáy giaù trò nhaäp baèng caùch söû duïng bieán form hay $HTTP_POST_VARS. Ñoái vôùi tröôøng hôïp naøy
chuùng ta söû duïng bieán form nhö trang doinsert.php.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Them mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="insert into tblships(ShipID,ShipName) ";
$sql .=" values('".$txtID."','".$txtName."')";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin them vao<?= $affectrow?>
</BODY>
</HTML>
3. CAÄP NHAÄT MAÅU TIN
Ñoái vôùi tröôøng hôïp caäp nhaät maåu tin, baïn cuõng söû duïng haøm mysql_query vôùi phaùt bieåu Update
thay ví Insert nhö treân, ví duï chuùng ta khai baùo trang update.php ñeå caäp nhaät maåu tin trong baûng
tblShips vôùi teân laø UpdateTesting khi maõ coù giaù trò laø A01.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Cap nhat mau tin</h3>
<?php
require("dbcon.php");
$sql="Update tblships set ShipName='UpdateTesting' ";
$sql.=" where ShipID='A01'";
$result = mysql_query($sql,$link);
$affectrow=0;
if($result)
132. PHP VAØ DATABASE 9-5
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
Löu yù raèng, ñeå bieát soá maåu tin ñaõ thöïc thi bôûi phaùt bieåu SQL baïn söû duïng haøm
mysql_affected_rows.
if($result)
$affectrow=mysql_affected_rows();
Töông töï nhö treân, baïn coù theå thieát keá form cho pheùp ngöôøi söû duïng caäp nhaät döõ lieäu baèng caùch
thieát keá form yeâu caàu ngöôøi söû duïng nhaäp maõ vaø teân caäp nhaän.
Tröôùc tieân thieát keá from cho pheùp nhaäp döõ lieäu ñeå caäp nhaät nhö ví duï trang capnhat.php, sau
khi hoïc phaàn truy vaán xong, thaqy vì nhaäp maõ baïn cho pheùp ngöôøi söû duïng choïn trong danh saùch ñaõ
coù nhö hình 9-2.
Hình 9-2: Caäp nhaät döõ lieäu
Sau khi ngöôøi söû duïng nhaán nuùt submit, trang doupdate.php seõ trieäu goïi, keát quaû traû veà 1 hay 0
maåu tin.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Cap nhat mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="update tblships set ShipName='";
$sql .=$txtName."' where ShipID='".$txtID."'";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
133. PHP VAØ DATABASE 9-6
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
4. XOAÙ MAÅU TIN
Töông töï nhö vaäy khi xoaù maåu tin, baïn chæ thay ñoåi phaùt bieåu SQL daïng Delete nhö ví duï trong
taäp tin delete.php.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Xoa mau tin</h3>
<?php
require("dbcon.php");
$sql="Delete From tblships where ShipID='A01'";
$result = mysql_query($sql,$link);
$affectrow=0;
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin da xoa <?= $affectrow?>
</BODY>
</HTML>
Ñoái vôùi tröôøng hôïp xoaù thì ñôn giaûn hôn, baïn cæh caàn bieát ñöôïc maõ caàn xoaù, chính vì vaäy trong
tröôøng hôïp naøy chuùng ta chæ caàn thieát keá trang cho pheùp nhaäp maõ nhö hình 9-3.
Hình 9-3: Xoaù 1 maåu tin
Sau khi nhaäp maõ caàn xoaù, neáu ngöôøi söû duïng nhaán nuùt Delete laäp töùc trang dodelete.php seõ
trieäu goïi vaø xoaù maåu tin töông öùng.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
134. PHP VAØ DATABASE 9-7
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<BODY>
<h3>Xoa mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="delete from tblships ";
$sql .=" where ShipID='".$txtID."'";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin xoa <?= $affectrow?>
</BODY>
</HTML>
5. TRUY VAÁN DÖÕ LIEÄU
Ñeå truy vaán döõ lieäu baïn söû duïng haøm mysql_num_rows ñeå bieát ñöôïc soá maåu tin traû veà vaø haøm
mysql_fetch_array ñeå ñoïc töøng maåu tin vaø maûng sau ñoù trình baøy giaù trò töø maûng naøy. Chaúng haïn,
chuùng ta taïo moät taäp tin lietke.php duøng ñeå lieät keâ danh saùch maåu tin trong baûng tblShips nhö hình
9-4.
Hình 9-4: Lieät keâ maåu tin
Ñeå laøm ñieàu naøy, baïn khai baùo ñoaïn chöông trình ñoïc baûng döõ lieäu töông töï nhö ví duï sau:
<?php
require("dbcon.php");
$totalRows = 0;
$stSQL ="select * from tblShips";
$result = mysql_query($stSQL, $link);
$totalRows=mysql_num_rows($result);
?>
Sau ñoù, duøng haøm mysql_fetch_array ñeå ñoïc töøng maåu tin vaø in ra nhö sau:
<?php
if($totalRows>0)
{
$i=0;
while ($row = mysql_fetch_array ($result))
{
$i+=1;
135. PHP VAØ DATABASE 9-8
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
?>
<tr valign="top">
<td>
<?=$row["ShipID"]?> </td>
<td ><?=$row["ShipName"]?></td>
</tr>
Trong tröôøng hôïp soá maåu tin traû veà laø 0 thì in ra caâu thoâng baùo khoâng tìm thaáy nhö sau:
<?php
}
}else{
?>
<tr valign="top">
<td > </td>
<td > <b><font face="Arial" color="#FF0000">
Oop! Ship not found!</font></b></td>
</tr>
<?php
}
?>
6. KEÁT LUAÄN
Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu, theâm, xoaù caäp nhaät vaø
lieät keâ maåu tin. Trong baøi keá tieáp chuùng ta tìm hieåu nhieàu caùc trình baøy döõ lieäu, xoaù maåu tin theo
daïng maûng.
136. PHP VAØ DATABASE 9-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
BAØI 10: XOAÙ, CAÄP NHAÄT DÖÕ LIEÄU DAÏNG MAÛNG
Trong baøi tröôùc chuùng ta ñaõ laøm quen vôùi caùch xoaù maåu tin trong cô
sôû döõ lieäu mySQL. Ñoái vôùi tröôøng hôïp xoaù moät luùc nhieàu maåu tin, chuùng ta
phaûi xaây döïng trang PHP coù söû duïng theû input daïng checkbox.
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy
Lieät keâ döõ lieäu daïng danh saùch
Xoaù nhieàu maåu tin
Caäp nhaät nhieàu maåu tin
1. LIEÄT KEÂ DÖÕ LIEÄU
Ñeå xoaù nhieàu maåu tin cuøng moät luùc, tröôùc tieân baïn khai baùo trang PHP ñeå lieät keâ danh saùch maåu
tin trong maûng döõ lieäu chaèng haïn, moãi maåu tin xuaát hieän moät checkbox töông öùng. Checkbox naøy
coù giaù trò laø maõ nhaän daïng cuûa maåu tin ñoù. Trong tröôøng hôïp naøy chuùng ta duøng coät khoaù cuûa
maõ chuyeån haøng (SubCateID) trong baûng tblSubCategories ñònh nghóa trong trang lietke.php nhö
hình 10-1.