在關聯式資料庫中,透過 SQL 陳述式建立與管理資料庫物件是基礎也是關鍵。本文系統整理 CREATE TABLE、CREATE INDEX、DROP INDEX、CONSTRAINT、ALTER TABLE、DROP TABLE 六大核心指令,並針對資料型別、索引策略、完整性約束提供實戰範例。
CREATE TABLE 用於在資料庫中產生新資料表。支援的欄位資料型別涵蓋:
INTEGER、LONG、SINGLE、DOUBLE、CURRENCY(貨幣,精確到小數點左 15 位、右 4 位)、COUNTER(自動遞增長整數,保證唯一性)DATETIME/DATEBIT(布林值)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 NewIndex ON NewTable (Field1);
CREATE INDEX NewIndex ON NewTable (Field1) WITH IGNORE NULL; -- 效果相同
CREATE INDEX NewIndex ON NewTable (Field1) WITH PRIMARY;
每張表僅能有一個主索引。TEXT 型別允許空字串,但空字串 ≠ NULL。
CREATE UNIQUE INDEX NewIndex ON NewTable (Field1);
兩個 NULL 不視為重複值。
CREATE INDEX NewIndex ON NewTable (Field2) WITH DISALLOW NULL;
CREATE INDEX NewIndex ON NewTable (Field1 ASC, Field2 DESC);
未指定順序預設 ASC(升序)。
DROP INDEX NewIndex ON NewTable;
執行前索引必須存在。
CONSTRAINT 子句用於建立資料庫完整性索引,功能與 INDEX 類似但更強大,支援 PRIMARY KEY、UNIQUE、FOREIGN KEY。須搭配 CREATE TABLE 或 ALTER TABLE 使用,不支援 IGNORE NULL 與 DISALLOW NULL。
CREATE TABLE NewTable (
Field1 LONG CONSTRAINT NewPK PRIMARY KEY,
Field2 MEMO,
Field3 DATETIME
);
CREATE TABLE NewTable (
Field1 INTEGER CONSTRAINT NewUK UNIQUE
);
CREATE TABLE NewTable (
Field1 INTEGER,
Field2 INTEGER,
CONSTRAINT PK_NewTable PRIMARY KEY (Field1, Field2)
);
兩筆記錄的 Field1 與 Field2 不能完全相同。
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:永久刪除資料表及其所有資料、索引、約束COUNTER/IDENTITY 自動遞增欄位CONSTRAINT 統一管理完整性規則,利於維護與文件化