StepCoding

การสร้างตารางข้อมูล (Create Table)

อ่าน [12983] หมวดหมู่: การสร้างฐานข้อมูล

การที่จะสร้างตารางข้อมูล (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);

ผู้สนับสนุน