You have multiple accounts
Choose the account you want to sign in with.

您可以在 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. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

頁面頂端

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×