首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 資料庫建立與管理完整指南:CREATE、INDEX、CONSTRAINT 語法詳解

     編輯:關於SqlServer

SQL 資料庫物件建立核心語法

在關聯式資料庫中,透過 SQL 陳述式建立與管理資料庫物件是基礎也是關鍵。本文系統整理 CREATE TABLE、CREATE INDEX、DROP INDEX、CONSTRAINT、ALTER TABLE、DROP TABLE 六大核心指令,並針對資料型別、索引策略、完整性約束提供實戰範例。

一、CREATE TABLE:建立資料表與欄位型別

CREATE TABLE 用於在資料庫中產生新資料表。支援的欄位資料型別涵蓋:

  • 數值型:INTEGER、LONG、SINGLE、DOUBLE、CURRENCY(貨幣,精確到小數點左 15 位、右 4 位)、COUNTER(自動遞增長整數,保證唯一性)
  • 日期時間:DATETIME/DATE
  • 邏輯型:BIT(布林值)
  • 字串型:TEXT(最大 255 位元組)、MEMO(最大 1.2 GB)
  • 二進位型:BINARY(255 位元組)、LONGBINARY(OLE 物件)
  • 識別碼:GUID(全域唯一識別碼)
-- 建立範例表 NewTable,包含文字欄位 Field1 與整數欄位 Field2
CREATE TABLE NewTable (
    Field1 TEXT(30),
    Field2 INTEGER
);

表名與欄位名不區分大小寫,但保留字(如 Number)不可作為識別名稱。

二、CREATE INDEX:索引建立與效能優化

索引能大幅加速查詢,亦可強制欄位約束。建立索引前表中可有資料,但現有資料必須符合索引約束;同一資料庫內索引名稱必須唯一。

1. 一般索引(允許重複值與 NULL)

CREATE INDEX NewIndex ON NewTable (Field1);
CREATE INDEX NewIndex ON NewTable (Field1) WITH IGNORE NULL;  -- 效果相同

2. 主索引 PRIMARY KEY(不允許重複值與 NULL)

CREATE INDEX NewIndex ON NewTable (Field1) WITH PRIMARY;

每張表僅能有一個主索引。TEXT 型別允許空字串,但空字串 ≠ NULL。

3. 唯一索引 UNIQUE(不允許重複值,允許 NULL)

CREATE UNIQUE INDEX NewIndex ON NewTable (Field1);

兩個 NULL 不視為重複值。

4. 禁止 NULL 索引

CREATE INDEX NewIndex ON NewTable (Field2) WITH DISALLOW NULL;

5. 多欄位複合索引與排序

CREATE INDEX NewIndex ON NewTable (Field1 ASC, Field2 DESC);

未指定順序預設 ASC(升序)。

三、DROP INDEX:移除索引

DROP INDEX NewIndex ON NewTable;

執行前索引必須存在。

四、CONSTRAINT:資料完整性約束

CONSTRAINT 子句用於建立資料庫完整性索引,功能與 INDEX 類似但更強大,支援 PRIMARY KEY、UNIQUE、FOREIGN KEY。須搭配 CREATE TABLE 或 ALTER TABLE 使用,不支援 IGNORE NULL 與 DISALLOW NULL。

1. 主鍵約束

CREATE TABLE NewTable (
    Field1 LONG CONSTRAINT NewPK PRIMARY KEY,
    Field2 MEMO,
    Field3 DATETIME
);

2. 唯一約束

CREATE TABLE NewTable (
    Field1 INTEGER CONSTRAINT NewUK UNIQUE
);

3. 複合主鍵

CREATE TABLE NewTable (
    Field1 INTEGER,
    Field2 INTEGER,
    CONSTRAINT PK_NewTable PRIMARY KEY (Field1, Field2)
);

兩筆記錄的 Field1 與 Field2 不能完全相同。

4. 外鍵約束

CREATE TABLE Orders (
    OrderID INTEGER CONSTRAINT PK_Orders PRIMARY KEY,
    CustomerID INTEGER CONSTRAINT FK_Orders_Customers 
        REFERENCES Customers(CustomerID)
);

外鍵是 CONSTRAINT 相較 INDEX 最大的優勢,能確保參考完整性。

五、ALTER TABLE 與 DROP TABLE

  • ALTER TABLE:修改既有表結構(新增/刪除欄位、約束、索引)
  • DROP TABLE:永久刪除資料表及其所有資料、索引、約束

實務建議

  1. 依查詢模式規劃索引,避免過度索引導致寫入效能下降
  2. 主鍵優先使用 COUNTER/IDENTITY 自動遞增欄位
  3. 外鍵關聯欄位務必建立索引以提升 JOIN 效能
  4. 使用 CONSTRAINT 統一管理完整性規則,利於維護與文件化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved