Share via


建立與修改資料表的基本概念

資料庫設計完成之後,就可以建立資料表來儲存資料庫中的資料。資料通常是儲存在永久資料表中;不過,您也可以建立暫存資料表。資料表會一直儲存在資料庫檔案內,直到它們被刪除為止,而且只要使用者擁有適當權限,就可以使用它們。

資料表屬性

您最多可替每個資料表定義 1,024 個資料行。資料表和資料行名稱必須遵循識別碼的規則;它們在特定的資料表中必須是唯一的,不過您可在同一個資料庫的不同資料表內使用相同的資料行名稱。如需詳細資訊,請參閱<識別碼>和<將識別碼當成物件名稱使用>。您也必須替每個資料行定義一個資料類型。如需詳細資訊,請參閱<指派資料行的資料類型>。

雖然資料表名稱對於資料庫內的每個結構描述必須是唯一的,不過如果您替每個資料表指定不同的結構描述,仍可使用相同的名稱來建立多個資料表。您可建立兩個名為 employees 的資料表,並指定 Jonah 作為其中一個資料表的結構描述,Sally 作為另一個資料表的結構描述。若需要使用其中一個 employees 資料表,您可藉著指定結構描述和資料表的名稱來區別這兩個資料表。

若要建立資料表

CREATE TABLE (Transact-SQL)

如何:建立資料表 (Visual Database Tools)

暫存資料表

暫存資料表和永久資料表類似,不過暫存資料表儲存於 tempdb 之中,而且不再使用時就會自動刪除。

暫存資料表有兩種:區域與全域。它們在名稱、可見性和可用性方面有些差異。本機暫存資料表是以單一數字符號 (#) 作為名稱的第一個字元;只有目前連接的使用者才能看見它們,當使用者中斷與 SQL Server 執行個體的連接時,就會刪除它們。全域暫存資料表是以兩個數字符號 (#) 作為名稱的前兩個字元;只要一建立好,任何使用者都能看見它們,只有當所有參考這些資料表的使用者都中斷與 SQL Server 執行個體的連接時,才會刪除它們。

例如,如果您建立資料表 employees,則除非資料表被刪除,否則任何有資料庫安全性權限的人員都可以使用這個資料表。如果資料庫工作階段建立了本機暫存資料表 #employees,則只有該工作階段可以使用這個資料表,當工作階段中斷連接時,就會刪除這個資料表。如果您建立全域暫存資料表 ##employees,則資料庫中所有的使用者都可以使用這個資料表。如果您建立資料表之後,沒有其他使用者使用這個資料表,則資料表會在您中斷連接之後刪除。如果您建立資料表之後,有其他使用者使用這個資料表,則 SQL Server 會在您中斷連接且所有其他工作階段都不再主動使用它時,將它刪除。

如果您使用具名條件約束來建立暫存資料表,而且在使用者定義交易的範圍內建立此暫存資料表,則一次只有一位使用者能夠執行建立暫存資料表的陳述式。例如,如果預存程序使用了具名的主索引鍵條件約束來建立暫存資料表,此預存程序就無法同時由多位使用者執行。

許多暫存資料表的用法都可以改由含 table 資料類型的變數取代。如需有關使用 table 變數的詳細資訊,請參閱<資料表 (Transact-SQL)>。

修改資料表

當您建立資料表之後,可變更當初資料表建立時所定義的許多選項。這些變更包括:

  • 新增、修改或刪除資料行。例如資料行的名稱、長度、資料類型、精確度、小數位數和 Null 值屬性都可以變更,不過仍有一些限制。如需詳細資訊,請參閱<修改資料行屬性>。

  • 如果資料表是資料分割資料表,則可以進行重新分割,或是新增或移除個別資料分割。如需詳細資訊,請參閱<修改資料分割資料表與索引>與<使用資料分割切換有效傳送資料>。

  • 新增或刪除 PRIMARY KEY 和 FOREIGN KEY 條件約束。

  • 新增或刪除 UNIQUE 和 CHECK 條件約束及 DEFAULT 定義和物件。

  • 使用 IDENTITY 或 ROWGUIDCOL 屬性來新增或刪除識別碼資料行。也可從現有的資料行中新增或移除 ROWGUIDCOL 屬性,不過資料表中同時只能有一個資料行可具有 ROWGUIDCOL 屬性。

  • 資料表和資料表中選定的資料行可註冊成全文檢索索引。

如需有關資料表可進行之修改的詳細資訊,請參閱<ALTER TABLE (Transact-SQL)>。

資料表的名稱或結構描述也可變更。當您做此變更時,針對所有用到資料表原本名稱或結構描述的觸發程序、預存程序、Transact-SQL 指令碼或其他程式碼,您也必須變更它們裡面的資料表名稱。

若要重新命名資料表

sp_rename (Transact-SQL)

資料表屬性 (Visual Database Tools)

若要變更資料表的結構描述

ALTER SCHEMA (Transact-SQL)