CREATE TABLE 基本語法
CREATE TABLE table_name (
col1 datatype [constraint],
col2 datatype [constraint],
...
);
常用數據類型選型指南
| 類型 | 適用場景 | 存儲/範圍 |
CHAR(n) | 固定長度代碼、標識符 | n 字節,最大 255 |
VARCHAR(n) | 變長文本、姓名、地址 | 實際長度+2字節,最大 8000 |
NVARCHAR(n) | 多語言文本(含中文) | 2×實際長度,最大 4000 |
INT / BIGINT | 整數 ID、計數器 | 4/8 字節 |
DECIMAL(p,s) | 金額、精確數值 | p 總位數,s 小數位 |
DATETIME2(n) | 高精度日期時間 | 6-8 字節,100 納秒精度 |
DATE / TIME | 純日期/時間 | 3/5 字節 |
五大核心約束
| 約束 | 作用 | 範例 |
PRIMARY KEY | 唯一標識行,非空+唯一 | id INT PRIMARY KEY |
NOT NULL | 禁止 NULL | name VARCHAR(50) NOT NULL |
UNIQUE | 值唯一(可多 NULL) | email VARCHAR(100) UNIQUE |
CHECK | 自定義條件 | age INT CHECK (age >= 18) |
FOREIGN KEY | 引用完整性 | dept_id INT REFERENCES dept(id) |
命名規範與最佳實踐
- 表名:單數 PascalCase,如
Employee、OrderDetail
- 列名:camelCase,如
firstName、hireDate
- 主鍵:
PK_TableName,外鍵:FK_TableName_RefTable
- 避免保留字(SELECT、INSERT、ORDER 等)作為標識符
- 長度 ≤ 30 字符(舊版本限制),現代建議 ≤ 128
完整範例
CREATE TABLE Employee (
EmployeeID INT IDENTITY(1,1) PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
Title NVARCHAR(100),
Age TINYINT CHECK (Age BETWEEN 18 AND 65),
Salary DECIMAL(10,2) DEFAULT 0,
HireDate DATE NOT NULL DEFAULT GETDATE(),
DepartmentID INT NOT NULL
REFERENCES Department(DepartmentID)
);