การที่จะสร้างตารางข้อมูล (table) จะต้องสร้างไว้ภายในฐานข้อมูล ดังนั้นเราจะต้องเลือกฐานข้อมูลที่ต้องการสร้าง table ก่อนโดยใช้คำสั่ง USE ตามด้วยชื่อฐานข้อมูล (กล่าวไว้แล้วในบทความก่อน) โดยในการสร้างตารางข้อมูลให้ใช้คำสั่ง CREATE TABLE ตามด้วยชื่อ table ที่ต้องการ และโครงสร้าง field (column) ต่าง ๆ
# รูปแบบ CREATE TABLE table_name (field_structure1, field_structure2, ...);
ซึ่งโครงสร้างของ field จะประกอบไปด้วยชื่อ field ชนิดข้อมูล data type รวมไปถึงการกำหนด Characteristic ต่าง ๆ เช่น PRIMARY KEY, INDEX เป็นต้น ซึ่งในส่วนของชนิดข้อมูลและการกำหนด characteristic ได้อธิบายไว้แล้วในหมวดหมู่ "โครงสร้างต่าง ๆ ของ MySQL"
ผมจะยกตัวอย่างหนึ่งในการสร้าง table แบบง่ายที่สุดให้ดูนะครับ ซึ่งมันจะประกอบไปด้วย 1 field เท่านั้น โดยจะสร้าง table ชื่อว่า "t" และภายในนั้นจะประกอบไปด้วย field "id" เพียง field เดียวเท่านั้น ซึ่งมีชนิดข้อมูลเป็น Integer
CREATE TABLE t (id INT);
เราสามารถกำหนด option ต่าง ๆ (หรือการกำหนด characteristic) ให้กับ field ได้ เช่น กำหนดให้ field "id" ไม่สามารถเป็นค่าว่างได้ จะต้องกำหนด NOT NULL ให้กับมันดังนี้
CREATE TABLE t (id INT NOT NULL);
ภายใน table นั้นสามารถกำหนดได้หลาย field โดยแต่ละ field จะถูกแยกจากกันด้วย comma ดังนี้
CREATE TABLE t ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, d DATE NOT NULL );
อย่างที่ผมได้กล่าวไว้ด้านบนนะครับว่า ทุก ๆ table จะต้องอยู่ภายใน database ดังนั้นเราจะต้องเลือก database ที่ต้องการสร้าง table เข้าไป ซึ่งในด้านบนผมแนะนำให้ใช้คำสั่งเลือก database โดยใช้คำสั่ง USE แต่มีอีกวิธีหนึ่งก็คือ เมื่อเราทำการสร้าง table ให้ เราใช้ชื่อ database นำหน้าตามด้วยเครื่องหมาย "." ปิดด้วยชื่อ table ที่ต้องการสร้าง ดังนี้
CREATE TABLE test.t ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, d DATE NOT NULL );
เราสามารถกำหนด INDEX ใน table ได้ในขณะสร้าง table ได้ทันที เช่น ถ้าผมกำหนดให้ field "id" มีคุณสมบัติเป็น UNIQUE และมี field "last_name" และ "first_name" เป็น INDEX ของตาราง จะต้องกำหนดดังนี้
CREATE TABLE t ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, UNIQUE (id), INDEX (last_name, first_name) );
ผมจะลงรายละเอียดเกี่ยวกับการสร้างและลบ INDEX ในบทความหน้านะครับ
ถ้าเราทำการสร้าง table ที่มันมีอยู่แล้วใน database นั้น ๆ จะทำให้เกิด error ขึ้น แต่ถ้าต้องการตรวจสอบก่อนว่ามี table นั้น ๆ ใน database นั้น ๆ หรือยังจะต้องใช้คำสั่ง IF NOT EXISTS เป็นการบ่งบอกว่าถ้ายังไม่มีชื่อ table นี้ใน database ที่เลือก ก็ให้สร้างมันขึ้นมาทันที
CREATE TABLE IF NOT EXISTS t (i INT);
ผู้สนับสนุน