資料表是資料儲存核心容器。本文系統建立表的核心知識:1) 欄位屬性:名稱 (表內唯一)、資料型別、NULL|NOT NULL (預設 NOT NULL,可透過 SET ANSI_NULL_DFLT_ON 或 sp_dboption 'ANSI null default', true 變更)、IDENTITY (seed, increment) 自動產生唯一數值 (種子/增量預設 1,1);2) 建立表語法:CREATE TABLE schema.table (col_def..., constraints...) ON filegroup;3) Enterprise Manager 建立:右鍵 Tables → New Table → 欄位網格輸入屬性 → 設定主鍵/索引/約束 → 儲存命名。奠定後續約束、索引、資料操作章節基礎。
| 屬性 | 決策要點 |
|---|---|
| 資料型別 | 選擇最小足夠型別:整數用 tinyint/smallint/int/bigint,定點用 decimal(p,s),字串用 varchar(n)/nvarchar(n),日期用 date/datetime2。 |
| NULL/NOT NULL | 業務必填 → NOT NULL;選填 → NULL。避免不必要的 NULL 增加查詢複雜度 (三值邏輯)。 |
| IDENTITY | 代理鍵 (Surrogate Key) 首選:INT IDENTITY(1,1) 或 BIGINT。種子/增量可自訂 (如負數遞減)。 |
| DEFAULT | 常數/函數 (GETDATE, NEWID, USER) 自動填入,減少應用層邏輯。 |
CREATE TABLE dbo.Employees (
EmpID int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(50) NOT NULL,
LastName nvarchar(50) NOT NULL,
HireDate date DEFAULT GETDATE() NOT NULL,
Salary decimal(10,2) CHECK (Salary > 0),
DeptID int NULL,
CONSTRAINT PK_Employees PRIMARY KEY CLUSTERED (EmpID),
CONSTRAINT FK_Employees_Departments FOREIGN KEY (DeptID) REFERENCES Departments(DeptID)
) ON [PRIMARY];
