MySQL เป็นซอฟต์แวร์ประเภทฐานข้อมูลชนิด RDBMS - Relational
Database Management Systemจัดเก็บข้อมูลในลักษณะของตาราง (table)
ประกอบด้วย แถว (row )เป็น records และคอลัมน์ (column) เป็น fields
ตารางทั้งหมดในฐานข้อมูลมีความสัมพันธ์เชื่อมโยงกัน
เพื่อลดความซ้ำซ้อนของข้อมูล
การจัดการฐานข้อมูลสามารถทำได้โดยใช้ภาษาคอมพิวเตอร์ชั้นสูงที่เรียกว่า
Structure Query Language เรียกสั้น ๆ ว่า SQL สามารถสร้าง
ปรับปรุงแก้ไข อ่าน หรือ ลบข้อมูล (Create, Update, Read and Delete)
MySQL เป็นซอฟต์แวร์แบบ Open-source จัดทำขึ้นเมื่อปี ค.ศ.
1995 โดย Michael Widenius และ Devid Axmark แห่งบริษัท MySQL AB
ต่อมาถูกบริษัท Sun Microsystems ผู้สร้างโปรแกรมจาวา
ซึ้อเข้าไปรวมกิจการเมื่อ ค.ศ. 2008 และบริษัท Oracle ได้รวมบริษัท Sun
Microsystems มาไว้ในบริษัทของตนอีกทอดหนึ่งเมื่อ ค.ศ. 2010
MySQL เป็นซอฟต์แวร์ทีใช้และเป็นที่ยอมรับกันแพร่หลาย
นอกจากความเสถียร จนสามารถไว้วางใจได้ (reliable)
แล้วยังประมวลผลได้รวดเร็ว (speed performance) และมีคุณลักษณะ(feature)
อื่น ๆ ที่จำเป็นต้องมีในการใช้ฐานข้อมูลไว้อย่างครบถ้วน
Download MySQL
เวปไซต์หลักของ MySQL คือ www.mysql.com ปัจจุบัน MySQL ได้ออกมาถึงรุ่น 5.5 ( เดือน มกราคม ค.ศ. 2012) สามารถดาวน์โหลดได้ที่ http://dev.mysql.com/downloads/mysql/5.5.htmlในที่นี้จะเลือกดาวน์โหลด MySQL Community Server 5.5.xx ที่เป็นแบบ 64 bit และจัดเก็บในรูปแบบ zip archive (ต้องเลือก platform และ 32 หรือ 64 bit ให้เหมาะสมกับวินโดว์ที่ใช้งานอยู่ด้วย) จะมีหน้าเว็บเพจให้สมัครเป็นสมาชิก MySQL account
ให้เลื่อนเมาส์ไปคลิกที่ “No thanks, just take me to the downloads!” และเลือก HTTP mirror site ที่ใกล้ประเทศไทยมากที่สุด เพื่อดาวน์โหลด
เมื่อดาวน์โหลดเสร็จแล้ว ให้กลับไปหน้าแรกของการ download ที่เมนูด้านซ้ายมือ คลิกที่หัวข้อ MySQL Connectors เลือก หัวข้อย่อย Connector /J ซึ่งเป็นไดรเวอร์สำหรับเชื่อมต่อระหว่างจาวากับ MySQL ให้ดาวน์โหลดมาเก็บไว้เช่นกัน
MySQL มีเครื่องมืออยู่ชิ้นหนึ่ง ชื่อ MySQL Workbench เป็น Graphic User Interface เป็นโปรแกรมที่ใช้แทนที่ mysql ที่เป็น client-site application ( ซึงใช้งานในลักษณะ command line) นอกจากยังใช้ในการทดสอบคำสั่ง SQL และใช้แทนโปรแกมรม MySQL Administrator ในรุ่นเก่า ๆ ด้วย
เมื่อดาวน์โหลดเสร็จสิ้นจะได้ไฟล์ 3 ไฟล์ ดังนี้
ติดตั้งและ กำหนดค่าเบื้องต้น (Install & Configuration)
- แตกไฟล์ mysql-5.5.xx-win64.zip ไว้ที่ “C:\WebProject\” เมื่อ unzip ไฟล์ในโฟลเดอร์นี้ จะได้โฟลเดอร์ใหม่ที่มีชื่อยาวมาก “C:\WebProject\mysql-5.5.xx-winx64” ให้ทำการเปลี่ยนชื่อโฟลเดอร์ให้เหลือสั้น ๆ เพียง mysql ในท้ายสุดจะได้โฟลเดอร์ที่ติดตั้ง MySQL เป็น “C:\WebProject\mysql”
- เข้าไปที่ โฟลเดอร์ “C:\WebProject\mysql” มองหาไฟล์ ที่ขึ้นต้นด้วยคำว่า “my….” นามสกุล .ini พบว่าจะมีอยู่หลายไฟล์ด้วยกัน
- เปิด ไฟล์ “my-large.ini” ด้วย text editor (ในที่นี้ใช้ NotePad++) save ไฟล์นี้ในชื่อใหม่ว่า “my.ini” แก้ไขและเพิ่มเติมข้อความดังต่อไปนี้
กรณีที่มองไม่เห็นนามสกุลของไฟล์ .ini ต้องเข้าไปแก้ไขใน Control Panel >> Folder Options >> เลือกแท็บ View >> ให้ uncheck เครื่องหมายถูกหน้าข้อความ “Hide extensions for known file types.” คลิก apply และ ปุ่ม OK
default-character-set=utf8
[mysqld]
:
:
skip-character-set-client-handshake=1
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server=utf8
basedir=c:\WebProject\mysql
datadir=c:\WebProject\mysql\data
[mysqldump]
:
:
default-character-set=utf8
[mysql]
:
:
default-character-set=utf8
บรรทัด basedir= … และ datdir=…. บอกถึงโฟลเดอร์ที่ติดตั้งโปรแกรม MySQL และโฟลเดอร์ที่ใช้เก็บฐานข้อมูล
คำสั่งอื่น ๆ เป็นการกำหนดให้ฐานข้อมูลของเราใช้รหัสตัวอักษร แบบ utf8 ทั้งฝั่ง server และ client การจัดลำดับการเรียงตัวอักษรจะเป็นแบบ utf8_general_ci
Start the server
ลักษณะการทำงานของโปรแกรม MySQL เป็นแบบ client-server ฐานข้อมูลจะถูกเก็บไว้ที่ฝั่งของ server ผู้ใช้สามารถเข้าถึงข้อมูลได้ทั้งในลักษณะ local (ฐานข้อมูล และ client program อยู่ในเครื่องเดียวกัน ) หรือในลักษณะ remote (ฐานข้อมูลและ client program อยู่ต่างเครื่องกัน) โดยผ่านทาง TCP/IP networkโปรแกรมที่ให้บริการฐานข้อมูลฝั่ง server คือ mysqld.exe ตัว “d” ต่อท้ายคำว่า mysql มาจากคำว่า daemon เป็นคำที่มาจากระบบปฏิบัติการ Unix หมายถึงโปรแกรมหรือโปรเซสที่ทำงานอยู่ฉากหลังโปรแกรมอืน ๆ ส่วนโปรแกรมที่ใช้ติดต่อกับ server เพื่อเข้าถึงข้อมูลคือ mysql.exe (ไม่มี d ต่อท้าย) ทั้งสองโปรแกรมนี้ถูกเก็บไว้ในโฟลเดอร์ย่อย “C:\WebProject\mysql\bin”
การเริ่มให้ mysqld.exe ทำงานนั้น ให้ไปที่ Command shell แล้วใช้คำสั่ง mysqld –console ดังรูป
เมื่อเคาะปุ่ม Enter จะมีข้อความแสดงถึงการทำงานของโปรแกรม mysqld.exe ดังรูป คำสั่ง –console จะให้นำมาแสดงผลให้เห็นบนหน้าจอ ถ้าไม่มี option จะเห็นแต่หน้าจอว่าง ๆ ไม่ข้อความใด ๆ นอกจากเคอเซอร์กระพริบเท่านั้น ให้สังเกตข้อความ
mysqld: ready for connection และข้อความที่แจ้งถึงพอร์ตที่ใช้ในการติดต่อ ในที่นี้คือ 3306
ให้ปล่อยหน้าจอ Command shell ทิ้งไว้อย่างนี้ตราบใดที่เราต้องการให้ MySQL server ทำงานให้บริการฐานข้อมูลอยู่ ในการเข้าถึง server ซึ่งในที่นี้จะเป็นแบบ local ให้เปิดหน้าต่าง Command shell ขึ้นอีกหน้าต่างหนึ่ง เข้าไปที่โฟลเดอร์ย่อย bin พิมพ์คำสั่ง mysql –uroot ดังนี้
Option –u หมายถึง user หรือผู้ใช้งาน ในที่นี้ตือ root หรือ administrator เมื่อกด Enter จะมีข้อความปรากฏดังนี้ พร้อมกับมี prompt ที่มีข้อความ mysql> พร้อมที่จะรอรับคำสั่งในการติดต่อกับฐานข้อมูล
ทดลองพิมพ์คำสั่งต่อไปนี้ show databases; ให้แสดงฐานข้อมูลที่มีอยู่ทั้งหมด
ในที่นี้เราจะเข้าไปดูฐานข้อมูลที่ชื่อ mysql ว่าเก็บข้อมูลใดไว้บ้าง การเลือกใช้ฐานข้อมูลให้ใช้คำสั่ง “use”
จะดูลึกลงไปอีกว่าในฐานข้อมูลชื่อ mysql มีตาราง(table) ใดเก็บไว้บ้าง โดยใช้คำสั่ง show tables;
พบว่ามีตารางทั้งหมด 24 ตาราง ตารางที่เราสนใจคือ ตารางที่ชื่อว่า user
ต้องการดูว่าตาราง user มีฟิลด์ใดเก็บไว้บ้าง ใช้คำสั่ง describe ดังนี้
มีจำนวนฟิลด์ถูกเก็บไว้ถึง 42 ฟิลด์ ฟิลด์ที่เราสนใจคือ Host, User และ Password ข้อมูลเหล่านี้คือข้อมูลของผู้ใช้งานและpassword ของผู้ใช้งานแต่ละคน
ใช้คำสั่ง select host, user, password from mysql.user; เพื่อดูผลลัพธ์
จะเห็นว่า Host ที่เป็น localhost ทั้งหมด ซึ่งมีหมายเลข IP แบบ 4 หลัก เป็น 127.0.0.1 หรือ แบบ IPV6 เป็น : :1 ผู้ใช้คือ root นั้น ยังไม่มีการกำหนด password เลย และบรรทัดสุดท้าย นั้นบอกว่า ผู้ใช้ที่เป็นนิรนาม anonymous คือจะเป็นใครก็ได้ สามารถเข้าถึงฐานข้อมูลนี้ได้โดยไม่ต้องมี password เช่นกัน ซึ่งนับว่าไม่ปลอดภัยเลย
กำหนด password ให้แก่ root
สมมติว่าเราจะกำหนด password ของ root ให้มีค่าเป็น “xxxxx” ให้พิมพ์คำสั่งต่อไปนี้Update user set password=PASSWORD(“xxxxx”) where User=’root’;
เข้าไปดูข้อมูลในตารางชื่อ user อีกครั้ง จะเห็นว่ามีการกำหนด password และเข้ารหัส password ไว้เพื่อมิให้ผู้อืนได้ทราบ
หมายเหตุ เราสามารถกำหนด password ที่ละรายโดยใช้คำสั่งต่อไปนี้ mysql>set password for ‘root’@’localhost’=password(‘xxxxx’); mysql>set password for ‘root’@’: :1’=password(‘xxxxx’); mysql>set password for ‘root’@’127.0.0.1’=password(‘xxxxx’);บรรทัดสุดท้าย ที่เป็น localhost แต่ไม่มีชื่อผู้ใช้ และไม่มี password นั่นหมายถึง ผู้ที่ไม่มีรายชื่อในตาราง user สามารถเข้าถึงข้อมูลนี้ได้โดยไม่ต้องมี password ให้ทำการลบบรรทัด(record) นี้ทิ้ง โดยใช้คำสั่ง
Mysql> drop user ‘’@’localhost’;
ดูรายชื่อผู้ใช้และ password ในตาราง user อีกครั้ง จะเห็นว่าผู้ใช้ซึ่งเป็นนิรนาม ไม่สามารถเข้ามาใช้ฐานข้อมูลนี้ได้อีกแล้ว
การยกเลิกการติดต่อกับฐานข้อมูล ให้ใช้คำสั่ง quit
โปรแกรม mysql จะยกเลิกการติดต่อกับฐานข้อมูล แต่โปรแกรม mysqld.exe ที่อยู่ฝั่ง server ยังคงทำงานอยู่ เพื่อให้ server รับรู้การเปลี่ยนแปลง ให้ปิด server โดยใช้คำสั่ง Control+ c หรือ Control + break
ไม่ควรใช้คำสั่ง close หรือคลิกที่กากบาทที่มุมขวาของหน้าต่าง Command shell เพราะการทำเช่นนี้คือ การ kill process เป็นการปิด server กลางคัน
จากนั้นให้ start server อีกครั้งด้วยคำสั่ง mysqld –console
ถ้าต้องการเข้าไปใช้ข้อมูล ให้พิมพ์คำสั่ง mysql –uroot เหมือนครั้งก่อน พบว่าครั้งนี้ไม่สามารถเข้าไปใช้งานได้ จะมีข้อความแสดงการปฏิเสธการเข้ามาใช้งาน
พิมพ์คำสั่งอีกครั้ง คราวนี้ใส่ option –p เพิ่มเข้าไปด้วย หมายถึง การใส่ password
mysql –uroot -p (กด Enter)จะมีข้อความให้ใส่ password เมื่อเราใส่ password ได้ถูกต้อง ก็จะสามารถเข้าไปใช้งานได้
หมายเหตุ การปิด server สามารถใช้โปรแกรม utility ชื่อ mysqladmin.exe อยู่ในโฟลเดอร์ bin เช่นกัน การใช้งานมีดังนี้ C:\WebProject\mysql\bin>mysqladmin –u root -p xxxxx shutdownในการ start mysql server อาจเขียนเป็น batch file ได้ดังนี้ save เก็บไว้ในชื่อ startMysql.bat
cd \
cd c:/WebProject/mysql/bin
mysqld –console
ทดลองสร้างฐานข้อมูล
ใน MySQL server จะประกอบด้วยฐานข้อมูล(Database)หลาย ๆ ฐานข้อมูล แต่ละฐานข้อมูล ประกอบด้วยตาราง (table) เป็นจำนวนมาก แต่ละตารางประกอบด้วยแถวหรือจำนวนข้อมูล (record) หลาย ๆ แถว ในแต่ละแถวจะประกอบด้วยคอลัมน์ (column or field) หลาย ๆ คอลัมน์ในขั้นตอนนี้จะทดลองสร้างฐานข้อมูล เก็บรายชื่อนักศึกษาที่ลงทะเบียนเรียนวิชาต่าง ๆ ในภาควิชาฟิสิกส์ ให้ชื่อฐานข้อมูลนี้ว่า student ดังขั้นตอนต่อไปนี้
- Start MySQL server (ถ้ายังไม่ได้ start)
- ใช้โปรแกรม mysql เชื่อมต่อกับ server โดยใช้คำสั่ง “mysql –uroot –p “ ดังรูป
- สร้างฐานข้อมูล ชื่อ student โดยใช้คำสั่งต่อไปนี้
- เลือกใช้ฐานข้อมูล student ที่เพิ่งสร้างไปสักครู่นี้
use student;
- สร้างตารางที่ชื่อ group01 เพื่อเก็บ รหัสนักศึกษา (id) ขื่อ (name) วิชาที่ลงทะเบียนเรียน (subject) และระดับคะแนนของนักศึกษา (gpa) โดยใช้คำสั่งดังนี้
- ใส่ข้อมูลลงไปในตารางโดยใช้คำสั่ง insert ข้อมูลชนิด string จะต้องมีเครื่องหมาย ‘ ครอบหัวท้าย ถ้าเป็นข้อมูลชนิด float หรือ int ไม่ต้องมีเครื่องหมาย’ ปิดหัวท้าย
mysql>create database if not exists student;
Mysql>create table group01 (id int, name varchar(40), subject varchar(50), gpa float);
ใช้คำสั่ง describe ดูฟิลด์ต่าง ๆ ที่เรากำหนดเข้าไปในตาราง
ได้ใส่ข้อมูลเข้าไปในตาราง class01 จำนวน 4 รายการ ต้องการแสดงข้อมูล ใช้คำสั่ง SQL แสดงผลดังนี้
mysql>select * from group01;
กรณีที่ข้อมูลเป็นภาษาไทย จะต้องทำให้ Command shell สามารถรองรับภาษาไทยได้เสียก่อน ให้อ่านบทความ “การติดตั้งภาษาไทยใน Dos prompt หรือ Command shell ในวินโดว์ 7” เมื่อติดตั้งภาษาไทยให้ Command shell เรียบร้อยแล้ว ให้ดูหัวข้อ ” mysql client กับภาษาไทยรหัส utf8”
MySQL server ทำงานแบบ windows service
ในทางปฏิบัติจริง ๆ เรานิยมให้ MySQL server ทำงานเป็นฉากหลัง อย่างอัตโนมัติ เมื่อเริ่ม start วินโดว์ ไม่ต้องให้ผู้ดูแลระบบมาทำการ start ด้วยมือทุกครั้งเมื่อเข้าระบบปฏิบัติการวินโดว์ หรือกล่าวว่าให้ MySQL server ทำงานในลักษณะ windows service หรือเรียกว่า “DAEMON” ในระบบ Unixการกำหนดให้ MySQL ทำงานหรือให้บริการทุกครั้งเมื่อเข้าสู่ระบบปฏิบัติการวินโดว์ ทำได้ดังนี้
- รัน Command shell โดยวิธี run as administrator
กดปุ่มวินโดว์ + r แล้วพิมพ์คำสั่ง cmd กดปุ่ม Ctl + Shift +Enter พร้อมกัน จะได้หน้าต่าง command shell ที่แสดงว่าขณะนี้ใช้งานในลักษณะของ administrator อยู่ วิธีการเปิด Window command shell ในฐานะ administrator ให้อ่านจากบทความนี้
- ใน Command shell พิมพ์คำสั่ง “C:\WebProject\mysql\bin> mysql – install คำสั่งนี้เป็นการนำ MySQL ไปใส่ไว้ใน services ของวินโดว์ เมื่อใช้ task manager เปิดดู (โดยกด CTRL + ALT + DEL พร้อม ๆ กัน และเลือกเมนู อันล่างสุด ที่เขียนไว้ว่า Task bar manager) เปิดดูที่ แท็บชื่อ services
กลับไปที่ Window Command shell พิมพ์คำสั่ง “net start mysql” เพื่อให้ MySQL service ทำงาน
เมื่อเข้าไปเปิดดูใน task manager จะเห็น การทำงานของ mysql service
ต้องการหยุดการทำงานของ mysql service ให้ใช้คำสั่ง “net stop mysql”
ต้องการจะถอดถอน service ออกจากระบบปฏิบิตการวินโดว์ พิมพ์คำสั่ง “mysqld –remove”
ถ้าเรารัน Command shell แบบปกติ จะไม่สามารถติดตั้ง service ของ MySQL ได้ จะมีข้อความปฏิเสธการติดตั้ง “Install / Remove of the Service Denied! “ ดังภาพ
การแก้ไขอีกวิธีหนึ่งก็คือ ให้เข้าไปปิด User Account Control หรือ UAC เสียก่อน ดังนี้ ไปที่ Control Panel >> User Account s >> Change User Account Control Settings
จะมีหน้าต่าง User Control Setting ให้เลื่อนสไลด์บาร์ มาที่ตำแหน่งต่ำสุด และคลิก OK วินโดว์จะให้เราทำการ restart วินโดว์ใหม่อีกครั้ง เพื่อให้การระงับการใช้งาน UAC มีผล
จากนั้นกลับไปใช้คำสั่ง “mysqld –install” ใหม่อีกครั้ง
รวมคำสั่งที่ใช้บ่อย ๆ
ถ้า MySQL server ถูกติดตั้งไว้ในคอมพิวเตอร์เครื่องอื่น ๆ (ไม่เป็น localhost) สามารถใช้ mysql client ติดต่อแบบ remote ไปยัง server ได้โดยใช้คำสั่งดังนี้mysql –h Hostname –u user –p-h ใช้ในการระบุชื่อ server ที่ติดตั้ง MySQL อาจระบุเป็น IP address ก็ได้
คำสั่งทั่วไป
status หรือ \s แสดงสถานะต่าง ๆ ของ server เช่น ขณะนี้ใครเป็นผู้ใช้งานบ้าง พอร์ตที่ใช้ติดต่อ การเข้ารหัสตัวอักษร; เครื่องหมาย semi colon เป็นการส่ง คำสั่งไปให้ server ประมวลผล ซึ่งจะเห็นอยู่ท้ายคำสั่งเสมอ
\c ย่อมาจากคำว่า cancel เป็นการยกเลิกคำสั่ง ที่กำลังพิมพ์อยู่
คำสั่งระดับ ฐานข้อมูลหรือ database
สมมติให้ dbName คือชื่อฐานข้อมูลการสร้างฐานข้อมูล |
CREATE DATABASE dbName |
CREATE DATABASE IF NOT EXISTS dbName | |
การลบฐานข้อมูล | DROP DATABASE dbName |
DROP DATABASE IF EXISTS dbName | |
การเรียกใช้ฐานข้อมูล | Use dbName |
คำสั่งระดับ ตาราง
ให้ tableName คือชื่อตารางในฐานข้อมูลการสร้างตาราง |
CREATE TABLE tableName |
CREATE TABLE IF NOT EXISTS tableName | |
การลบตาราง | DROP TABLE tableName |
DROP TABLE IF EXISTS tableName | |
แสดงตารางที่มีอยู่ในฐานข้อมูล | SHOW TABLES |
แสดงฟิลด์ที่มีอยู่ในตาราง | DESCRIBE tableName หรือ DESC tableName |
เปลี่ยนชื่อตาราง | RENAME TABLE tableName to newTableName [, tableName2 to newTableName2]… |
แก้ไขโครงสร้างตาราง | ALTER TABLE tableName MODIFY fieldName1 varchar[50] เปลี่ยนขนาดฟิลด์ fieldName1 เป็น varchar[50] |
ALTER TABLE tableName MODIFY id INT[4] NOT NULL DEFAULT ‘1’ AUTO_INCREMENT เปลี่ยนฟิลด์ id ให้เป็นแบบ AUTO_INCREMENT มีค่าโดยปริยายเป็น 1 |
|
ALTER TABLE tableName MODIFY fieldName TITNYTEXT เปลี่ยนขนาดฟิลด์ fieldName ให้เป็น TINYTEXT |
|
ALTER TABLE tableName DROP fieldName2 ลบฟิลด์ fieldName2 |
|
ALTER TABLE tableName ADD birthdate DATE เพิ่มฟิลด์ birthdate เป็นข้อมูลชนิด date |
คำสั่งระดับ record
เพิ่ม record เข้าไปในตาราง |
INSERT INTO tableName VALUES (field1Value, field2Value, … ) |
INSERT INTO tableName (field1Name, field2Name,…, fieldname) VALUES (field1Value, field2Value, …,fieldnValue ) | |
ลบ record ในตาราง | DELETE FROM tableName WHERE criteria |
ปรับปรุง record ในตาราง | UPDATE tableName SET columnName = expression WHER criteria |
แสดง record ในตาราง | SELECT field1Name, field2Name, … FROM tableName WHERE cireria ORDER BY fieldAName ASC|DESC, fieldBName ASC|DESC, … |
นำข้อมุลจาก text file ไปใส่ใสตาราง
พิมพืข้อมูลด้วย Notepad หรือ text editor ที่ถนัด คั่นระหว่างฟิลด์ด้วย tab ใช้คำสั่ง LOAD DATA INFILR มีรูปแบบการใช้งานดังนี้mysql> LOAD DATA INFILE “data.txt” INTO TABLE tableName; mysql>LOAD DATA INFILE “c:/mysql/data/data.txt” INTO TABLE tableName;
0 ความคิดเห็น:
แสดงความคิดเห็น