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

SQL Server มี Data Type เทียบเท่า MySQL ENUM หรือไม่?

MySQL ENUM Data Type

MySQL รองรับ ENUM โดยตรง จำกัดค่าที่รับได้ในคอลัมน์

รูปแบบใน MySQL

CREATE TABLE yourTableName (
    yourColumnName ENUM('Value1','Value2','Value3',...) DEFAULT 'Value1'
);

ตัวอย่าง MySQL

mysql> CREATE TABLE EnumInMySQL (
    -> WebCRUD ENUM('CREATE','READ','UPDATE','DELETE')
    -> DEFAULT 'CREATE'
    -> );
Query OK, 0 rows affected (0.60 sec)

SQL Server: ไม่มี ENUM ตรงๆ ใช้ CHECK Constraint แทน

SQL Server ไม่มี ENUM type ใช้ VARCHAR + CHECK CONSTRAINT แทน

รูปแบบใน SQL Server

CREATE TABLE yourTableName (
    yourColumnName VARCHAR(100) 
    CHECK (yourColumnName IN ('Value1','Value2','Value3',...))
    DEFAULT 'Value1'
);

ตัวอย่าง SQL Server

SQL Server มี Data Type เทียบเท่า MySQL ENUM หรือไม่?

การเปรียบเทียบ:

คุณสมบัติMySQL ENUMSQL Server CHECK
จัดเก็บข้อมูลเก็บเป็นตัวเลข index (1 byte)เก็บสตริงเต็มรูปแบบ
ประสิทธิภาพเร็วกว่า ประหยัดพื้นที่ช้ากว่า ใช้พื้นที่มากกว่า
ความยืดหยุ่นต้อง ALTER TABLE เพื่อเพิ่มค่าแก้ CHECK constraint ได้ง่ายกว่า
PortabilityMySQL onlyStandard SQL รองรับทุก DB

คำแนะนำ: สำหรับระบบที่ต้องการ portability ระหว่าง DB ให้ใช้ CHECK constraint หรือแยกเป็น Lookup table (Foreign Key) แทน