StepCoding

การกำหนด Index ในขณะที่สร้าง Table

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

การกำหนด index ขณะที่เราสร้าง table (โดยใช้คำสั่ง CREATE TABLE) เราจะต้องกำหนด keyword ตามชนิดของ index ที่ได้กล่าวไว้ในบทความที่แล้วครับ และตามด้วยชื่อ field ต่าง ๆ ที่ต้องการกำหนดให้เป็น index ชนิดนั้น ๆ ภายในวงเล็บ เช่น ถ้าผมต้องการสร้าง table "Employee" โดยมี field ต่าง ๆ แต่ต้องการกำหนดให้ field "WorkingDate" เป็น Index จะต้องใช้คำสั่งดังนี้

CREATE TABLE Employee
(
	ID	INT NOT NULL,
	LastName	CHAR(30) NOT NULL,
	FirstName	CHAR(30) NOT NULL,
	PostCode	CHAR(5) NOT NULL,
	WorkingDate DATE NOT NULL,
	INDEX (WorkingDate)
);

เราอาจจะใช้ keyword KEY แทน INDEX ได้ เพราะมีความหมายเหมือน กัน

ในกรณีที่ต้องการกำหนดหลาย ๆ field เป็น INDEX เพียงตัวเดียว จะต้องแยกแต่ละ field ด้วย comma เช่น ถ้าต้องการกำหนดให้ field "LastName" และ "FirstName" เป็น INDEX ต้องกำหนดดังนี้

CREATE TABLE Employee
(
	ID	INT NOT NULL,
	LastName	CHAR(30) NOT NULL,
	FirstName	CHAR(30) NOT NULL,
	PostCode	CHAR(5) NOT NULL,
	WorkingDate DATE NOT NULL,
	INDEX (LastName, FirstName)
);

ในกรณีที่เราต้องการกำหนด INDEX หลาย ๆ ตัว (ต่างจากตัวอย่างด้านบนเนื่องจาก ตัวอย่างด้านบนเป็น การกำหนดหลาย ๆ ฟิลด์ใน INDEX เดียว แต่ตัวอย่างต่อไปนี้จะเป็นการกำหนด INDEX หลาย ๆ ตัว

CREATE TABLE Employee
(
	ID	INT NOT NULL,
	LastName	CHAR(30) NOT NULL,
	FirstName	CHAR(30) NOT NULL,
	PostCode	CHAR(5) NOT NULL,
	WorkingDate DATE NOT NULL,
	INDEX (LastName, FirstName),
	INDEX (WorkingDate)
);

ถ้าต้องการสร้าง INDEX ชนิด UNIQUE จะต้องใช้ keyword UNIQUE แทน INDEX เช่น ถ้าเราต้องการป้องกันการกำหนดค่าที่ซ้ำกันใน field "ID" เราก็จะต้องกำหนดให้ "ID" เป็น index ประเภท UNIQUE

CREATE TABLE Employee
(
	ID	INT NOT NULL,
	LastName	CHAR(30) NOT NULL,
	FirstName	CHAR(30) NOT NULL,
	PostCode	CHAR(5) NOT NULL,
	WorkingDate DATE NOT NULL,
	UNIQUE (ID)
);

PRIMARY KEY เป็นชนิดของ index ที่คล้าย ๆ กับ UNIQUE แต่มีข้อ แตกต่างอยู่เพียง 2 อย่างเท่านั้นคือ

  • UNIQUE สามารถเป็นค่า NULL ได้ แต่ PRIMARY KEY ไม่สามารถทำได้ ถ้าเราต้องการกำหนดให้ field นั้น ๆ มีค่าที่ไม่ซ้ำกันแต่ต้องการให้มันสามารถเป็นค่า NULL ได้ จะต้องเลือกใช้ UNIQUE
  • ไม่สามารถมีหลาย ๆ UNIQUE index ได้ภายในตารางเดียว

ในการที่จะกำหนด index field ใด ๆ ให้เป็น primary key จะต้องใช้ keyword PRIMARY KEY โดยถ้ากำหนดให้เป็น index ประเภทนี้ จะไม่ สามารถกำหนดค่าให้กับ field นั้น ๆ เป็นค่า NULL ได้

ผู้สนับสนุน