CREATE TABLE - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CREATE TABLE

在目前資料庫中建立新的資料表。您可以定義資料欄清單,每個資料欄都會保留不同類型的資料。資料表的擁有者是指CREATETABLE令的簽發者。

所需權限

以下是所需的權限 CREATETABLE:

  • 超級使用者

  • 具有CREATETABLE權限的使用者

語法

CREATE [ [LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] table_name ( { column_name data_type [column_attributes] [ column_constraints ] | table_constraints | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ BACKUP { YES | NO } ] [table_attributes] where column_attributes are: [ DEFAULT default_expr ] [ IDENTITY ( seed, step ) ] [ GENERATED BY DEFAULT AS IDENTITY ( seed, step ) ] [ ENCODE encoding ] [ DISTKEY ] [ SORTKEY ] [ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ] and column_constraints are: [ { NOT NULL | NULL } ] [ { UNIQUE | PRIMARY KEY } ] [ REFERENCES reftable [ ( refcolumn ) ] ] and table_constraints are: [ UNIQUE ( column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] [ FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ] and table_attributes are: [ DISTSTYLE { AUTO | EVEN | KEY | ALL } ] [ DISTKEY ( column_name ) ] [ [COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ] ] [ ENCODE AUTO ]

參數

LOCAL

選用。雖然陳述式中可接受此關鍵字,但是在 Amazon Redshift 中沒有作用。

TEMPORARY | TEMP

建立臨時資料表的關鍵字,只能在目前工作階段中看見。資料表會在建立所在的工作階段結束時自動捨棄。臨時資料表可與永久資料表同名。臨時資料表是以不同的工作階段專屬結構描述建立 (您無法指定此結構描述的名稱)。此臨時結構描述會成為搜尋路徑中的第一個結構描述,因此,除非您以結構描述名稱限定資料表名稱來存取永久資料表,否則臨時資料表的優先順序高於永久資料表。如需結構描述和優先順序的相關資訊,請參閱 search_path

注意

根據預設,資料庫使用者有權依據其在PUBLIC群組中的自動成員資格來建立暫存資料表。若要拒絕使用者此權限,請撤銷PUBLIC群組的TEMP權限,然後明確地將TEMP權限授與給特定使用者或使用者群組。

如果 NOT EXISTS

此子句會指出,若指定的資料表已存在,則命令不應進行任何變更,且應傳回資料表存在的訊息,而不是在發生錯誤的情況下停止。請注意,現有資料表可能與這裡建立的資料表完全不一樣;只有資料表名稱進行比較。

這個子句在編寫指令碼時很有用,所以如果CREATETABLE嘗試建立已存在的資料表,指令碼不會失敗。

table_name

要建立的資料表名稱。

重要

若您指定 '#' 開頭的資料表名稱,所建立的資料表會是臨時資料表。以下是範例:

create table #newtable (id int);

您也可以使用 '# '參考資料表。例如:

select * from #newtable;

資料表名稱的長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。您最多可以使用 UTF -8 個多位元組字元,最多四個位元組。Amazon Redshift 會依節點類型強制執行每個叢集的資料表數目配額限制,包括使用者定義的臨時資料表,以及 Amazon Redshift 在查詢處理或系統維護期間建立的臨時資料表。或者,資料表名稱也可透過資料庫和結構描述名稱來限定。在以下範例中,資料庫名稱為 tickit,結構描述名稱為 public,而資料表名稱為 test

create table tickit.public.test (c1 int);

如果資料庫或結構描述不存在,則不會建立資料表,而且陳述式會傳回錯誤。您無法在系統資料庫 template0template1padb_harvestsys:internal 中建立資料表或視觀表。

若提供結構描述名稱,則會在該結構描述中建立新資料表 (假設建立者具有存取結構描述的權限)。資料表名稱對於該結構描述來說必須是唯一的。如果未指定結構描述,則會使用目前資料庫結構描述建立資料表。如果您要建立臨時資料表,就不能指定結構描述名稱,因為臨時資料表會採用特殊結構描述。

若臨時資料表是在不同的工作階段中建立的話,在同一個資料庫中可同時有多個同名的臨時資料表存在,因為資料表會指派至不同的結構描述。如需有效名稱的相關資訊,請參閱 名稱與識別碼

column_name

要在新資料表中建立的資料欄名稱。資料欄名稱的長度上限為 127 個位元組;超過此長度的名稱會截斷至 127 個位元組。您最多可以使用 UTF -8 個多位元組字元,最多四個位元組。單一資料表中可定義的資料欄數目上限為 1,600 個。如需有效名稱的相關資訊,請參閱 名稱與識別碼

注意

若您要建立「寬資料表」,則務必注意,在載入和查詢處理期間,您的資料欄清單未超過中繼結果的資料列寬度界限。如需詳細資訊,請參閱使用須知

data_type

要建立之資料欄的資料類型。對於CHAR和VARCHAR列,您可以使用MAX關鍵字而不是聲明最大長度。MAX將最大長度設定為 4,096 個位元組,CHAR或將其最大長度設定為 65535 個位元組。VARCHAR一個GEOMETRY對象的最大大小是 1,048,447 字節。

如需有關 Amazon Redshift 支援資料類型的資訊,請參閱 資料類型

DEFAULT預設值 (_EXP)

此子句會指派資料欄的預設資料值。default_expr 的資料類型必須符合資料欄的資料類型。該DEFAULT值必須是一個無變量的表達式。不允許子查詢、目前資料表中其他資料欄的交叉參考,以及使用者定義的功能。

在任何未指定資料行值的作業中,都會使用 default_expr INSERT 運算式。若未指定預設值,則資料欄的預設值為 null。

如果具有已定義資料行清單的COPY作業省略具有DEFAULT值的資料行,則COPY指令會插入 default _expr 的值。

IDENTITY(種子步驟

指定資料行為資料行的子IDENTITY句。IDENTITY資料欄包含唯一的自動產生值。資料IDENTITY行的資料類型必須是INT或BIGINT。

當您使用 INSERTINSERT INTO [tablename] VALUES() 陳述式新增資料列時,這些值會從指定為 seed 的值開始,並依指定為 step 的數字遞增。

使用 INSERT INTO [tablename] SELECT * FROMCOPY 陳述式載入資料表時,會並行載入資料並將其分發至節點片段。為確保身分值是唯一的,Amazon Redshift 會在建立身分值時略過一些值。身分值是唯一的,但順序可能不符合來源檔案中的順序。

GENERATED按 DEFAULT ASIDENTITY(種子步驟

指定資料行為預設IDENTITY資料行,並可讓您自動將唯一值指派給資料行的子句。資料IDENTITY行的資料類型必須是INT或BIGINT。當您新增沒有值的資料列時,這些值會從指定為 seed 的值開始,並依指定為 step 的數字遞增。如需如何產生值的詳細資訊,請參閱IDENTITY

此外,期間 INSERTUPDATE,或者COPY您可以提供沒有 EXPLICIT _ 的值IDS。Amazon Redshift 會使用該值插入身分資料欄,而不是使用系統產生的值。此值可以是複本、小於種子的值,或是介於步驟值之間的值。Amazon Redshift 不會檢查資料欄中的值是否是唯一的。提供一值並不會影響下一個系統產生的值。

注意

如果您需要資料欄中的唯一性,請不要新增複本值。改為新增小於種子或介於步驟值之間的唯一值。

請記住下列有關預設身分資料欄的事項:

  • 預設識別欄為NOTNULL。NULL無法插入。

  • 若要將產生的值插入至預設身分資料欄,請使用關鍵字 DEFAULT

    INSERT INTO tablename (identity-column-name) VALUES (DEFAULT);
  • 置換預設身分資料欄的值並不會影響下一個產生的值。

  • 您無法在ALTERTABLEADDCOLUMN陳述式中新增預設識別資料行。

  • 您可以在ALTERTABLEAPPEND陳述式中附加預設識別資料行。

ENCODE編碼

資料欄的壓縮編碼。ENCODEAUTO是表格的預設值。Amazon Redshift 會自動管理資料表中所有資料欄的壓縮編碼。如果您為資料表中的任何資料行指定壓縮編碼,表格就不會再設定為ENCODEAUTO。Amazon Redshift 不再自動管理資料表中所有資料欄的壓縮編碼。您可以為表格指定ENCODEAUTO選項,讓 Amazon Redshift 自動管理表格中所有欄的壓縮編碼。

Amazon Redshift 會自動將初始壓縮編碼指派給您未指定壓縮編碼的資料欄,如下所示:

  • 默認情況下,臨時表中的所有列都被分配RAW壓縮。

  • 定義為排序索引鍵的欄會被指定RAW壓縮。

  • 定義為BOOLEAN、、REALDOUBLEPRECISION、GEOMETRY或GEOGRAPHY資料類型的資料行會被指派RAW壓縮。

  • 定義為SMALLINT、、、INTEGER、BIGINT、DECIMAL、DATETIMETIMETZTIMESTAMP、或已指定AZ64壓縮TIMESTAMPTZ的欄。

  • 定義為CHAR、VARCHAR或已指派LZO壓縮VARBYTE的資料行。

注意

如果您不想壓縮列,請明確指定RAW編碼。

支援以下 compression encodings

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW(無壓縮)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

DISTKEY

此關鍵字會指定資料欄是資料表的分佈索引鍵。資料表中只能有一個資料欄是分佈索引鍵。您可以使用 DISTKEY (column_name) 語法,在資料行名稱之後或做為資料表定義的一部分使用DISTKEY關鍵字。兩種方法的效果一樣。如需詳細資訊,請DISTSTYLE參閱本主題稍後的參數。

分配索引鍵資料行的資料類型可以是:BOOLEANREALDOUBLEPRECISIONSMALLINTINTEGER、BIGINT、DECIMAL、DATE、TIME、TIMETZ、TIMESTAMP、、TIMESTAMPTZ、或CHAR、或VARCHAR。

SORTKEY

此關鍵字會指定資料欄是資料表的排序索引鍵。當資料載入資料表時,資料會依指定為排序索引鍵的一個或多個資料欄排序。您可以在欄名稱之後使用SORTKEY關鍵字來指定單一資料欄排序索引鍵,也可以使用 SORTKEY (column_name [,...]) 語法,指定一或多個欄做為資料表的排序索引鍵資料行。此語法只會建立複合排序索引鍵。

每個資料表最多可定義 400 個SORTKEY資料行。

排序索引鍵資料行的資料類型可以是:BOOLEANREALDOUBLEPRECISIONSMALLINTINTEGER、BIGINT、DECIMAL、DATE、TIME、TIMETZ、TIMESTAMP、、TIMESTAMPTZ、或CHAR、或VARCHAR。

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

指定資料行上的字串搜尋或比較是 CASE _ SENSITIVE 或 CASE _ 的子句INSENSITIVE。預設值與資料庫目前的區分大小寫設定相同。

若要尋找資料庫定序資訊,請使用下列命令:

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
NOT NULL | NULL

NOTNULL指定該列不允許包含空值。NULL(預設值) 會指定資料行接受 null 值。IDENTITY默認情況NOTNULL下聲明列。

UNIQUE

此關鍵字會指定資料欄只能包含唯一值。唯一資料表限制條件的行為與資料欄限制條件的行為相同,但多了可橫跨多個資料欄的額外功能。若要定義唯一的資料表條件約束,請使用 UNIQUE (column_name [,...]) 語法。

重要

唯一限制條件僅供參考,系統不會強制執行它們。

PRIMARY KEY

此關鍵字會指定資料欄是資料表的主索引鍵。只能使用資料欄定義將一個資料欄定義為主索引鍵。若要使用多欄主索引鍵定義資料表條件約束,請使用 PRIMARY KEY (column_name [,...]) 語法。

將資料欄識別為主索引鍵即可提供有關結構描述設計的中繼資料。主索引鍵表示,其他資料表可倚賴這組資料欄做為資料列的唯一識別碼。一個資料表中可指定一個主索引鍵,無論是資料欄限制條件或資料表限制條件都可行。主索引鍵限制條件應命名一組資料欄,這組資料欄有別於由為相同資料表所定義的任何唯一限制條件命名的其他資料欄組。

PRIMARYKEY欄也定義為NOTNULL。

重要

主索引鍵條件限制僅供參考。系統不會強制執行這些限制,不過規劃器會使用這些限制。

References reftable [ ( refcolumn ) ]

此子句會指定外部索引鍵限制條件,表示資料欄包含的值只能是符合參考資料表中某一資料列之參考資料欄的值。參考資料欄應為參考資料表中唯一或主索引鍵限制條件的資料欄。

重要

外部索引鍵條件限制僅供參考。系統不會強制執行這些限制,不過規劃器會使用這些限制。

LIKE父母表 [{|}INCLUDING] EXCLUDING DEFAULTS

指定現有資料表的子句,新資料表會從中自動複製資料行名稱、資料類型和條NOTNULL件約束。新資料表和父資料表是分開的,對父資料表所做的變更不會套用至新資料表。只有在指定時,才會複製複製已複製欄定義的預設運算式。INCLUDING DEFAULTS預設行為是執行預設表達式,如此一來,新資料表中所有資料欄的預設值都是 null。

使用LIKE選項建立的資料表不會繼承主索引鍵和外部索引鍵條件約束。分佈樣式,排序鍵BACKUP,和NULL屬性由LIKE表繼承,但你不能明確地設置它們在 CREATETABLE... LIKE聲明。

BACKUP{YES| 沒有}

此子句會指定資料表是否應包含在自動化和手動叢集快照中。

對於不包含重要資料的表格 (例如臨時資料表),請指定BACKUP否以在建立快照和從快照還原時節省處理時間,並減少 Amazon Simple Storage Service 上的儲存空間。BACKUPNO 設定不會影響自動將資料複製到叢集中的其他節點,因此在節點發生故障時,會還原BACKUP未指定的表格。預設值為BACKUPYES。

DISTSTYLE { AUTO | EVEN | KEY | ALL }

定義整個資料表的資料分佈樣式的關鍵字。Amazon Redshift 會根據資料表上指定的分佈樣式,將資料表的資料列分散到運算節點。預設值為AUTO。

您為資料表選取的分佈樣式會影響資料庫的整體效能。如需詳細資訊,請參閱使用資料分佈樣式。可能的分佈樣式如下:

  • AUTO: Amazon Redshift 會根據資料表資料指派最佳分發樣式。例如,如果指定了AUTO分佈樣式,Amazon Redshift 一開始會將ALL分發樣式指派給小型資料表。當表變大時,Amazon Redshift 可能會將分發樣式更改為KEY,選擇主鍵(或複合主鍵的列)作為. DISTKEY 如果表變大並且沒有任何列適合DISTKEY,Amazon Redshift 將分發樣式更改為EVEN。分佈樣式的變更會發生在背景中,對使用者查詢的影響最小。

    若要檢視套用至資料表的分佈樣式,請查詢 PG_ CLASS 系統目錄表格。如需詳細資訊,請參閱檢視分佈樣式

  • EVEN:資料表中的資料會以循環配置資料平均分佈在叢集中的節點上。資料列IDs用來決定分佈,而且大致相同數目的資料列會分配給每個節點。

  • KEY:數據由列中的值分DISTKEY佈。當您將聯結資料表的聯結資料欄設定為分佈索引鍵時,兩個資料表的聯結資料列會在運算節點上並存。資料並存時,最佳化工具就能更有效率地執行聯結。如果您指定 DISTSTYLEKEY,您必須為DISTKEY資料表或資料行定義的一部分命名資料行。如需詳細資訊,請DISTKEY參閱本主題稍早的參數。

  • ALL:整個表的副本分發到每個節點。此分佈樣式可確保每個節點上都有任何聯結所需的所有資料列,但儲存空間的需求也會倍增,並且會增加資料表的負載和維護次數。ALL若與分配不合適的某些維度資料表搭配使用,則KEY散佈可以改善執行時間,但必須將效能提升與維護成本相關的權衡。

DISTKEY(欄名稱)

此限制條件會指定要做為資料表分佈索引鍵的資料欄。您可以使用 DISTKEY (column_name) 語法,在資料行名稱之後或做為資料表定義的一部分使用DISTKEY關鍵字。兩種方法的效果一樣。如需詳細資訊,請DISTSTYLE參閱本主題稍早的參數。

[COMPOUND|INTERLEAVED]SORTKEY(列名稱 [,...])| [] SORTKEY AUTO

指定資料表的一個或多個排序索引鍵。當資料載入資料表時,資料會依指定為排序索引鍵的資料欄排序。您可以在欄名稱之後使用SORTKEY關鍵字來指定單一資料欄排序索引鍵,也可以使用SORTKEY (column_name [ , ... ] )語法指定一或多個欄做為表格的排序索引鍵資料行。

您可以選擇性地指定COMPOUND或INTERLEAVED排序樣式。如果您SORTKEY使用欄指定,預設值為COMPOUND。如需詳細資訊,請參閱使用排序索引鍵

如果您未指定任何排序索引鍵選項,預設值為AUTO。

您最多可以定義 400 COMPOUND SORTKEY 列或每個表 8 INTERLEAVED SORTKEY 列。

AUTO

指定 Amazon Redshift 會根據資料表資料指派最佳排序索引鍵。例如,如果指定了AUTO排序索引鍵,Amazon Redshift 一開始就不會為資料表指派任何排序索引鍵。如果 Amazon Redshift 判斷排序索引鍵可以改善查詢效能,那麼 Amazon Redshift 可能會在變更資料表的排序索引鍵。資料表的實際排序是透過自動資料表排序來完成的。如需詳細資訊,請參閱自動資料表排序

Amazon Redshift 不會修改已具有排序或分佈索引鍵的資料表。有一個例外情況,如果資料表具有從未在 a 中使用過的分發金鑰JOIN,則如果 Amazon Redshift 判斷有更好的金鑰,則金鑰可能會變更。

若要檢視資料表的排序索引鍵,請查詢 SVV _ TABLE _ INFO 系統目錄檢視。如需詳細資訊,請參閱SVV_TABLE_INFO。若要檢視資料表的 Amazon Redshift 建議程式建議,請查詢 SVV _ _ _ ALTER TABLE _ RECOMMENDATIONS 系統目錄檢視。如需詳細資訊,請參閱SVV_ALTER_TABLE_RECOMMENDATIONS。若要檢視 Amazon Redshift 所採取的動作,請查詢 SVL _ _ _ AUTO WORKER _ ACTION 系統目錄檢視。如需詳細資訊,請參閱SVL_AUTO_WORKER_ACTION

COMPOUND

指定使用複合索引鍵排序資料,該索引鍵是由列出的所有資料欄組成,並依其列出順序排列。當查詢依據排序資料欄的順序掃描資料列時,複合排序索引鍵最實用。當查詢依賴次要排序資料欄時,使用複合索引鍵排序的效能優勢就會降低。每個資料表最多可定義 400 個COMPOUNDSORTKEY資料行。

INTERLEAVED

指定使用交錯排序索引鍵排序資料。最多可以為交錯排序索引鍵指定八個資料欄。

交錯排序索引鍵對排序索引鍵中的每個資料欄 (或資料欄子集) 都提供相等的權重,所以查詢不會取決於排序索引鍵中資料欄的順序。當查詢使用一個或多個次要排序資料欄時,交錯排序可大幅改善查詢效能。交錯排序在執行資料載入和清空操作時,會產生很少的額外負荷成本,

重要

不要在具有依序增加屬性 (如身分資料欄、日期或時間戳記) 的資料欄上使用交錯排序索引鍵。

ENCODE AUTO

讓 Amazon Redshift 能夠自動調整資料表中所有資料欄的編碼類型,以最佳化查詢效能。ENCODEAUTO保留您在建立資料表時指定的初始編碼類型。然後,如果 Amazon Redshift 判斷新的編碼類型可以改善查詢效能,Amazon Redshift 就可以變更資料表資料欄的編碼類型。ENCODEAUTO如果您未在表格中的任何資料行上指定編碼類型,則為預設值。

UNIQUE(欄名稱 [,...])

此限制條件會指定,資料表中一個包含一個或多個資料欄的群組只能包含唯一值。唯一資料表限制條件的行為與資料欄限制條件的行為相同,但多了可橫跨多個資料欄的額外功能。在唯一限制條件的細節中,不會將 null 值視為相等。每個唯一資料表限制條件必須命名一組資料欄,這組資料欄有別於為資料表所定義的任何其他唯一或主索引鍵限制條件所命名的資料欄組。

重要

唯一限制條件僅供參考,系統不會強制執行它們。

PRIMARYKEY(欄名稱 [,...])

此限制條件會指定,資料表中的一個或多個資料欄只能包含唯一的 (不重複) 非 null 值。將一組資料欄識別為主索引鍵也會提供有關結構描述設計的中繼資料。主索引鍵表示,其他資料表可倚賴這組資料欄做為資料列的唯一識別碼。一個資料表中可指定一個主索引鍵,無論是單一資料欄限制條件或資料表限制條件都可行。主索引鍵限制條件應命名一組資料欄,這組資料欄有別於由為相同資料表所定義的任何唯一限制條件命名的其他資料欄組。

重要

主索引鍵條件限制僅供參考。系統不會強制執行這些限制,不過規劃器會使用這些限制。

FOREIGNKEY列名 [,...])可重排 [(REFERENCES參考列)]

此限制條件會指定外部索引鍵限制條件,其要求新資料表中一個包含一個或多個資料欄的群組包含的值,只能是符合參考資料表中某一資料列之參考資料欄的值。如果省略 refcolumn,則會使用 reftable 的主索引鍵。參考資料欄必須為參考資料表中唯一或主索引鍵限制條件的資料欄。

重要

外部索引鍵條件限制僅供參考。系統不會強制執行這些限制,不過規劃器會使用這些限制。

使用須知

唯一性、主索引鍵和外部索引鍵限制僅供參考,Amazon Redshift 不會在您填入資料表時強制執行它們。例如,如果您將資料插入具有相依性的資料表中,即使插入違反限制也可以成功執行。儘管如此,主索引鍵和外鍵會用作規劃提示,如果您的程序或應用程式中的其他ETL處理程序強制執行其完整性,則應該宣告這些提示。如需如何捨棄具有相依性之資料表的資訊,請參閱 DROP TABLE

限制和配額

建立資料表時,請考量下列限制。

  • 根據節點類型,叢集中的資料表數目上限有所限制。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的限制

  • 資料表名稱的字元數上限為 127 個。

  • 單一資料表中可定義的資料欄數目上限為 1,600 個。

  • 您可以在單個表中定義的最大SORTKEY列數為 400。

欄位層級設定和資料表層級設定的摘要

在資料欄層級或資料表層級可設定數種屬性和設定。某些情況下,在資料欄層級或資料表層級設定屬性或限制條件的效果相同。而有些情況下則會產生不同的結果。

下列清單摘要說明資料欄層級和資料表層級設定:

DISTKEY

在資料欄層級或資料表層級設定的效果並無差異。

如果DISTKEY已設定,則DISTSTYLE必須在欄層級或表格層級設定為KEY或完全不設定。DISTSTYLE只能在表格層級設定。

SORTKEY

如果在欄層級設定,則SORTKEY必須是單一欄。如果SORTKEY在表格層級設定,則一或多個欄可以組成複合或交錯式複合排序索引鍵。

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Amazon Redshift 不支援修改資料欄的區分大小寫組態。當您將新的資料欄附加到資料表時,Amazon Redshift 會使用預設值來區分大小寫。Amazon Redshift 在附加新列時不支持COLLATE關鍵字。

如需如何使用資料庫定序建立資料庫的資訊,請參閱CREATE DATABASE

如需有關COLLATE函數的資訊,請參閱COLLATE函數

UNIQUE

在資料行層級,可以將一個或多個索引鍵設定為UNIQUE;UNIQUE限制條件會個別套用至每個資料行。如果UNIQUE在表級設置,一個或多個列可以組成一個複合UNIQUE約束。

PRIMARY KEY

如果在欄層級設定,則PRIMARYKEY必須是單一欄。如果PRIMARYKEY在表級設置,則一個或多個列可以組成複合主鍵。

FOREIGN KEY

無論是在欄層級還FOREIGNKEY是在表格層級設定,效果都沒有差異。在資料欄層級的語法為單純的 REFERENCES reftable [( refcolumn )]。

傳入資料的分佈

當傳入資料的雜湊分佈機制與目標資料表的機制相同時,不需要在資料載入時實際分佈資料。例如,如果新資料表設定了分佈索引鍵,而且要從另一個分佈在相同索引鍵資料欄上的資料表插入資料,則會使用相同的節點和分割就地載入資料。但是,如果來源和目標資料表都設定為EVEN發佈,則資料會重新分配到目標資料表中。

寬資料表

您可能可以建立非常寬的資料表,但無法在資料表上執行查詢處理,例如INSERT或SELECT陳述式。具有固定寬度欄 (例如) 的資料表的最大寬度為 CHAR 64KB-1 (或 65535 位元組)。如果資料表包含VARCHAR資料行,資料表可能會有較大的宣告寬度,而不會傳回錯誤,因為VARCHARS資料行不會將其完整宣告的寬度貢獻給計算的查詢處理限制。包含VARCHAR資料欄的有效查詢處理限制會因許多因素而有所不同。

如果資料表對於插入或選取操作來說太寬,您會收到下列錯誤。

ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)

範例

如需展示如何使用CREATETABLE指令的範例,請參閱主範例題。