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

MySQL INT สามารถเป็น NULL ได้หรือไม่?

คอลัมน์ INT ใน MySQL รองรับค่า NULL

ใช่ คอลัมน์ชนิด INT (และ numeric types อื่นๆ) สามารถเก็บค่า NULL ได้ หากไม่ได้ระบุ NOT NULL constraint

ตัวอย่างการใช้งาน

สร้างตาราง INT column ไม่มี NOT NULL:

CREATE TABLE nullableIntDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Price INT,  -- ไม่มี NOT NULL = nullable
    PRIMARY KEY(Id)
);

INSERT ค่า NULL และตัวเลข:

INSERT INTO nullableIntDemo(Price) VALUES(NULL);
INSERT INTO nullableIntDemo(Price) VALUES(100);
INSERT INTO nullableIntDemo(Price) VALUES(200);
INSERT INTO nullableIntDemo(Price) VALUES(NULL);
INSERT INTO nullableIntDemo(Price) VALUES(NULL);

ผลลัพธ์:

+----+-------+
| Id | Price |
+----+-------+
| 1  | NULL  |
| 2  | 100   |
| 3  | 200   |
| 4  | NULL  |
| 5  | NULL  |
+----+-------+

คำอธิบาย

  • INT = SIGNED INTEGER (มีเครื่องหมาย) ค่า -2,147,483,648 ถึง 2,147,483,647
  • INT NULL (default) = รองรับ NULL ได้
  • INT NOT NULL = ห้าม NULL
  • INT DEFAULT 0 = ค่าเริ่มต้น 0 (แต่ยัง INSERT NULL ได้ถ้าไม่มี NOT NULL)

NULL vs 0 vs Empty String

ค่าความหมายเก็บใน INT ได้ไหม
NULLไม่มีค่า / ไม่ทราบค่าได้ (ถ้าไม่มี NOT NULL)
0ศูนย์ (ค่าตัวเลขจริง)ได้
'' (empty string)สตริงว่างได้ (จะแปลงเป็น 0 พร้อม warning)

Best Practice

  • ใช้ NOT NULL DEFAULT 0 หากคอลัมน์ต้องมีค่าตัวเลขเสมอ
  • ใช้ NULL หาก "ไม่มีข้อมูล" มีความหมายต่างจาก "ศูนย์" (เช่น ราคายังไม่กำหนด vs ราคาฟรี)
  • หลีกเลี่ยงการเก็บ empty string ในคอลัมน์ตัวเลข