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

MySQL ต้องระบุขนาด VARCHAR เสมอ ไม่สามารถสร้างตารางโดยไม่กำหนดขนาดได้

ใน MySQL ต้องระบุขนาด (length) ของ VARCHAR เสมอ ไม่สามารถสร้างคอลัมน์ VARCHAR โดยไม่กำหนดขนาดได้ จะเกิด Syntax Error ทันที

ทดสอบ: สร้างตารางไม่ระบุขนาด VARCHAR

mysql> create table DemoTable1821 ( 
    -> Id int, 
    -> FirstName varchar, 
    -> LastName varchar 
    -> ); 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', LastName varchar )' at line 4

แก้ไข: ระบุขนาด VARCHAR

mysql> create table DemoTable1821 ( 
    -> Id int, 
    -> FirstName varchar(10), 
    -> LastName varchar(10) 
    -> ); 
Query OK, 0 rows affected (0.00 sec)

เพิ่มข้อมูลทดสอบ

mysql> insert into DemoTable1821 values(1,'John','Smith'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1821 values(2,'John','Doe'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1821 values(3,'Adam','Smith'); Query OK, 1 row affected (0.00 sec)

แสดงผลลัพธ์

mysql> select * from DemoTable1821;
+------+-----------+----------+
| Id   | FirstName | LastName |
+------+-----------+----------+
|    1 | John      | Smith    |
|    2 | John      | Doe      |
|    3 | Adam      | Smith    |
+------+-----------+----------+
3 rows in set (0.00 sec)

ข้อจำกัด VARCHAR ใน MySQL

VARCHAR vs CHAR

เวอร์ชันขนาดสูงสุด (Bytes)หมายเหตุ
MySQL 5.0.3+65,535แบ่งปันกับคอลัมน์อื่นในแถวเดียวกัน
ก่อน 5.0.3255เก่ามาก ไม่ควรพบแล้ว
ลักษณะVARCHAR(n)CHAR(n)
จัดเก็บความยาวจริง + 1-2 bytesคงที่ n bytes (pad spaces)
เหมาะสำหรับความยาวแปรผัน (ชื่อ, อีเมล, ที่อยู่)ความยาวคงที่ (รหัสไปรษณีย์, ISO code)
Performanceดิวนพื้นที่ แต่อาจช้ากว่าเล็กน้อยเร็วกว่าสำหรับ fixed-length

สรุป: MySQL บังคับ ให้ระบุขนาด VARCHAR(n) เสมอ ไม่มี DEFAULT หรือการละขนาดได้ ต่างจาก PostgreSQL ที่มี VARCHAR (ไม่ระบุขนาด) หรือ TEXT ได้