primary key ก็คือ field หรือ column ที่สร้างความ unique ให้กับแต่ละแถว (row ) หรือ record ในตาราง (table) นั้นๆ
ลักษณะต่างๆ ของ primary key
ด้วยเหตุนี้ เมื่อ table นั้นมี primary key แล้ว เราไม่สามารถมีสอง record ที่มีค่าใน primary key field ซ้ำกันได้
primary key สามารถสร้างตอน create table หรือ alter ทีหลังก็ได้ แต่ practice ที่ดีควรสร้างตอนที่สร้าง table ไปเลย
Natural keys กำหนด key จากค่าunique ที่มีอยู่แล้วของระบบนั้นๆเช่น id ของนักเรียน, id ของบัตรประชาชน
Surrogate key กำหนด key ให้มี unique ขึ้นมาใหม่โดยไม่มีความหมายใดๆ เกี่ยวข้องกับระบบนั้นๆ เลย เช่น เลขจำนวนเต็ม 1, 2,3,..n ไปเรื่อยๆ โดยเราสามารถกำหนด ให้ database server ช่วย assign ค่า id ในลักษณะให้โดยอัตโนมัติ ตอนที่เราสร้างข้อมูลหรือ insert record ใหม่
MySQL:
CREATE TABLE persons
(
id int NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255) NOT NULL,
address varchar(255),
PRIMARY KEY (id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE persons
(
id int NOT NULL PRI
MARY KEY,
first_name varchar(255) NOT NULL,
last_name varchar(255) NOT NULL,
address varchar(255)
)
สร้าง primary key แบบกำหนดชื่อของ pirmary key เอง และสร้างเป็นแบบ composite primary key คือ primary ที่สร้างจากหลาย column
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE persons
(
id int NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255) NOT NULL,
address varchar(255),
CONSTRAINT pk__person__id__last_name PRIMARY KEY (id, last_name)
)
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE persons
ADD PRIMARY KEY (Id)
สร้าง primary key แบบกำหนดชื่อเอง และสร้างเป็น composite primary key MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE persons
ADD CONSTRAINT pk__person__id__last_name PRIMARY KEY (id,last_name)
MySQL:
ALTER TABLE persons
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE persons
DROP CONSTRAINT pk__person__id__last_name
note: column ที่สร้างเป็น primary key ด้วยคำสั่ง alter จำเป็นต้องเป็น column ที่ not null
Credit