Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะเพิ่มคอลัมน์ NOT NULL ใน MySQL ได้อย่างไร?


คุณสามารถเพิ่มคอลัมน์ที่ไม่ใช่ค่าว่างได้ในขณะที่สร้างตารางหรือคุณสามารถใช้สำหรับตารางที่มีอยู่ได้

กรณีที่ 1 − เพิ่มคอลัมน์ที่ไม่เป็นค่าว่างในขณะที่สร้างตาราง ไวยากรณ์มีดังนี้

สร้างตาราง yourTableName( yourColumnName1 dataType NOT NULL, yourColumnName2 dataType . . . N);

แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง NotNullAtCreationOfTable -> ( -> Id int ไม่เป็น null -> Name varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.60 วินาที)

ในตารางด้านบน เราได้ประกาศ Id เป็นประเภท int ที่ไม่มีค่า NULL หากคุณใส่ค่า NULL คุณจะได้รับข้อผิดพลาด

ข้อผิดพลาดมีดังนี้

mysql> แทรกลงในค่า NotNullAtCreationOfTable (NULL,'John');ข้อผิดพลาด 1048 (23000):คอลัมน์ 'Id' ไม่สามารถเป็นค่าว่างได้

แทรกค่าอื่นที่ไม่ใช่ NULL ก็น่าจะพอรับได้

mysql> แทรกลงในค่า NotNullAtCreationOfTable (1,'Carol'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที)

แสดงบันทึกจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้

mysql> เลือก *จาก NotNullAtCreationOfTable;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 1 | Carol |+----+------- +1 แถวในชุด (0.00 วินาที)

กรณีที่ 2 − เพิ่มคอลัมน์ที่ไม่เป็นค่าว่างในตารางที่มีอยู่ ไวยากรณ์มีดังนี้

เปลี่ยนตาราง yourTableName เพิ่ม yourColumnName NOT NULL

แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง AddNotNull -> ( -> Id int, -> Name varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.43 วินาที)

นี่คือการสืบค้นข้อมูลเพื่อเพิ่มคอลัมน์ที่ไม่เป็นค่าว่างในตารางที่มีอยู่โดยใช้คำสั่ง alter

แบบสอบถามเพื่อเปลี่ยนคอลัมน์เป็นคอลัมน์ไม่ว่างมีดังต่อไปนี้ ต่อไปนี้เราจะเพิ่มคอลัมน์อายุซึ่งมีข้อจำกัดไม่เป็นโมฆะ

mysql> แก้ไขตาราง AddNotNull เพิ่ม Age int not null; Query OK, 0 แถวได้รับผลกระทบ (0.44 วินาที) ระเบียน:0 รายการซ้ำ:0 คำเตือน:0

ตอนนี้คุณสามารถตรวจสอบคำอธิบายของตารางโดยใช้คำสั่ง desc แบบสอบถามมีดังนี้

mysql> อธิบาย AddNotNull;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-------+--------------+------+----+---------+ --------+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+-------+--------------+------+ -----+---------+- ------+| รหัส | int(11) | ใช่ | | NULL | || ชื่อ | varchar(100) | ใช่ | | NULL | || อายุ | int(11) | ไม่ | | NULL | |+-------+--------------+------+----+---------+-- -----+3 แถวในชุด (0.08 วินาที)

ให้เราลองใส่ค่า NULL ลงในคอลัมน์ Age หากคุณจะลองใส่ค่า NULL ลงในคอลัมน์ Age คุณจะได้รับข้อผิดพลาด

แบบสอบถามที่จะแทรกบันทึกมีดังนี้

mysql> แทรกลงในค่า AddNotNull (1,'John', NULL);ข้อผิดพลาด 1048 (23000):คอลัมน์ 'Age' ไม่สามารถเป็นค่าว่างได้

ตอนนี้แทรกระเบียนอื่น นั่นจะไม่ทำให้เกิดข้อผิดพลาด

mysql> แทรกลงในค่า AddNotNull (NULL, NULL, 23); เคียวรีตกลง ได้รับผลกระทบ 1 แถว (0.22 วินาที)

ตอนนี้คุณสามารถแสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้

mysql> เลือก *จาก AddNotNull;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------+------+----+| รหัส | ชื่อ | อายุ |+------+------+----+| NULL | NULL | 23 |+------+------+----+1 แถวในชุด (0.00 วินาที)