使用資料定義查詢建立或修改資料表或索引

您可以在 Access 中建立及修改資料表、限制式、索引和關聯,方法為在 SQL View 中撰寫資料定義查詢。 本文將說明資料定義查詢,以及如何使用它們來建立資料表、限制式、索引和關聯。 本文也可以協助您決定何時使用資料定義查詢。

本文內容

概觀

不同于其他 Access 查詢,資料定義查詢不會取得資料。 資料定義查詢會改為使用資料定義語言來建立、修改或刪除資料庫物件。

附註: 資料定義語言 (DDL) 是結構化查詢語言 (SQL) 。

資料定義查詢非常便利。 您可以只執行某些查詢,定期刪除及重新建立資料庫架構的一部分。 如果您熟悉 SQL 語句,而且計畫刪除及重新建立特定的資料表、限制式、索引或關聯,請考慮使用資料定義查詢。

警告: 使用資料定義查詢修改資料庫物件有風險,因為動作不會伴隨確認對話方塊。 如果您出錯,可能會失去資料,或不小心變更資料表的設計。 使用資料定義查詢修改資料庫中的物件時,請小心。 如果您不負責維護您目前使用的資料庫,您應先向資料庫管理員諮詢,然後再執行資料定義查詢。

重要: 執行資料定義查詢之前,請備份任何涉及的資料表。

DDL 關鍵字

關鍵字

使用

CREATE

建立不存在的索引或資料表。

ALTER

修改現有的資料表或資料行。

DROP

刪除現有的資料表、資料行或限制。

ADD

新增欄或限制條件至資料表。

COLUMN

與 ADD、ALTER 或 DROP 一起使用

CONSTRAINT

與 ADD、ALTER 或 DROP 一起使用

INDEX

與 CREATE 一起使用

TABLE

與 ALTER、CREATE 或 DROP 一起使用

頁面頂端

建立或修改資料表

若要建立資料表,請使用 CREATE TABLE 命令。 CREATE TABLE 命令具有下列語法:

CREATE TABLE table_name 
(field1 type [(size)] [NOT NULL] [index1]
[, field2 type [(size)] [NOT NULL] [index2]
[, ...][, CONSTRAINT constraint1 [, ...]])

CREATE TABLE 命令中唯一必要的元素是 CREATE TABLE 命令本身及資料表的名稱,但通常您想要定義資料表的某些欄位或其他方面。 請思考這個簡單的範例。

假設您要建立資料表來儲存您考慮購買之二手車的名稱、年份和價格。 您希望名稱最多允許 30 個字元,一年最多允許 4 個字元。 若要使用資料定義查詢建立資料表,請執行下列操作:

附註: 您可能需要先啟用資料庫的內容,才能執行資料定義查詢:

  • 在 [訊息列] 上,按一下 [啟用內容]

建立表格

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    CREATE TABLE Cars (name TEXT () ) , Year TEXT (4) , Price CURRENCY)

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

修改表格

若要修改資料表,請使用 ALTER TABLE 命令。 您可以使用 ALTER TABLE 命令來新增、修改或 (移除) 欄或限制。 ALTER TABLE 命令具有下列語法:

ALTER TABLE table_name predicate

其中,謂詞可以是下列任一項:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

假設您要新增一個 10 個字元的文字欄位,以儲存每個汽車狀況的資訊。 您可以執行下列動作:

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    ALTER TABLE Cars ADD COLUMN 條件 TEXT (10)

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

頁面頂端

建立索引

若要在現有的資料表上建立索引,請使用 CREATE INDEX 命令。 CREATE INDEX 命令具有下列語法:

CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...])
[WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

唯一必要的元素是 CREATE INDEX 命令、索引名稱、ON 引數、包含要編制索引之欄位之資料表的名稱,以及要包含在索引中的欄位清單。

  • DESC 引數會使索引以遞減順序建立,如果您經常執行查詢以尋找索引欄位的頂端值,或以遞減順序排序索引欄位,這項功能就非常實用。 根據預設,索引會以遞增順序建立。

  • WITH PRIMARY 引數會建立索引欄位或欄位做為 主索引鍵 的索引欄位。

  • WITH DISALLOW Null 引數會使索引要求為索引欄位輸入值,也就是說,不允許 Null 值。

假設您有一個名為汽車的資料表,其中欄位儲存了您考慮購買之二手車的名稱、年份、價格和條件。 此外,假設資料表變得很大,而且您經常在查詢中納入年份欄位。 您可以使用下列程式在 Year 欄位上建立索引,協助查詢更快速地返回結果:

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    CREATE INDEX YearIndex on Cars (Year)

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

頁面頂端

建立限制或關係

限制式會建立一個邏輯條件,要求欄位或欄位組合在插入值時必須符合。 例如,UNIQUE 限制式可防止受限制的欄位接受會複製欄位現有值的值。

關係是一種限制式類型,會參照另一個資料表中的欄位值或欄位組合,以判斷值是否可以插入限制欄位或欄位組合中。 您不會使用特殊關鍵字來表示限制是一種關係。

若要建立限制,您可以在 CREATE TABLE 或 ALTER TABLE 命令中使用 CONSTRAINT 子句。 CONSTRAINT 子句有兩種:一種用於在單一欄位上建立限制條件,另一種用於在多個欄位上建立限制。

單一欄位限制式

單一欄位 CONSTRAINT 子句會立即遵循其限制的欄位定義,並且具有下列語法:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)]
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

假設您有一個名為汽車的資料表,其中欄位儲存了您考慮購買之二手車的名稱、年份、價格和條件。 此外,假設您經常忘記輸入汽車狀況的值,而且一直想要記錄這項資訊。 您可以使用下列程式,在條件欄位上建立限制,防止欄位留空:

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    ALTER TABLE Cars ALTER COLUMN 條件 TEXT CONSTRAINT 條件Required NOT Null

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

現在,假設在一段時間之後,您發現條件欄位中有許多類似的值應該相同。 例如,有些汽車的條件值不佳,而有些汽車的值為

附註: 如果您想要遵循其餘的程式,請新增一些偽造資料至您先前步驟中建立的汽車資料表。

清除值,讓這些值更一致之後,您可以建立名為 CarCondition 的表格,其中包含一個名為條件欄位的表格,其中包含要用於汽車條件的所有值:

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    CREATE TABLE CarCondition (條件 TEXT (10) )

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

  5. 使用 ALTER TABLE 語句建立資料表的主鍵:

    ALTER TABLE CarCondition ALTER COLUMN 條件 TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. 若要將 [汽車資料表的條件> 欄位的值插入新的 CarCondition 資料表,請將下列 SQL 輸入 SQL 到 [SQL 視圖物件索引鍵:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Car;

    附註: 此步驟中的 SQL 語句是 新增查詢。 新增查詢與資料定義查詢不同,其結尾是分號。

  7. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

使用限制條件建立關係

若要要求在 [汽車資料表的條件> 欄位中插入的任何新值符合 CarCondition 資料表中的條件欄位值,您可以使用下列程式,在名為條件的欄位上建立 CarCondition 與 Car 之間的關係:

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    ALTER TABLE Cars ALTER COLUMN 條件 TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (條件)

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

多欄位限制式

多重欄位 CONSTRAINT 子句只能用於欄位定義子句之外,而且具有下列語法:

CONSTRAINT constraint_name 
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) |
UNIQUE (unique1[, unique2[, ...]]) |
NOT NULL (notnull1[, notnull2[, ...]]) |
FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])
REFERENCES foreign_table
[(fk_field1[, fk_field2[, ...]])] |
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

請考慮另一個使用汽車資料表的範例。 假設您要確認汽車資料表中沒有兩個記錄有相同組名稱、年份、條件及價格的值。 您可以使用下列程式,建立一個適用于這些欄位的 UNIQUE 限制條件:

  1. 在 [ 建立> 索引 鍵的 [宏與程式 代碼&中 ,按一下 [查詢設計

  2. 在 [設計 索引 鍵的查詢類型群組 中,按一下[資料定義

    設計格線線會隱藏起來,並顯示 SQL View 物件定位停駐點。

  3. 輸入下列 SQL 語句:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)

  4. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

頁面頂端

需要更多協助?

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×