Constraints คือ ข้อบังคับหรือเงื่อนไขในการอนุญาติให้เก็บเฉพาะข้อมูลที่เหมาะสมลงในฐานข้อมูลเพื่อให้การเลือกข้อมูลจากฐานข้อมูลเป็นไปอย่างถูกต้อง
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
How to specify them?
วิธีใช้งาน
CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);
- NOT NULL - บ่งบอกว่าใน column จะไม่สามารถเก็บค่า NULL ไว้
- UNIQUE - กำหนดให้แต่ละ row ของ column จะเป็นค่าที่ไม่ซ้ำกัน
- PRIMARY KEY - เป็นการกำหนดให้ column นั้นไม่เป็นค่า NULL และมีค่าที่ไม่ซ้ำกัน ช่วยในการการค้นหาและบันทึกข้อมูุลในตารางได้ง่ายและรวดเร็ว
- FOREIGN KEY - เป็นการกำหนดค่าในตารางหนึ่งอ้างอิงไปยังค่าตารางอื่นมีความสัมพันธ์กัน
- CHECK - เช็คค่าใน column ว่าเป็นไปตามที่กำหนดไว้
- DEFAULT - ระบุค่าเริ่มต้นใน column
ทดลอง
NOT NULL , CHECK , DEFAULT
รูปภาพแสดงการสร้างตารางและรายละเอียด |
ทำการสร้างตารางใหม่ขึ้นมา โดยกำหนดให้ name และ lastname ไม่เป็น NULL และกำหนด check ให้ age ต้องมีค่ามากกว่า 16 และตั้งค่า default ให้ married ให้เป็น N
รูปภาพแสดงการใส่ข้อมูลลงตาราง |
สังเกตว่าถ้าเราไม่พิม name หรือ lastname จะทำให้ค่าเริ่มต้นเป็น default ซึ่งก็คือ NULL ทำให้ไม่สามารถใส่ข้อมูลได้
รูปภาพแสดงการใส่ข้อมูลแบบปกติ |
ทดลองใส่ค่าปกติลงไปในตาราง
รูปภาพแสดงการใส่ข้อมูลโดยไม่ใส่ married |
ทดลองไม่ใส่ค่า married ลงไป ทำให้ข้อมูลเป็นค่า Default ซึ่งจะกลายเป็น N ตรงช่อง married ตามที่เราได้กำหนดไว้ตอนแรก
ปัญหาที่พบ
รูปภาพแสดงการใส่ค่า age น้อยกว่า 16 |
UNIQUE , PRIMARY KEY
รูปภาพแสดงการสร้างตาราง employee |
ทำการสร้าง Table ใหม่ขึ้นมา โดยกำหนดให้ Column employee_id เป็น primary key โดย primary key จะทำให้ Column นั้นเป็น Not NULL เสมอและ phone_number เป็น unique
รูปภาพแสดงการใส่ค่าซ้ำลงไป |
ทดสอบใส่ค่าที่ employee_id เดิมลงไปจะเห็นว่าไม่สามารถเพิ่มข้อมูลได้เพราะ Column employee_id เป็น primary key ต้องการค่าที่ไม่ซ้ำ ส่วนที่ Column phone_number ก็ไม่สามารถใส่ค่าซ้ำได้เช่นกันเพราะเป็น unique
รูปภาพแสดงการใส่ค่าโดยไม่ใส่ Phone_number |
ทดสอบใส่ค่า name สามารถซ้ำกันได้เพราะไม่ได้กำหนด Constraints ให้เป็น Primary key หรือ Unique ส่วน Column Phone_Number ที่กำหนด Constraints ให้เป็น Unique สามารถใส่ค่า NULL ลงไปได้
FOREIGN KEY
ทำการสร้างตารางขึ้นมาใหม่ โดยสร้างตารางชื่อ product และ orders โดยตาราง orders จะมี foreign key ที่ตัว product_id และชี้ไปยัง id ในตาราง product เพื่อเป็นการอ้างอิงข้อมูล
รูปภาพแสดงรายละเอียดตารางทั้ง 2 |
รูปภาพแสดงข้อมูลทั้งที่ใส่ลงไปทั้งสองตาราง |
ทดลองใส่ข้อมูลลงไปทั้งสองตาราง
ทดลองใส่ค่าที่ไม่มีในตาราง product |
ถ้าเราใส่ค่า product_id ที่ไม่มีอยู่ในตาราง product ลงไปในตาราง orders จะไม่สามารถใส่ค่าลงไปได้ เนื่องจากเรามีการกำหนดให้มีความสัมพันธ์กันแบบ foreign key
อ้างอิง
http://code.function.in.th/sqlserver/data-type
http://www.w3schools.com/sql/sql_constraints.asp