ในบทนี้จะไดเรียนรูเกี่ยวกับคําสั่งตางๆ
ใน MySQL ซึ่งเปนการรวมคําสั่งทั้งหมดไมวาจะเปนคําสั่งที่ใช
สําหรับการกําหนด (Data Definition Language), คําสั่งที่ใชสําหรับทํางานขอมูล
(Data Manipulation Language)
และคําสั่งที่ใชสําหรับการควบคุมการทํางาน
(Data Control Language)
คําสั่ง CREATE DATABASE
CREATE DATABASE demo
เปนคําสั่งสราง database ชื่อ db_name ขึ้นมาใหมในกรณีที่มี
database นั้นอยูแลว ก็จะปรากฏขาวสาร
แสดงความผิดพลาด (Error Message) Can't create database 'demo'. Database exists
คําสั่ง DROP DATABASE
DROP DATABASE demo
เปนคําสั่งลบ database ชื่อ db_name ออกไปจากระบบ
คําสั่ง CREATE TABLE
CREATE TABLE phonebook (id INT (4) NOT NULL
AUTO_INCREMENT, fname VARCHAR (35) , lname VARCHAR (35) ,
email VARCHAR (50) ,
office VARCHAR (200) , province CHAR (2) ,
PRIMARY KEY(id), UNIQUE(id),
INDEX(id)) ศูนยเทคโนโลยีสารสนเทศและการสื่อสาร สป.
การใชงานฐานขอมูล MySQL 57
โดยทั่วไปขนาดของตารางขอมูลหนึ่งๆ
จะมีขนาดไมเกิน 2G หรือ 4G ขึ้นอยูกับระบบปฏิบัติการ เรา
สามารถทําใหประหยัดเนื้อที่ไดอีกโดยการบีบอัด
(PACK) ขอมูลดัชนีซึ่งสามารถใหบีบอัดโดยกําหนดคา
PACK_KEYS=1
การบีบอัดนี้จะทําใหการทํางานชาลง แตก็ประหยัดเนื้อที่ขึ้น
และตามปกติถาผูใชไมได
กําหนดใหบีบอัดขอมูลที่เปนสตริงหรือตัวอักษรก็จะไดรับการบีบอัดขอมูลอยูแลว
สําหรับขอมูลตัวเลขคาการ
ทํางานปกติจะไมรับการบีบอัดเวนแตกําหนดการบีบอัดดวย
การใช UNION จะใชกรณีที่ตองการรวมตารางขอมูลหลายๆ
ตารางเขาดวยกันเปนอันเดียว ซึ่งจะทํางาน
กับตารางประเภท MERGE เทานั้น
คําสั่ง ALTER TABLE
ALTER TABLE phonebook ADD tel
VARCHAR(30)
ALTER TABLE เปนคําสั่งสําหรับการปรับเปลี่ยนแกไขโครงสรางของตารางขอมูลเชน
การเพิ่ม-ลบ
ฟลด, การสราง-ลบดัชนี, การเปลี่ยนประเภทขอมูลของฟลด,
การเปลี่ยนชื่อฟลดเปนตน
คําสั่ง RENAME TABLE
RENAME TABLE phonebook to phone
เปนคําสั่งเพื่อเปลี่ยนชื่อตารางขอมูลเปนชื่อใหม
คําสั่ง DROP TABLE
DROP TABLE phonebook
เปนคําสั่งเพื่อใหลบตารางขอมูลออกจากระบบ
สําหรับออปชัน RESTRICT และ CASCADE
ยังไม
สามารถงานไดในปจจุบัน
เนื่องจากเปนความสามารถที่มีแผนจะรองรับในอนาคต สําหรับการใชคําสั่ง DROP
TABLE จะตองใหความระมัดระวังในการใชงานเปนอยางยิ่งโดยเฉพาะการทํางานกับตารางขอมูลประเภท
nontransaction
เพราะจะทําการ commit การทางานโดยอ ํ ัตโนมัติ
คําสั่ง OPTIMIZE TABLE
OPTIMIZE TABLE phonebook ศูนยเทคโนโลยีสารสนเทศและการสื่อสาร สป. การใชงานฐานขอมูล MySQL
58
เปนคําสั่งสําหรับจัดระเบียบขอมูลใหเปนระเบียบ
หรือการทําดีแฟรกเมนตนั่นเองนั่นเอง เพราะถา
ตารางขอมูลมีการใชงานมานาน
มีการใชงานที่ทําใหขอมูลมีการเปลี่ยนแปลงความยาว หรือเปลี่ยนขนาดของเนื้อ
ที่เก็บขอมูลโดยเฉพาะกับขอมูลประเภทท่ียืดหยุนไปตามขอมูลเชน
VARCHAR, BLOB หรือ TEXT การใช
คําสั่ง OPTIMIZE TABLE ก็จะชวยใหมีการจัดระเบียบขอมูลใหดียิ่งขึ้น
หากปลอยระยะเวลานานๆ จะเกิด
ชองวางระหวางขอมูลการอานขอมูลของสื่อจะไมราบรื่น
ชา เนื่องจากเสียเวลาในการกระโดดขามชองวางนั้น
นั่นเอง
คําสั่ง DELETE
DELETE FROM phonebook WHERE id=4
เปนคําสั่งสําหรับลบขอมูลจากตาราง
โดยสามารถกําหนดเงื่อนไขสําหรับการลบไดซึ่งถาไมไดระบุ
เงื่อนไขจะเปนการลบขอมูลทั้งหมดออกจากตารางและถาอยูใน
AUTOCOMMIT mode (กรณีปกติทั่วไป) จะไม
สามารถทําการยกเลิกการลบครั้งนี้ได
คําสั่ง TRUNCATE
TRUNCATE phonebook
เปนคําสั่งที่ใหผลเชนเดียวกับ DELETE FROM table_name แตมีขอแตกตางดังนี้
- จะทําการดรอปตารางขอมูลกอน
แลวทําการสรางใหมซึ่งจะใหผลที่เร็วกวาการลบ
ตารางทั้งหมด
- การทํางานเปน non-transaction ไมสามารถทําการยกเลิกได
คําสั่ง SELECT
SELECT id, fname FROM phonebook
ORDER BY fname DESC
เปนคําสั่งสําหรับการแสดงผล
หรือการดึงขอมูลจากตาราง โดยสามารถกําหนดเงื่อนไข รูปแบบและ
วิธีการไดอยางหลากหลายการดึงขอมูลสามารถระบุวาจะเลือกจากตารางเดียว
หรือหลายตารางก็ได
การใชLIMIT
rows ก็จะชวยกําหนดใหทําการดึงขอมูลจากตารางไดไมเกินจํานวนแถว rows
ที่ระบุ
การใชคําสั่งคียเวิรดตามหลัง SELECT จะตองใชใหถูกตอง มีบางคียเวิรดที่ตองใชเรียงลําดับกัน
เชน
HAVING clause ตองใชตามหลัง
GROUP BY clause และใชกอน ORDER BY clause เปนตน
ตามปกติหากไมไดระบุวิธีการจัดเรียงขอมูลก็จะเปนการเรียงจากนอยไปมาก
(Ascending) หรือคียเวิรด
ASC แตถาตองการเรียงจากมากไปนอย
(Descending) ใหใชคียเวิรด DESC ศูนยเทคโนโลยีสารสนเทศและการสื่อสาร
สป. การใชงานฐานขอมูล MySQL 59
การใชคียเวิรด HAVING จะใชในกรณีรวมกับ GROUP BY ซึ่งก็เปนการกําหนดเงื่อนไขในการดึง
ขอมูลดวยคําสั่ง SELECT
SELECT id,fname FROM phonebook GROUP
BY fname HAVING id>2
คําสั่ง INSERT
INSERT INTO phonebook (id, fname,
lname, email, office, province)
VALUES (6,
'sineenat', 'phradmali', 'sineenat@health.moph.go.th', 'ศทส.',
'12')
เปนคําสั่งสําหรับการเพิ่มแถวขอมูล
หรือระเบียนใหมเขาตารางขอมูล
คําสั่ง UPDATE
UPDATE phonebook SET office= 'ศูนยเทคโนโลยีสารสนเทศและการสื่อสาร' WHERE id=6
เปนคําสั่งเพื่อทําการเปลี่ยนแปลงขอมูลในตารางใหเปนตามที่ตองการ
คําสั่ง USE
USE demo
USE เปนคําสั่งสําหรับเลือกใช database
SHOW TABLES แสดงตารางที่อยูใน database demo
ทั้งหมด
คําสั่ง FLUSH
FLUSH TABLES phonebook
เปนคําสั่งที่ใชสําหรับการลบหนวยความจําภายใน
(Internal Cache) ที่ใชงาน ทั้งนี้การใชคําสั่ง FLUSH
จะอนุญาตเฉพาะ user ที่มีสิทธิ์ (Privilege) เทานั้น
Flush_option สามารถระบุไดดังนี้
HOSTS ทําการลาง hose
cache table เพื่อปรับปรุงขอมูลของ host หรือ
client ที่
คอนเน็กตเขาใชงาน ซึ่งอาจมีการเปลี่ยนแปลง IP address หรืออื่นๆ
โดยเมื่อทําการ flush
เรียบรอยแลวก็จะอนุญาตให host นั้นๆ
ทําการศูนยเทคโนโลยีสารสนเทศและการสื่อสาร สป. การใชงานฐานขอมูล MySQL 60
คอนเน็กตเขามาใหมอีกครั้งหนึ่ง
LOGS ปดและเปด log
files ใหม
PRIVILEGES ทําการ reload
สิทธิ์ตางๆ ของ user จาก grant tables
ของ MySQL Server
TABLES ปด tables
ทั้งหมด หากตารางใดยังถูกเปดอยูก็จะถูก force ใหปดลง
คําสั่ง SHOW
SHOW DATABASES
เปนคําสั่งสําหรับแสดงรายละเอียด (Information) ของ databases, tables, columns หรือ สถานะตางๆ
ของ Server
แสดงรายละเอียดของ Databases, Tables, Columns และ Indexes
SHOW DATABASES แสดงรายชื่อ databases
ทั้งหมดในระบบฐานขอมูล
SHOW TABLES แสดงรายชื่อ
tables ทั้งหมดของ current database
SHOW OPEN TABLES แสดงรายชื่อ
tables ที่ถูกเปดอยูในปจจุบัน
SHOW COLUMNS แสดงรายละเอียดฟลดทั้งหมดใน
table นั้น
(ใหผลลัพธเชนเดียวกับคําสั่ง DESCRIBE)
SHOW FIELDS ใหผลลัพธเชนเดียวกับ
SHOW COLUMNS
SHOW INDEX แสดงรายละเอียดวามีดัชนีอะไรบางสําหรับ
table นั้นๆ
SHOW KEYS ใหผลลัพธเชนเดียวกับ
SHOW INDEX
คําสั่ง GRANT และ REVOKE
GRANT ALL PRIVILEGES ON demo TO user1@localhost WITH GRANT OPTION
REVOKE ALL PRIVILEGES ON demo FROM
user1@localhost
- คําสั่ง GRANT เปนคําสั่งสําหรับการกําหนดสิทธิ์หรือความสามารถใดๆ
ใหกับ user
- คําสั่ง REVOKE หรือคําสั่งที่ตรงกันขามกับ GRANT คือเปนการถอนหรือยกเลิกสิทธิ์ใดๆ จาก
user
การใชคําสั่ง GRANT หรือ REVOKE จะอนุญาตเฉพาะผูบริหารระบบในการกําหนดสิทธิ์ตางๆ
สําหรับ
ผูใช
ศูนยเทคโนโลยีสารสนเทศและการสื่อสาร สป. การใชงานฐานขอมูล MySQL 61
MySQL จะแบงสิทธิ์ (Privilege)
เปน 4 ระดับ คือ
1. Global
level
ระดับบนสุด ครอบคลุมทุก database รายละเอียดสําหรับสิทธิ์ของระดับนี้จะถูกเก็บไวในตาราง
mysql.user
2. Database
level
ระดับ database
ครอบคลุมเฉพาะใน database อันใดอันหนึ่ง เชน
ความสามารถในการกระทําใดๆ
ภายใน database
นั้นๆ รายละเอียดสําหรับสิทธิ์ของระดับนี้จะถูกเก็บไวในตาราง mysql.db
และ mysql.host
3. Table
level
ระดับ table
ครอบคลุมเฉพาะภายในตารางนั้นๆ เชน ความสามารถในการกระทํากับ table
นั้นๆ
สามารถทําการ select, insert, delete, update ไดหรือไม เปนตน
รายละเอียดสําหรับสิทธิ์ของระดับนี้จะถูกเก็บอยู
ในตาราง mysql.tables_priv
4. Column
level
ระดับ column
ครอบคลุมเฉพาะฟลดใดฟลดหนึ่งภายในตารางขอมูลรายละเอียดสําหรับสิทธิ์ของระดับ
นี้จะถูกเก็บอยูในตาราง mysql.columns_priv
รายละเอียด priv_type มดีังตอไปนี้
ALL PRIVILEGES FILE RELOAD
ALTER INDEX SELECT
CREATE INSERT SHUTDOWN
DELETE PROCESS UPDATE
DROP USAGE
- เราสามารถใช ALL หรือ ALL PRIVILEGES ไดอยางใดอยางหนึ่ง
- USAGE
มีความหมายเทากับ no privileges โดยใชกรณีที่เราตองการ
create user และกําหนดใหมี
สิทธิ์เปน no privileges
- การถอนสิทธิ์การ GRANT ของ user ใดๆ ใหใช priv_type
เปน GRANT OPTION
ตัวอยาง: REVOKE GRANT OPTION ON … FROM …;
- การใช priv_type สําหรับ table: SELECT, INSERT,
UPDATE, DELETE, CREATE, DROP,
GRANT, INDEX และ ALTER
- การใช priv_type สําหรับฟลด SELECT, INSERT, UPDATE
- การกาหนดส ํ ิทธิ์ระดับ database ใช ON *.*
- สําหรับ user_name สามารถระบุไดถึงโฮสตที่ใชงาน เชน mysql@localhost
หรือ root@’%’
ศูนยเทคโนโลยีสารสนเทศและการสื่อสาร สป.
การใชงานฐานขอมูล MySQL 62
ไม่มีความคิดเห็น:
แสดงความคิดเห็น