Thaimisc.com : PHP กับฐานข้อมูล MySQL (20)
ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us | Colocation | Web Hosting | เปิดร้านค้าฟรี


Category : Php Developer Print Article Only Print Aticle With Comment
PHP กับฐานข้อมูล MySQL (20)
เขียนโดย เดอะกาฝากไดอารี่ (ball@bbznet.com) , 25-06-2004
ปัญหาสำคัญของคนที่เขียนโปรแกรมก็คือ เขียนๆ ไป โค้ดเริ่มวุ่นๆ ยิ่งโปรแกรมซับซ้อน ยิ่งทำให้งง... วันนี้มานั่งแก้โค้ดสำหรับสร้างกราฟจากข้อมูลในฐานข้อมูล ปัญหาคือข้อมูลกราฟแสดงผิดพลาด พอแก้ๆ ไปกลับพบว่า SQL Statement ที่เขียนไป มันไม่ถูกต้อง เหอๆ ต้องมานั่งแก้ให้วุ่นวายอีก... ก็เลยอยากจะเตือนๆ เอาไว้นะครับ ว่าเขียนโปรแกรมเนี่ย มันเหมือนงานศิลปะ จะใจร้อนไม่ได้เด็ดขาด เพราะการที่ใจร้อน อาจจะทำให้เรามองอะไรบางอย่างข้ามไป

เอาละ!! ตอนที่แล้วนั้นเราได้ทำการเพิ่มฟิลด์ชื่อ eid เข้าไปยังตาราง employee เป็นที่เรียบร้อยแล้ว และเราก็ได้ SQL Statement มาว่า

ALTER TABLE `employee` ADD `eid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

มันหมายความว่ายังไงเอ่ย?!?

เรียนรู้คำสั่ง SQL กันอีกแล้ว... มารู้จัก ALTER TABLE กัน :)
คำสั่ง ALTER TABLE มีเอาไว้เพื่อใช้จัดการเปลี่ยนแปลงโครงสร้างของตารางในฐานข้อมูลครับ ซึ่งไม่ได้มีเพียงแค่การเพิ่มฟิลด์เท่านั้นนะครับ แต่รวมไปถึงการลดจำนวนฟิลด์ลง (ลบฟิลด์ที่ไม่ต้องการออก) หรือแก้ไขคุณสมบัติต่างๆ ของฟิลด์ ซึ่งรวมไปถึงชื่อด้วย หรือแม้แต่การเปลี่ยนชื่อของตารางเองก็ตาม

โครงสร้างของคำสั่งหลักๆ ก็คือ

ALTER TABLE ชื่อตาราง

จากนั้นก็ตามด้วยคำสั่งที่เราต้องการดำเนินการต่างๆ ครับ อันได้แก่

ADD ชื่อฟิลด์ คุณสมบัติของฟิลด์ [AFTER ชื่อฟิลด์/FIRST] - เป็นการเพิ่มฟิลด์เข้าไปในตาราง โดยที่ขาดไม่ได้คือคุณสมบัติของฟิลด์ ซึ่งหลักๆ ก็คือ ชนิดของฟิลด์ และขนาดของฟิลด์นั่นเอง (ส่วนพวกแอตทริบิวต์ต่างๆ หรือการกำหนด key ไม่จำเป็นก็ได้) และเราสามารถกำหนดได้ว่าจะเพิ่มฟิลด์นี้ หลังจากฟิลด์ชื่ออะไร... หากไม่กำหนด ก็จะเป็นการเพิ่มฟิลด์ต่อ ณ จุดท้ายสุด... แต่หากต้องการเพิ่มเป็นฟิลด์แรกสุด เราก็ใช้แอตทริบิวต์ว่า FIRST นั่นเอง

ดังนั้นคำสั่ง

ALTER TABLE `employee` ADD `eid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

จึงมีความหมายว่า

เปลี่ยนแปลงโครงสร้างของตารางชื่อ employee โดยเพิ่มฟิลด์ชื่อ eid ที่มีชนิดเป็น INT และมีแอตทริบิวต์เป็น UNSIGNED, NOT NULL, AUTO_INCREMENT และเป็น primary key เข้าไป ณ จุดแรกสุดของตาราง

นั่นเองครับ...

DROP ชื่อฟิลด์ - เป็นการลบฟิลด์ออกจากตารางนั่นเอง... คำสั่งนี้ไม่มีอะไรมากมาย สั่งกันสั้นๆ ดร็อป คือ ดร็อป (สำหรับคนเรียนมหาวิทยาลัย คำคำนี้ อาจจะอ่านแล้วสะเทือนใจนิดๆ... ผมเองก็สะเทือนใจนะ ดร็อปมาเยอะเหมือนกัน กว่าจะเรียนจบ ฮ่า ฮ่า)

สมมติว่าเราต้องการจะลบฟิลด์ eid ทิ้ง เราก็แค่พิมพ์โค้ดเป็น

ALTER TABLE `employee` DROP `eid`

เท่านั้นเองครับ...

CHANGE ชื่อฟิลด์ที่ต้องการเปลี่ยน ชื่อฟิลด์ชื่อใหม่ คุณสมบัติใหม่ของฟิลด์ - อันนี้ยาวหน่อยครับ เป็นเรื่องของการเปลี่ยนแปลงฟิลด์ โดยทำได้ทั้งการเปลี่ยนชื่อฟิลด์ ไปจนถึงการเปลี่ยนคุณสมบัติของฟิลด์... ทั้งนี้ หากเราต้องการเปลี่ยนแค่คุณสมบัติของฟิลด์ก็ตามที เราก็ยังต้องระบุทั้ง ชื่อฟิลด์ที่ต้องการเปลี่ยน และ ชื่อฟิลด์ชื่อใหม่ อยู่ดีนะครับ แต่ให้ระบุเป็นชื่อเดียวกัน

เช่น

ALTER TABLE `employee2` CHANGE `eid` `eid` VARCHAR( 10 ) NOT NULL

แบบนี้ก็เท่ากับเปลี่ยนฟิลด์ชื่อ eid ไปเป็นฟิลด์ชนิด VARCHAR ขนาด 10 ตัวอักษร ที่มีคุณสมบัติเป็น NOT NULL นั่นเอง

RENAME ชื่อตารางใหม่ - อันนี้เอาไว้เปลี่ยนชื่อตารางครับ

เช่น

ALTER TABLE `employee` RENAME `yahoo`

ก็จะหมายความว่า จะเปลี่ยนชื่อตารางจาก employee ไปเป็น ตารางชื่อ yahoo แทน

ว่าแต่ว่าทำไมเราต้องมาเรียนรู้คำสั่งนี้ด้วยล่ะ?!? มี phpMyAdmin คอยช่วยอยู่แล้วไม่น่าจะติดขัดอะไรนี่นา... ตอนหน้าจะมาเล่าสู่กันอ่านครับ

(ติดตามตอนต่อไป)

<- Back | Next ->

ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us
Copyright 1999-2006 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com