How to create innodb table in MySQL
หลังจากทำการติดตั้ง InnoDB Engine เรียบร้อยแล้ว ก็มาลองดูการสร้างตารางที่มี Type เป็น InnoDB กันบ้างนะคะ
ตัวอย่างการสร้างตารางแบบ InnoDB
1. เข้า http://localhost/phpMyAdmin/
2. สร้างฐานข้อมูล โดยในส่วนของ Create new database ให้ใส่ ชื่อฐานข้อมูล และรูปแบบ (ในที่นี้ใส่ test เป็นชื่อฐานข้อมูล และเลือก รูปแบบ utf8_unicode_ci) จากนั้นกด Create
3. เลือกแทบ SQL เพื่อเตรียมที่จะใส่คำสั่ง SQL ในการสร้างตาราง
4. ทดสอบโดยทำการ copy โค้ดด้านล่างไปวางแล้วกด Go
CREATE TABLE `profiles` (
`id` int(11) NOT NULL auto_increment,
`content` mediumtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`profile_id` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ที่มาของ code : http://www.ryebreaddesign.com/articles/posts/view/7
5. ทำการ insert ข้อมูล โดยการนำโค้ดด้านล่างไปวางในส่วน SQL จากนั้นกด Go
INSERT INTO `users` (`id` ,`name` ,`profile_id`)
VALUES (NULL , ‘John Doe’, ‘7’);
INSERT INTO `profiles` (`id` ,`content`)
VALUES (‘7’, ‘John Doe is from Seattle and is 36 years old. ‘);
6. เปิด Structure ของ users แล้วเลือกปุ่ม index (ปุ่มที่เป็นรูปสายฟ้า)
7. จากนั้นเลือก Relation view
8. เลือกการเชื่อมโยงและข้อกำหนด (ในที่นี้เลือก profiles->id , ON DELETE CASCADE, ON UPDATE CASCADE ) จากนั้นกด SAVE
โดย CASCADE คือ การกระทําแบบต่อเนื่อง , RESTRICT คือ การกระทําแบบมีข้อจํากัด ,
SET NULL คือ การกระทําโดยการใส่ค่าว่าง , NO ACTION คือ ไม่ต้องกระทำใดๆเลย
9. ลองใส่ข้อมูลเข้าไปอีกเพื่อที่จะได้เห็นภาพชัดเจนมากยิ่งขึ้น
INSERT INTO `test`.`users` (`id`, `name`, `profile_id`)
VALUES (‘3’, ‘Nongoffna’, ‘5’), (‘4’, ‘DonJai’, ‘6’);
INSERT INTO `test`.`profiles` (`id`, `content`)
VALUES (‘5’, ‘My name is Nongoffna.’), (‘6’, ‘Don-jai.com is my blog’);
10. ทำการทดสอบการเชื่อมโยงโดยการลบ John Doe ในส่วนของ Profile (กด กากบาทสีแดงในรูปซ้ายมือ) จะได้ผลดังนี้
11. จากผลจะได้ว่า user ของ John Doe ในตาราง user จะถูกลบไปด้วยเนื่องจากการกำหนดรูปแบบการเชื่อมโยงแบบ CASCADE ซึ่งเราเลือกการเชื่อมโยง profiles->id (ถ้าหากทำการลบ John Doe ในฝั่งของ user ข้อมูลในฝั่งของ profile จะไม่ถูกลบไปด้วย)
อ้างอิง
– http://www.ryebreaddesign.com/articles/posts/view/7
– http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
– http://www.mysqlfaqs.net/mysql/Table-Types-or-Storage-Engines/InnoDB-Engine
Leave a comment