เขียนเว็บ เดอะ ซีรีส์ ตอนที่ 28: สร้างตารางภายในฐานข้อมูลด้วยภาษา SQL
ในตอนที่แล้วได้มีการอธิบายเกี่ยวกับการสร้างฐานข้อมูลด้วยภาษา SQL ในเบื้องต้น สำหรับตอนที่ 28 นี้จะอธิบายวิธีการสร้างตาราง (Table) ภายในฐานข้อมูลด้วยภาษา SQL
ให้ทำการเปิด XAMPP Control Panel แล้วเปิด phpMyAdmin เพื่อทำการสร้างฐานข้อมูล (ดู วิธีการติดตั้งและการใช้งาน XAMPP บน Windows)
เมื่อเข้า phpMyAdmin แล้ว ให้คลิกที่เมนู “SQL” เพื่อเริ่มสร้างฐานข้อมูล
สร้างฐานข้อมูลชื่อ “mydb” ให้รองรับ UTF-8 โดยใช้คำสั่ง CREATE DATABASE ดังนี้
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะสร้างฐานข้อมูล mydb สามารถตรวจสอบได้ที่เมนู “Databases” จะเห็นว่ามีฐานข้อมูล mydb อยู่ในรายการฐานข้อมูลเรียบร้อยแล้ว
หลังจากสร้างฐานข้อมูลแล้ว เราจะต้องสร้างตารางเพื่อใช้เก็บข้อมูลต่าง ๆ ลงในฐานข้อมูล
การสร้างตารางในฐานข้อมูล
การสร้างตารางในภาษา SQL จะใช้คำสั่ง CREATE TABLE อีกทั้งยังต้องสร้างคอลัมน์ (Column) ต่าง ๆ พร้อมกำหนดชนิดของข้อมูล (Data type) และความยาวที่ใช้ในการเก็บข้อมูล (Length) เพื่อใช้เก็บข้อมูลลงในแต่ละคอลัมน์ โครงสร้างของคำสั่ง CREATE TABLE มีดังนี้
CREATE TABLE ชื่อตาราง (
คอลัมน์1 datatype(length),
คอลัมน์2 datatype(length),
คอลัมน์3 datatype(length),
...
);
ถ้าต้องการสร้างตารางมากกว่า 1 ตาราง จะต้องพิมพ์คำสั่ง CREATE TABLE ดังนี้
CREATE TABLE ชื่อตาราง1 (
คอลัมน์1 datatype(length),
คอลัมน์2 datatype(length),
คอลัมน์3 datatype(length),
...
);CREATE TABLE ชื่อตาราง2 (
คอลัมน์1 datatype(length),
คอลัมน์2 datatype(length),
คอลัมน์3 datatype(length),
...
);
หมายเหตุ:
- ใน 1 ฐานข้อมูลจะมีกี่ตารางก็ได้ และใน 1 ตารางจะมีกี่คอลัมน์ก็ได้ขึ้นอยู่กับการออกแบบฐานข้อมูลของทีมพัฒนาระบบ
Data type ที่ใช้สำหรับการสร้างตารางมีอยู่หลายประเภท โดย Data type ที่มีการใช้งานอยู่หลายครั้งมีดังนี้
- Int หรือ Interger ใช้สำหรับเก็บข้อมูลเลขจำนวนเต็มไม่ว่าจะเป็นจำนวนเต็มศูนย์ จำนวนเต็มบวก หรือจำนวนเต็มลบ
- Varchar ใช้สำหรับเก็บข้อมูลทั้งตัวอักษร ตัวเลข และอักขระพิเศษต่าง ๆ
- Text จะเหมือนกับ Varchar แต่ Text ไม่ต้องกำหนด length ในการเก็บข้อมูล
- Date ใช้สำหรับเก็บข้อมูลวันที่ โดย MySQL จะเก็บข้อมูล Date เป็น ปี ค.ศ.-เดือน-วัน เช่น 1990–09–01, 2020–12–20 เป็นต้น
- Datetime ใช้สำหรับเก็บข้อมูลวันที่และเวลา โดย MySQL จะเก็บข้อมูล Datetime เป็น ปี ค.ศ.-เดือน-วัน ชั่วโมง:นาที:วินาที เช่น 1995–05–05 12:34:56, 2020–12–20 23:34:45 เป็นต้น
ก่อนที่จะสร้างตารางเราต้องเลือกฐานข้อมูลที่ต้องการจะสร้างตารางเสียก่อน ซึ่งตอนนี้มีฐานข้อมูล mydb ที่ถูกสร้างไว้ก่อนแล้ว ให้ไปที่หน้าแรกของ phpMyAdmin เลือกเมนู “Databases” แล้วคลิกที่ฐานข้อมูล mydb เพื่อเข้าใช้งานฐานข้อมูล โดยหน้าตาภายในฐานข้อมูล mydb เป็นดังภาพด้านล่างนี้
จากนั้นให้เลือกที่เมนู SQL แล้วสร้างตารางโดยตั้งชื่อว่า color_shades เพื่อเก็บข้อมูลชื่อเฉดสี โดยใช้คำสั่ง CREATE TABLE ตามโค้ดด้านล่างนี้
CREATE TABLE color_shades (
color_shades_id int(3),
color_shades_name_en varchar(20),
color_shades_name_th varchar(30)
);
คำอธิบาย:
- color_shades_id เป็นคอลัมน์ที่ใช้เก็บลำดับเฉดสี โดยกำหนดให้ data type เป็น int และ length เท่ากับ 3
- color_shades_name_en เป็นคอลัมน์ที่ใช้เก็บชื่อเฉดสีภาษาอังกฤษ โดยกำหนดให้ data type เป็น varchar และ length เท่ากับ 20
- color_shades_name_th เป็นคอลัมน์ที่ใช้เก็บชื่อเฉดสีภาษาไทย โดยกำหนดให้ data type เป็น varchar และ length เท่ากับ 30
สังเกตที่ช่อง “Run SQL query/queries” ของเมนู “SQL” จะพบว่าเราจะพิมพ์คำสั่ง CREATE TABLE อยู่ภายใต้ฐานข้อมูล mydb (กรอบสีแดงตามภาพ)
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะสร้างตาราง color_shades ภายในฐานข้อมูล mydb และจะเห็นว่าตาราง color_shades ได้ถูกสร้างขึ้นมาเรียบร้อยแล้ว (กรอบสีแดงตามภาพ)
เมื่อคลิกที่เมนู “Structure” (กรอบสีแดงตามภาพ) จะเห็นว่าในฐานข้อมูล mydb มีตาราง color_shades
และเมื่อคลิก “Structure” ในตาราง color_shades (กรอบสีแดงตามภาพ) จะพบกับรายละเอียดโครงสร้างของตารางนี้
นอกจากนี้ภายในคำสั่ง CREATE TABLE ยังสามารถกำหนดรหัสอักขระให้กับตาราง และ/หรือคอลัมน์ต่าง ๆ ภายในตารางได้ด้วยคำสั่ง CHARACTER SET และ COLLATE ดังนี้
CREATE TABLE color_shades (
color_shades_id int(3),
color_shades_name_en varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
color_shades_name_th varchar(30)
) CHARACTER SET tis620 COLLATE tis620_thai_ci;
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะสร้างตาราง color_shades ให้ทุกคอลัมน์รองรับ tis620_thai_ci ยกเว้นคอลัมน์ color_shades_name_en ที่จะรองรับ latin1_swedish_ci โดยที่ตัวฐานข้อมูล mydb ยังคงรองรับ utf8_unicode_ci เหมือนเดิม
ข้อสังเกต:
- คำสั่ง CHARACTER SET และ COLLATE ที่ใช้กำหนดรหัสอักขระให้กับฐานข้อมูล ตาราง หรือคอลัมน์ จะไม่มีผลกับคอลัมน์ใดก็ตามที่กำหนดให้ Data Type รองรับเฉพาะตัวเลข เช่น Int, Float, Decimal เป็นต้น หรือคอลัมน์ใดก็ตามที่กำหนดให้ Data Type รองรับข้อมูลที่เกี่ยวกับวันที่และเวลา เช่น Date, Datetime, Timestamp เป็นต้น
การแก้ไขโครงสร้างตาราง
การแก้ไขโครงสร้างตารางจะใช้คำสั่ง ALTER TABLE โดยมีโครงสร้างคำสั่งดังนี้
ALTER TABLE ชื่อตาราง ตามด้วยสิ่งที่ต้องการแก้ไข เช่น แก้ไขรหัสอักขระ เป็นต้น;
ถ้ามีตารางมากกว่า 1 ตารางในฐานข้อมูล เราสามารถพิมพ์คำสั่ง ALTER TABLE ได้ดังนี้
ALTER TABLE ชื่อตาราง1 ตามด้วยสิ่งที่ต้องการแก้ไข เช่น แก้ไขรหัสอักขระ เป็นต้น;
ALTER TABLE ชื่อตาราง2 ตามด้วยสิ่งที่ต้องการแก้ไข เช่น แก้ไขรหัสอักขระ เป็นต้น;
แก้ไขตาราง color_shades ให้ทุกคอลัมน์ในตารางรองรับรหัสอักขระ latin1 แบบ latin1_swedish_ci โดยพิมพ์คำสั่งดังนี้
ALTER TABLE color_shades CONVERT TO CHARACTER SET latin1 COLLATE latin1_swedish_ci;
คำอธิบาย:
- COVERT TO เป็นคำสั่งที่ใช้ในการเปลี่ยนแปลงให้กับทั้งตาราง
- การกำหนดรหัสอักขระและประเภทรหัสอักขระยังคงใช้คำสั่ง CHARACTER SET และ COLLATE
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะแก้ไขให้ตาราง color_shades และทุกคอลัมน์ภายในตารางเปลี่ยนมารองรับ latin1_swedish_ci
การเพิ่ม/ลบ คอลัมน์ในตาราง
การเพิ่มคอลัมน์ในตารางจะสามารถเพิ่มได้ทีละ 1 คอลัมน์ หรือมากกว่า 1 คอลัมน์ก็ได้ โดยจะต้องพิมพ์คำสั่ง ALTER TABLE ก่อนแล้วตามด้วยคำสั่ง ADD มีโครงสร้างคำสั่งดังนี้
ALTER TABLE ชื่อตาราง
ADD ชื่อคอลัมน์1 datatype(length),
ADD ชื่อคอลัมน์2 datatype(length);
ถ้าต้องการเพิ่มคอลัมน์ชื่อ color_shade_type ให้กับตาราง color_shades ให้พิมพ์คำสั่งดังนี้
ALTER TABLE color_shades
ADD color_shade_type varchar(20);
เราสามารถเพิ่มคำสั่งนี้ลงในเมนู SQL ของฐานข้อมูล mydb หรือในเมนู SQL ของตาราง color_shades ก็ได้
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะเพิ่มคอลัมน์ color_shade_type โดยกำหนดให้ Data type เป็น Varchar ที่มี length เท่ากับ 20 และเมื่อคลิกเข้ามาในตาราง color_shades ก็จะพบกับคอลัมน์ color_shade_type
การลบคอลัมน์ในตารางจะสามารถลบได้ทีละ 1 คอลัมน์ หรือมากกว่า 1 คอลัมน์ก็ได้ โดยจะต้องพิมพ์คำสั่ง ALTER TABLE ก่อนแล้วตามด้วยคำสั่ง DROP COLUMN มีโครงสร้างคำสั่งดังนี้
ALTER TABLE ชื่อตาราง
DROP COLUMN ชื่อคอลัมน์1,
DROP COLUMN ชื่อคอลัมน์2;
ถ้าต้องการลบคอลัมน์ color_shade_type ของตาราง color_shades ให้พิมพ์คำสั่งดังนี้
ALTER TABLE color_shades
DROP COLUMN color_shade_type;
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะถามว่าต้องการลบคอลัมน์ color_shade_type ออกจากตาราง color_shades หรือไม่ ให้คลิก OK เพื่อลบคอลัมน์
การแก้ไขโครงสร้างคอลัมน์ในตาราง
การแก้ไขโครงสร้างคอลัมน์ในตารางจะสามารถแก้ไขได้ทีละ 1 คอลัมน์ หรือมากกว่า 1 คอลัมน์ก็ได้ โดยจะต้องพิมพ์คำสั่ง ALTER TABLE ก่อนแล้วตามด้วยคำสั่ง MODIFY COLUMN (สำหรับ MySQL) มีโครงสร้างคำสั่งดังนี้
ALTER TABLE ชื่อตาราง
MODIFY COLUMN ชื่อคอลัมน์1 datatype เดิม/ใหม่(length เดิม/ใหม่) ตามด้วยสิ่งที่อยากแก้ไขเพิ่มเติม เช่น รหัสอักขระเดิม/ใหม่ เป็นต้น,
MODIFY COLUMN ชื่อคอลัมน์2 datatype เดิม/ใหม่(length เดิม/ใหม่) ตามด้วยสิ่งที่อยากแก้ไขเพิ่มเติม เช่น รหัสอักขระเดิม/ใหม่ เป็นต้น;
ถ้าต้องการแก้ไขคอลัมน์ color_shades_name_th ให้มี Data type เป็น Text และรองรับ tis620_thai_ci ให้พิมพ์คำสั่งดังนี้
ALTER TABLE color_shades
MODIFY COLUMN color_shades_name_th text CHARACTER SET tis620 COLLATE tis620_thai_ci;
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะเปลี่ยนให้คอลัมน์ color_shades_name_th มี Data type เป็น Text และรองรับ tis620_thai_ci
การลบตาราง
การลบตารางจะใช้คำสั่ง DROP TABLE โดยมีโครงสร้างคำสั่งดังนี้
DROP TABLE ชื่อตาราง ตามด้วยสิ่งที่ต้องการแก้ไข เช่น แก้ไขรหัสอักขระ เป็นต้น;
ถ้ามีตารางมากกว่า 1 ตารางในฐานข้อมูล เราสามารถพิมพ์คำสั่ง DROP TABLE ได้ดังนี้
DROP TABLE ชื่อตาราง1;
DROP TABLE ชื่อตาราง2;
ถ้าต้องการลบตาราง color_shades ให้พิมพ์คำสั่งดังนี้
DROP TABLE color_shades;
หลังจากนั้นคลิกปุ่ม “Go” ระบบจะลบตาราง color_shades
IF NOT EXISTS
IF NOT EXISTS จะใช้เป็นเงื่อนไขในการตรวจสอบว่ามีตารางนี้อยู่หรือไม่
ถ้าพิมพ์คำสั่งภาษา SQL ตามตัวอย่างด้านล่างนี้
CREATE TABLE IF NOT EXISTS color_shades (
color_shades_id int(3),
color_shades_name_en varchar(20),
color_shades_name_th varchar(30)
);
ระบบจะตรวจสอบก่อนว่ามีตารางชื่อ color_shades อยู่ในระบบหรือไม่ ถ้าไม่มีระบบจะทำการสร้างตารางชื่อ color_shades ขึ้นมาให้
หมายเหตุ:
- IF NOT EXISTS ใช้เป็นเงื่อนไขในการตรวจสอบการมีอยู่ทั้งของฐานข้อมูลและของตารางก่อนทำการสร้าง
ข้อควรระวัง
- ในการจัดการฐานข้อมูลจะต้องวางแผนก่อนว่าควรจะมีจำนวนกี่ตารางภายใน 1 ฐานข้อมูล
- ในการจัดการตารางจะต้องวางแผนก่อนว่าควรจะมีจำนวนกี่คอลัมน์ภายใน 1 ตาราง และต้องกำหนดว่าแต่ละคอลัมน์จะมี Data type อะไร และ Length เท่าไหร่
- ต้องกำหนดโครงสร้างของตารางและคอลัมน์ให้เสร็จเรียบร้อยก่อนที่จะดำเนินการเพิ่ม/ลบข้อมูลลงในตาราง
สรุป
- การสร้างตารางในภาษา SQL จะใช้คำสั่ง CREATE TABLE อีกทั้งยังต้องสร้างคอลัมน์ (Column) ต่าง ๆ พร้อมกำหนดชนิดของข้อมูล (Data type) และความยาวที่ใช้ในการเก็บข้อมูล (Length) เพื่อใช้เก็บข้อมูลลงในแต่ละคอลัมน์
- การแก้ไขโครงสร้างตารางจะใช้คำสั่ง ALTER TABLE
- การเพิ่มคอลัมน์ในตารางจะต้องพิมพ์คำสั่ง ALTER TABLE ก่อนแล้วตามด้วยคำสั่ง ADD
- การลบคอลัมน์ในตารางจะต้องพิมพ์คำสั่ง ALTER TABLE ก่อนแล้วตามด้วยคำสั่ง DROP COLUMN
- การแก้ไขโครงสร้างคอลัมน์ในตารางจะต้องพิมพ์คำสั่ง ALTER TABLE ก่อนแล้วตามด้วยคำสั่ง MODIFY COLUMN (สำหรับ MySQL)
- การลบตารางจะใช้คำสั่ง DROP TABLE
- IF NOT EXISTS ใช้เป็นเงื่อนไขในการตรวจสอบการมีอยู่ทั้งของฐานข้อมูลและของตารางก่อนทำการสร้าง