คุณไม่จำเป็นต้องเพิ่ม NOT NULL ลงในฟิลด์คีย์หลักเพราะจะได้รับ NOT NULL โดยอัตโนมัติ คีย์หลักคือการรวมกันของทั้งคีย์ที่ไม่เป็นค่าว่างและคีย์ที่ไม่ซ้ำ
นี่คือตัวอย่างฟิลด์คีย์หลัก ให้เราสร้างตารางก่อน แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง NotNullAddDemo -> ( -> Id int AUTO_INCREMENT, -> PRIMARY KEY(Id) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.81 วินาที)
ในตารางด้านบน คุณไม่จำเป็นต้องเพิ่ม NOT NULL ให้กับฟิลด์คีย์หลัก เนื่องจาก MySQL จะแปลงเป็น NOT NULL ภายใน หากต้องการตรวจสอบว่าถูกต้องหรือไม่ ให้ใช้ไวยากรณ์ต่อไปนี้
DESC yourTableName;
ให้เราตรวจสอบไวยากรณ์ด้านบนเพื่อรับคำอธิบายตาราง:
mysql> อธิบาย NotNullAddDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+-------+---------+------+ -----+---------+ ----- ----+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+-------+---------+------+----+---------+------ ----+| รหัส | int(11) | ไม่ | PRI | NULL | auto_increment |+-------+---------+------+ -----+---------+------ ----------+1 แถวในชุด (0.07 วินาที)ดูคอลัมน์ Null มีค่า NO ซึ่งหมายความว่าไม่มีค่า NULL
ในการตรวจสอบ NOT NULL ให้เราแทรกระเบียน NULL ลงในตาราง ซึ่งจะทำให้มีค่า NULL แต่ทุกครั้งที่นับค่าจาก 1 แบบสอบถามเพื่อแทรกระเบียนในตาราง
mysql> แทรกลงในค่า NotNullAddDemo (NULL) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า NotNullAddDemo (NULL) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.45 วินาที)
หลังจากแทรกค่า NULL สองค่าสำหรับคีย์หลัก หากคุณพยายามแทรกค่า 1 จะเกิดข้อผิดพลาดขึ้น เนื่องจาก MySQL นับค่า NULL แรกเป็น 1 และค่า NULL ที่สองเป็น 2 เป็นต้น
ข้อผิดพลาดมีดังนี้หากคุณจะพยายามแทรก 1:
mysql> แทรกลงในค่า NotNullAddDemo(1);ERROR 1062 (23000):รายการซ้ำ '1' สำหรับคีย์ 'PRIMARY'
หากคุณใส่ค่า 3 ก็จะยอมรับ:
mysql> แทรกลงในค่า NotNullAddDemo (3) ตกลง แบบสอบถาม 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า NotNullAddDemo (NULL) แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก NotNullAddDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+| รหัส |+---+| 1 || 2 || 3 || 4 |+----+4 แถวในชุด (0.00 วินาที)