● TP cDa sH dòng lEnh th c hiEn lEnh mysqldFnt [options] Trong ñó [options] là các tùy ch!n kh5i ñ7ng cho MySQL Server.. Nc ñAnh thì chW dùng lEnh mysqldFnt, khi ñó các options s: ñưYc l
Trang 1Bài 1 – GI I THI U MySQL
1 Chu n b
MySQL có hai phiên chính là MySQL Enterprise và MySQL Community Server Trong
ph n th c hành này ta ch!n MySQL Community Server phiên b#n 5.0.45 và MySQL GUI Tools phiên b#n 5.0.12 t,i http://dev.mysql.com/downloads
2 Kh i ñ ng và t#t MySQL Server
ð3 kh5i ñ7ng MySQL Server ta có th3 dùng m7t trong hai cách sau:
a MySQL Server s: t ñ7ng kh5i ñ7ng ngay sau khi kh5i ñ7ng Windows n<u trong quá trình cài ñ>t ta ch!n thi<t l?p cài ñ>t MySQL như là m7t dAch vB cCa Windows
b SD dBng lEnh mysqldFnt như sau:
● M5 cDa sH dòng lEnh Command Prompt bKng:
+ Start → All Programs → Accessories → Command Promt ho>c
+ Start → Run và th c thi lEnh cmd
● TP cDa sH dòng lEnh th c hiEn lEnh mysqldFnt [options]
Trong ñó [options] là các tùy ch!n kh5i ñ7ng cho MySQL Server ð3 xem ñ y ñC n7i dung các tùy ch!n ta sD dBng mysqldFnt –verbose –help N<u kh5i ñ7ng vVi các options m>c ñAnh thì chW dùng lEnh mysqldFnt, khi ñó các options s: ñưYc lZy trong t?p tin cZu hình my.ini trong thư mBc cài ñ>t MySQL ho>c thư mBc Windows cCa hE th[ng
ð3 t\t MySQL Server ta sD dBng lEnh mysqladmin như sau:
● M5 cDa sH dòng lEnh Command Prompt
● TP cDa sH dòng lEnh th c hiEn lEnh mysqladmin Fu root shutdown
3 Qu'n tr MySQL v(i MySQL Administrator
ð3 d] dàng t,o các cơ s5 d_ liEu chúng ta có th3 sD dBng công cB hH trY qu#n trA MySQL Server g!i là MySQL Administrator Sau khi ch\c ch\n MySQL Server ñã ñưYc kh5i ñ7ng,
ta s: kh5i ñ7ng MySQL Administrator bKng cách ch!n Start → All Programs → MySQL
→ MySQL Administrator CDa sH ñăng nh?p MySQL Administrator xuZt hiEn (Hình 1.1)
Gi# sD MySQL Server ñưYc cài ñ>t trên máy ñơn mà ta ñang sD dBng ð3 k<t n[i vVi MySQL Server ta c n các thông s[ sau cơ b#n sau:
Server Host: localhost
Port: 3306
Username: root
Password:
Sau ñó nhZp chu7t vào nút OK N<u k<t n[i thành công cDa sH chính cCa MySQL Administrator s: xuZt hiEn (Hình 1.2)
ð3 t,o cơ s5 d_ liEu ta ch!n mBc Catalogs trong ph n bên trái cCa cDa sH chính NhZp chu7t ph#i vào ph n 5 góc trái dưVi cCa cDa sH chính và ch!n Create New Schema, chú ý trong MySQL m7t cơ s5 d_ liEu còn ñưYc g!i là Schema H7p tho,i Create New Schema xuZt
Trang 2hiEn (Hình 1.3) và yêu c u ta nh?p vào Schema name, tên cCa cơ s5 d_ liEu c n t,o.
Hình 1.1: CDa sH ñăng nh?p MySQL Administrator
Hình 1.2: CDa sH chính cCa MySQL Administrator
Trang 3Gi# sD ta t,o m7t cơ s5 d_ liEu có tên là CSDL_Congty, khi ñó Schema csdl_congty s: xuZt hiEn trong danh sách các Schema 5 góc trái dưVi cCa cDa sH chính
ð3 t,o mVi, chWnh sDa, xóa các quan hE (b#ng) cCa m7t cơ s5 d_ liEu, ta nhZp chu7t ñ3 ch!n
cơ s5 d_ liEu (schema) trong danh sách schema Trong ph n bên ph#i cCa cDa sH chính s: xuZt hiEn mBc Schema Tables cho phép th c hiEn viEc t,o, hiEu chWnh và xóa quan hE (Hình 1.4)
4 Truy v0n v(i MySQL Query Browser
MySQL Query Browser cho phép ta th c hiEn các lEnh truy vZn cơ s5 d_ liEu ð3 sD dBng MySQL Query Browser ta kh5i ñ7ng nó tP Start → All Programs → MySQL → MySQL Query Browser Khi ñó cDa sH ñăng nh?p MySQL Query Browser xuZt hiEn (Hình 1.5)
Hình 1.3: H7p tho,i Create New Schema
Hình 1.4: CDa sH chính vVi mBc Schema Tables
Trang 4Gi# sD MySQL Server ñưYc cài ñ>t trên máy ñơn mà ta ñang sD dBng Ta cũng nh?p vào các thông s[ cơ b#n tương t khi k<t n[i MySQL Administrator vVi MySQL Server:
F Server Host: localhost
F Username: root
F Password:
Trong mBc Default Schema ph#i nh?p vào tên cơ s5 d_ liEu mà ta mu[n th c hiEn các truy vZn trên ñó Sau ñó nhZp chu7t vào nút OK và cDa sH chính cCa MySQL Query Browser s: xuZt hiEn (Hình 1.6)
CDa sH chính cCa MySQL Query Browser grm các thành ph n cơ b#n sau
a Công c truy v n – Query Toolbar
Nơi ñ3 so,n th#o và th c thi các truy vZn Grm có 3 nút di chuy3n (Go back, Next, Refresh), vùng so,n th#o truy vZn, 2 nút chsc năng (Execute, Stop)
● Các nút di chuy3n
Dùng ñ3 duyEt danh mBc các lEnh truy vZn ñã ñưYc th c thi ChW các lEnh truy vZn không x#y ra lti mVi ñưYc lưu vào danh mBc Nút Go back chuy3n vu nhóm lEnh truy vZn ñã th c thi ngay trưVc nhóm lEnh hiEn ñang có trong vùng so,n th#o truy vZn Nút Next chuy3n ñ<n nhóm lEnh truy vZn ñã th c thi ngay sau nhóm lEnh hiEn ñang có trong vùng so,n th#o truy vZn Nút Refresh th c thi l,i nhóm lEnh truy vZn
ñã ñưYc th c thi g n nhZt
● Vùng so,n th#o truy vZn
Dùng hi3n thA và so,n th#o các lEnh truy vZn Vùng này m>c ñAnh có 3 dòng và có th3 ñưYc m5 r7ng lên t[i ña 10 dòng N<u các truy vZn dài hơn 10 dòng thì thanh
Hình 1.5: CDa sH ñăng nh?p MySQL Query Browser
Trang 5cu7n s: xuZt hiEn ð3 tăng t[i ña kích thưVc vùng so,n th#o dùng View → Maximize Query Edit ho>c gõ phím F11
● Các nút chsc năng
Dùng ñ3 th c thi ho>c dPng các lEnh truy vZn Nút Execute dùng ñ3 th c thi các lEnh truy vZn hiEn thzi trong vùng so,n th#o Nút Stop dùng ñ3 chZm dst các lEnh th c thi n<u viEc th c thi x#y ra quá lâu mà chưa cho ra k<t qu#
ð3 lưu l,i các câu lEnh truy vZn ñã th c thi vào t?p tin dùng File → Save As Sau ñó
ta ch!n ki3u t?p tin ñ3 lưu là SQL Script File ANSI (*.sql)
b Công c truy v n – Query Toolbar
Nơi ñ3 so,n th#o và th c thi các truy vZn Grm có 3 nút di chuy3n (Go back, Next, Refresh), vùng so,n th#o truy vZn, 2 nút chsc năng (Execute, Stop)
● Các nút di chuy3n
Dùng ñ3 duyEt danh mBc các lEnh truy vZn ñã ñưYc th c thi ChW các lEnh truy vZn không x#y ra lti mVi ñưYc lưu vào danh mBc Nút Go back chuy3n vu nhóm lEnh truy vZn ñã th c thi ngay trưVc nhóm lEnh hiEn ñang có trong vùng so,n th#o truy vZn Nút Next chuy3n ñ<n nhóm lEnh truy vZn ñã th c thi ngay sau nhóm lEnh hiEn ñang có trong vùng so,n th#o truy vZn Nút Refresh th c thi l,i nhóm lEnh truy vZn
ñã ñưYc th c thi g n nhZt
● Vùng so,n th#o truy vZn
Dùng hi3n thA và so,n th#o các lEnh truy vZn Vùng này m>c ñAnh có 3 dòng và có th3 ñưYc m5 r7ng lên t[i ña 10 dòng N<u các truy vZn dài hơn 10 dòng thì thanh
Hình 1.6: CDa sH chính cCa MySQL Query Browser
Trang 6cu7n s: xuZt hiEn ð3 tăng t[i ña kích thưVc vùng so,n th#o dùng View → Maximize Query Edit ho>c gõ phím F11
● Các nút chsc năng
Dùng ñ3 th c thi ho>c dPng các lEnh truy vZn Nút Execute dùng ñ3 th c thi các lEnh truy vZn hiEn thzi trong vùng so,n th#o Nút Stop dùng ñ3 chZm dst các lEnh th c thi n<u viEc th c thi x#y ra quá lâu mà chưa cho ra k<t qu#
ð3 lưu l,i các câu lEnh truy vZn ñã th c thi vào t?p tin dùng File → Save As Sau ñó ta ch!n ki3u t?p tin ñ3 lưu là SQL Script File ANSI (*.sql)
c Vùng hi%n th& k't qu) truy v n – Result Area
Nơi hi3n thA k<t qu# cCa các lEnh truy vZn
d Vùng duy,t ñ.i tư0ng 1 Object Browser
Nơi liEt kê và cho phép l a ch!n cơ s5 d_ liEu, qu#n lý bookmark và danh mBc các câu lEnh truy vZn ñã ñưYc th c hiEn
Trình duyEt cơ s5 d_ liEu, th} Schemata, là thành ph n chính cCa vùng duyEt ñ[i tưYng
Ta có th3 ch!n các quan hE và các thu7c tính cCa quan hE, có th3 hiEu chWnh, hCy và t,o b#ng, có th3 hCy và t,o cơ s5 d_ liEu Ta cũng có th3 l a ch!n cơ s5 d_ liEu m>c ñAnh ñ3
th c hiEn các truy vZn trên cơ s5 d_ liEu ñó
Cơ s5 d_ liEu m>c ñAnh luôn ñưYc tô ñ?m, ñ3 thay ñHi cơ s5 d_ liEu m>c ñAnh nhZp chu7t ph#i vào cơ s5 d_ liEu mu[n ñHi và ch!n Make Default Schema
e Vùng duy,t thông tin 1 Information Browser
Nơi cho phép tham kh#i nhanh các thông tin vu cú pháp các lEnh, cách sD dBng các toán
tD và các hàm có s~n trong MySQL
f Vùng so8n th)o script – Script Editor
Nơi ñ3 so,n th#o các nhóm lEnh truy vZn lVn Vùng này nKm trong m7t th} riêng biEt trong vùng hi3n thA k<t qu# truy vZn Khi vùng này xuZt hiEn, công cB Advanced Toolbar xuZt hiEn và thay th< Query Toolbar
ð3 t,o vùng so,n th#o mVi dùng File → New Script Tab ð3 lưu l,i n7i dung trong vùng so,n th#o dùng File → Save As và ch!n ki3u t?p tin ñ3 lưu là SQL Script File ANSI (*.sql)
Các nút chsc năng g• lti cCa công cB Advanced Toolbar có th3 sD dBng vVi Script Editor grm:
● Execute: th c thi tZt c# các lEnh truy vZn trong vùng so,n th#o
● Continue: th c thi lEnh truy vZn ñ u tiên (ho>c lEnh truy vZn t,i vA trí con tr€) và k<t thúc khi x#y ra lti ho>c g>p m7t ñi3m gãy (break point)
● Step: th c thi lEnh truy vZn k< ti<p
Trang 7● Pause: dPng viEc th c thi và tô ñ?m lEnh s: ñưYc th c thi k< ti<p.
● Stop: dPng viEc th c thi
5 Ki3u d4 li6u trong MySQL
a Các ki%u s
MySQL hH trY tZt c# các ki3u s[ cCa SLQ chu•n grm các ki3u s[ chính xác (INTEGER, SMALLINT, DECIMAL và NUMERIC) và các ki3u s[ g n ñúng (FLOAT, REAL và DOUBLE PRECISION) INT là vi<t t\t cCa INTEGER và DEC là vi<t t\t cCa DECIMAL
Ngoài ra, MySQL cũng hH trY các ki3u s[ cCa SQL m5 r7ng là TINYINT, MEDIUMINT và BIGINT B#ng 1.1 liEt kê kích thưVc và ph,m vi cCa các ki3u s[
Ki3u Kích thư(c
(Bytes)
Giá tr nh= nh0t (D0u / Không d0u)
Giá tr l(n nh0t (D0u / không d0u)
BIGINT 8 F9,223,372,036,854,775,808 9,223,372,036,854,775,807
B#ng 1.1: Kích thưVc và ph,m vi cCa các ki3u s[
VVi ki3u s[ g n ñúng MySQL dùng 4 bytes bi3u di]n giá trA g n ñúng và 8 bytes bi3u di]n giá trA chính xác Ki3u FLOAT và DOUBLE dùng ñ3 bi3u di]n ki3u s[ g n ñúng Ki3u s[ g n ñúng vVi ñ7 chính xác tP 0 – 23 ch_ s[ ñưYc bi3u di]n bKng ki3u FLOAT
và ñ7 chính xác tP 24 – 53 ch_ s[ ñưYc bi3u di]n bKng ki3u DOUBLE
MySQL cũng cho phép bi3u di]n ñ7 chính xác cCa ki3u g n ñúng vVi cú pháp FLOAT(M, D), REAL(M, D) và DOUBLE PRECISION(M, D) vVi M là tHng s[ ch_ s[
và D là s[ ch_ s[ ph n th?p phân Ví dB, FLOAT(7, 4) bi]u di]n s[ ch_ s[ có d,ng F999.9999 MySQL cũng làm tròn s[ khi lưu tr_ Ví dB, n<u giá trA là 999.00009 vVi ki3u FLOAT(7, 4) s: ñưYc làm tròn thành 999.0001
Ki3u DOUBLE PRECISION trong SQL m5 r7ng cũng tương ñương vVi ki3u DOUBLE
Trang 8b Ki%u th<i gian
Các ki3u ngày tháng và giz dùng ñ3 bi3u di]n các giá trA thzi gian là DATETIME, DATE, TIMESTAMP, TIME và YEAR Mti ki3u thzi gian có m7t vùng giá trA hYp lE
và m7t giá trA g!i là zero dùng ñ3 chW m7t giá trA không hYp lE mà MySQL không th3 bi3u di]n Kích thưVc cCa các ki3u thzi gian ñưYc cho trong B#ng 1.2
Ki3u Kích thư(c
(Bytes)
B#ng 1.2: Kích thưVc cCa các ki3u thzi gian
Các chú ý khi sD dBng các ki3u thzi gian:
● MySQL khôi phBc các giá trA cCa ki3u ngày ho>c giz theo m7t ñAnh d,ng xuZt chu•n, nhưng có th3 hi3u nhiuu ñAnh d,ng cho các giá trA nh?p
● Các ki3u ngày tháng vVi giá trA có năm là hai ch_ s[ gây ra s nh?p nhKng vì thành
ph n thiên niên k† không ñưYc xác ñAnh cB th3 MySQL hi3u các giá trA có năm là hai ch_ s[ theo quy t\c sau:
+ Giá trA cCa năm tP 70 – 99 ñưYc hi3u là tP 1970 – 1999
+ Giá trA cCa năm tP 00 – 69 ñưYc hi3u là tP 2000 – 2069
● M>c dù MySQL có th3 hi3u các giá trA theo nhiuu ñAnh d,ng, nhưng giá trA cCa các ki3u ngày tháng ph#i luôn ñưYc nh?p vào theo ths t nămFthángFngày Ví dB, 98F09F
04 là ngày 04 tháng 09 năm 1998
● MySQL t ñ7ng chuy3n m7t giá trA ki3u ngày tháng ho>c giz thành m7t s[ n<u giá trA ñưYc dùng 5 d,ng s[ và ngưYc l,i
● Khi MySQL g>p ph#i m7t giá trA ki3u ngày tháng ho>c giz nKm ngoài ph,m vi bi3u di]n ho>c không hYp lE, nó s: chuy3n giá trA này thành giá trA zero sng vVi ki3u tương sng Riêng giá trA nKm ngoài ph,m vi cCa ki3u TIME s: ñưYc c\t ñ3 thành m7t giá trA giVi h,n thích hYp cCa ki3u TIME
● Zero là các giá trA ñ>c biEt, nhưng ta có th3 lưu ho>c xem chúng m7t cách tưzng minh như các giá trA trong b#ng bên dưVi Ta cũng có th3 vi<t m7t cách ñơn gi#n giá trA zero là 0
Trang 9Ki3u Giá tr zero DATETIME '0000F00F00 00:00:00'
TIMESTAMP '0000F00F00 00:00:00'
B#ng 1.3: Giá trA zero cCa các ki3u
● Ki3u DATETIME, DATE và TIMESTAMP
Ki3u DATETIME ñưYc dùng khi ta c n bi3u di]n các giá trA chsa c# thông tin ngày tháng và giz MySQL khôi phBc và hi3n thA giá trA DATETIME theo ñAnh d,ng 'YYYYFMMFDD HH:MM:SS' Ph,m vi bi3u di]n tP '1000F01F01 00:00:00' ñ<n '9999F12F31 23:59:59'
Ki3u DATE ñưYc dùng khi ta c n bi3u di]n các giá trA chW chsa thông tin ngày tháng MySQL khôi phBc và hi3n thA giá trA DATE theo ñAnh d,ng 'YYYYFMMFDD' Ph,m
vi bi3u di]n tP '1000F01F01' ñ<n '9999F12F31'
Ki3u TIMESTAMP có nhiuu tính chZt phB thu7c vào phiên b#n MySQL và ch< ñ7 SQL mà hE qu#n trA ñang ch,y
Có nhiuu ñAnh d,ng ñ3 ñAnh nghĩa các giá trA DATETIME, TIME và TIMESTAMP: Chuti có d,ng 'YYYYFMMFDD HH:MM:SS' ho>c 'YYYYFMMFDD' Ví dB, '1998F12F31 11:30:45' là 11 giz 30 phút 45 giây ngày 31 tháng 12 năm 1998 Chuti có d,ng 'YYYYMMDDHHMMSS' ho>c 'YYYYMMDD' Ví dB '19981231113045' là 11 giz 30 phút 45 giây ngày 31 tháng 12 năm 1998
19830905132800 là 13 giz 28 phút ngày 05 tháng 09 năm 1983
Các giá trA không hYp lE ñưYc chuy3n thành zero cCa ki3u tương sng
Khi MySQL Server ch,y vVi ch< ñ7 MAXDB thì ki3u TIMESTAMP và DATETIME là như nhau Khi không ch,y vVi ch< ñ7 MAXDB thì các thu7c tính có ki3u TIMESTAMP có giá trA m>c ñAnh là NOT NULL
● Ki3u TIME
MySQL khôi phBc và hi3n thA các giá trA TIME theo ñAnh d,ng 'HH:MM:SS' (ho>c ñAnh d,ng 'HHH:MM:SS' vVi các giá trA giz lVn) Các giá trA TIME có ph,m vi bi3u di]n tP 'F838:59:59' ñ<n '838:59:59' Thành ph n giz có th3 có giá trA lVn vì ki3u TIME không chW ñưYc dùng ñ3 bi3u di]n giz trong m7t ngày mà còn ñưYc dùng ñ3 bi3u di]n kho#ng thzi gian gi_a hai m[c s kiEn
Có nhiuu ñAnh d,ng ñ3 ñAnh nghĩa các giá trA TIME:
Trang 10Chuti có d,ng 'D HH:MM:SS'.
Chuti có d,ng 'HHMMSS' n<u giá trA bi3u di]n giz trong m7t ngày Ví dB, '101112' là 10 giz 11 phút 12 giây
S[ có d,ng HHMMSS n<u giá trA bi3u di]n giz trong m7t ngày Ví dB, 101112 là
10 giz 11 phút 12 giây
Các giá trA nKm ngoài ph,m vi bi3u di]n cCa ki3u TIME s: ñưYc chuy3n vu giá trA giVi h,n thích hYp Ví dB, 'F850:00:00' tr5 thành 'F838:59:59' Các giá trA không hYp
lE tr5 thành '00:00:00' V?y khi g>p m7t giá trA '00:00:00' ta không th3 nói rKng nó là m7t giá trA ñưYc ñAnh nghĩa b5i '00:00:00' hay là m7t giá trA không hYp lE
● Ki3u YEAR
Ki3u YEAR dùng ñ3 bi3u di]n các giá trA năm MySQL khôi phBc và hi3n thA các giá trA YEAR theo ñAnh d,ng YYYY Ph,m vi bi3u di]n tP 1901 ñ<n 2155
Có nhiuu ñAnh d,ng ñ3 ñAnh nghĩa các giá trA YEAR:
Chuti 4 ch_ s[ tP '1901' ñ<n '2155' Ví dB, '1990' là năm 1990
S[ 4 ch_ s[ tP 1901 ñ<n 2155 Ví dB, 1990 là năm 1990
Chuti 2 chs s[ tP '00' ñ<n '99' Ví dB, '90' là năm 1990 Lưu ý s nh?p nhKng khi thi<u thành ph n thiên niên k†
S[ tP 1 ñ<n 99 Ví dB, 50 là năm 2050 Lưu ý s nh?p nhKng khi thi<u thành ph n thiên niên k† Trong trưzng hYp này ta không th3 sD dBng s[ 0 ñ3 chW là năm
2000 mà ta ph#i dùng chuti '0' ho>c '00' vì s[ 0 ñưYc hi3u là giá trA zero
Các giá trA không hYp lE ñưYc chuy3n thành zero
● VZn ñu năm 2000 và các ki3u thzi gian
MySQL Server không g>p vZn ñu vVi năm 2000 (Y2K)
c Ki%u chu=i
Các ki3u chuti grm CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM
● Ki3u CHAR và VARCHAR
Ki3u CHAR và VARCHAR tương t nhau nhưng khác nhau cách các giá trA cCa chúng ñưYc lưu tr_ và khôi phBc
Ki3u CHAR và VARCHAR ñưYc khai báo vVi ñ7 dài ñ3 ñAnh rõ s[ t[i ña các ký t
mà m7t giá trA có th3 có Ví dB, CHAR(30) thì giá trA là m7t chuti có th3 chsa t[i ña
30 ký t
VVi ki3u CHAT ñ7 dài có th3 có giá trA tP 0 ñ<n 255 Khi m7t chuti giá trA ki3u CHAR ñưYc lưu, các ký t tr\ng ñưYc ghép vào cu[i ñ3 chuti có chiuu dài như chiuu dài ñã ñAnh Khi m7t chuti giá trA CHAR ñưYc khôi phBc, các ký t tr\ng 5 cu[i chuti s: bA xóa
Các giá trA ki3u VARCHAR là các chuti có ñ7 dài thay ñHi ð7 dài có th3 có giá trA
tP 0 ñ<n 65535 Khác vVi ki3u CHAR, các giá trA ki3u VARCHAR ñưYc lưu vVi ñ7