事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊
適用於:Azure Synapse Analytics
Analytics Platform System (PDW)
在 Azure Synapse Analytics 或 Analytics Platform System (PDW) 中建立新的資料表。
若要了解資料表和其使用方式,請參閱 Azure Synapse Analytics 中的資料表。
本文中關於 Azure Synapse Analytics 的討論也適用於 Azure Synapse Analytics 和 Analytics Platform System (PDW),除非另有說明。
注意
針對 SQL Server 和 Azure SQL 平臺,請流覽 CREATE TABLE 並選取所需的產品版本。 如需 Microsoft Fabric 中的 SQL 資料庫,請參閱 CREATE TABLE。 如需在 Microsoft Fabric 中倉儲的參考,請流覽 CREATE TABLE (Fabric) 。
-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
(
{ column_name <data_type> [ <column_options> ] } [ ,...n ]
)
[ WITH ( <table_option> [ ,...n ] ) ]
[;]
<column_options> ::=
[ COLLATE Windows_collation_name ]
[ NULL | NOT NULL ] -- default is NULL
[ IDENTITY [ ( seed, increment ) ]
[ <column_constraint> ]
<column_constraint>::=
{
DEFAULT constant_expression
| PRIMARY KEY NONCLUSTERED NOT ENFORCED -- Applies to Azure Synapse Analytics only
| UNIQUE NOT ENFORCED -- Applies to Azure Synapse Analytics only
}
<table_option> ::=
{
CLUSTERED COLUMNSTORE INDEX -- default for Azure Synapse Analytics
| CLUSTERED COLUMNSTORE INDEX ORDER (column [,...n])
| HEAP --default for Parallel Data Warehouse
| CLUSTERED INDEX ( { index_column_name [ ASC | DESC ] } [ ,...n ] ) -- default is ASC
}
{
DISTRIBUTION = HASH ( distribution_column_name )
| DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] )
| DISTRIBUTION = ROUND_ROBIN -- default for Azure Synapse Analytics
| DISTRIBUTION = REPLICATE -- default for Parallel Data Warehouse
}
| PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] -- default is LEFT
FOR VALUES ( [ boundary_value [,...n] ] ) )
<data type> ::=
datetimeoffset [ ( n ) ]
| datetime2 [ ( n ) ]
| datetime
| smalldatetime
| date
| time [ ( n ) ]
| float [ ( n ) ]
| real [ ( n ) ]
| decimal [ ( precision [ , scale ] ) ]
| numeric [ ( precision [ , scale ] ) ]
| money
| smallmoney
| bigint
| int
| smallint
| tinyint
| bit
| nvarchar [ ( n | max ) ] -- max applies only to Azure Synapse Analytics
| nchar [ ( n ) ]
| varchar [ ( n | max ) ] -- max applies only to Azure Synapse Analytics
| char [ ( n ) ]
| varbinary [ ( n | max ) ] -- max applies only to Azure Synapse Analytics
| binary [ ( n ) ]
| uniqueidentifier
將包含新資料表之資料庫的名稱。 預設為目前資料庫。
資料表的結構描述。 指定結構描述是選擇性的。 如果空白,則會使用預設結構描述。
新資料表的名稱。 若要建立本機暫存資料表,請在資料表名稱前面加上 #
。 如需暫存資料表的說明和指引,請參閱 Azure Synapse Analytics 中專用 SQL 集區中的暫存資料表。
資料表資料行的名稱。
COLLATE
Windows_collation_name
指定運算式的定序。 定序必須是 SQL Server 所支援的其中一個 Windows 定序。 如需 SQL Server 支援的 Windows 定序列表,請參閱 Windows 定序名稱(Transact-SQL)。
NULL
| NOT NULL
指定資料行是否允許使用 NULL
值。 預設值為 NULL
。
[ CONSTRAINT
constraint_name ] DEFAULT
constant_expression
指定預設資料行值。
引數 | 說明 |
---|---|
constraint_name |
條件約束的選擇性名稱。 條件約束名稱在資料庫中是唯一的。 名稱可以在其他資料庫中重複使用。 |
constant_expression |
資料行的預設值。 運算式必須是常值或常數。 例如,允許使用這些常數運算式:'CA' 、4 。 這些常數運算式不允許:2+3 、CURRENT_TIMESTAMP 。 |
如需選擇資料表類型的指導方針,請參閱 Azure Synapse Analytics 中的索引資料表。
CLUSTERED COLUMNSTORE INDEX
將資料表儲存為叢集資料行存放區索引。 叢集資料行存放區索引適用於所有資料表資料。 這是 Azure Synapse Analytics 的預設行為。
HEAP
將資料表儲存為堆積。 這是 Analytics Platform System (PDW) 的預設行為。
CLUSTERED INDEX
( index_column_name [ ,...n ] )
將資料表儲存為具有一或多個索引鍵資料行的叢集索引。 此行為會依資料列儲存資料。 使用 index_column_name 指定索引中一或多個索引鍵資料行的名稱。 如需詳細資訊,請參閱 數據列存放區數據表。
LOCATION = USER_DB
此選項已淘汰。 這是有效的語法,但不再需要且不再影響行為。
若要了解如何選擇最佳的散發方法並使用分散式資料表,請參閱在 Azure Synapse Analytics 中使用專用 SQL 集區設計分散式資料表。
如需根據工作負載採用最佳散發策略的相關建議,請參閱 Azure Synapse SQL Distribution Advisor (預覽)。
DISTRIBUTION = HASH
( distribution_column_name ) 透過對儲存在 distribution_column_name 中的值進行雜湊處理,將每個資料列指派給一個發佈。 演算法具有確定性,這表示其一律會將相同值進行雜湊處理至相同的散發。 散發資料行應定義為 NOT NULL,因為擁有 NULL 的所有資料列都會指派給相同散發。
DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] )
根據最多八個資料行的雜湊值散發資料列,可以更平均地分佈基底資料表資料,減少隨著時間而產生的資料扭曲並改善查詢效能。
注意
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO;
現有的 MCD 資料表會保持不變,但變得無法讀取。 MCD 資料表的查詢會傳回此錯誤:Related table/view is not readable because it distributes data on multiple columns and multi-column distribution is not supported by this product version or this feature is disabled.
CREATE TABLE AS SELECT
(CTAS) 語句,而且數據源必須是 Synapse SQL 資料表。
DISTRIBUTION = ROUND_ROBIN
以循環配置資源方式將資料列平均散發到所有發佈中。 這是 Azure Synapse Analytics 的預設行為。
DISTRIBUTION = REPLICATE
在每個計算節點上儲存一份資料表的複本。 針對 Azure Synapse Analytics,資料表會儲存在每個計算節點的散發資料庫中。 針對 Analytics Platform System (PDW),資料表是儲存在 Compute 節點範圍的 SQL Server 檔案群組中。 這是 Analytics Platform System (PDW) 的預設行為。
如需使用資料表資料分割的指導方針,請參閱專用 SQL 集區中的資料分割資料表。
PARTITION
(partition_column_name FOR VALUES
[ boundary_value [,...n] ] ))
建立一或多個資料表資料分割。 這些資料分割是水平資料表配量,可讓您將作業套用至資料列子集,無論資料表是儲存為堆積、叢集索引,或叢集資料行存放區索引。 和散發資料行不同,資料表資料分割不會決定每個資料列儲存所在的散發。 反之,資料表資料分割會決定資料列在每個散發內的分組方式和儲存方式。
引數 | 說明 |
---|---|
partition_column_name | 指定 Azure Synapse Analytics 用來分割數據列的數據行。 此資料行可以是任何資料類型。 Azure Synapse Analytics 會以遞增順序排序資料分割資料行值。 從低到高順序會以 LEFT 規格由 RIGHT 到 RANGE 排序。 |
RANGE LEFT |
指定屬於左邊 (較低的值) 資料分割的界限值。 預設值為 LEFT。 |
RANGE RIGHT |
指定屬於右邊 (較高的值) 資料分割的界限值。 |
FOR VALUES ( boundary_value [,...n] ) |
指定資料分割的界限值。
boundary_value 是常數運算式。 不得為 NULL。 它必須符合或可以隱含轉換為 partition_column_name 的資料類型。 無法在進行隱含轉換期間截斷,因此值的大小和級別不會和 partition_column_name 的資料類型相符 如果您指定一個界限值,產生的資料表會有兩個資料分割,一個用於低於界限值的值,一個用於高於界限值的值。 如果您將分割區移至非分割數據表,則非分割數據表會接收數據,但不會在其元數據中具有分割區界限。 |
如需範例,請參閱 建立數據分割數據表。
叢集資料行存放區索引 (CCI) 是在 Azure Synapse Analytics 中建立資料表的預設值。 CCI 中的數據在壓縮成數據行存放區區段之前,不會排序。 建立具有順序的 CCI 時,資料會先進行排序,再新增至索引區段,且可改善查詢效能。 如需 Azure Synapse Analytics 中已排序叢集數據行存放區索引的詳細資訊,請參閱 使用已排序的叢集數據行存放區索引進行效能微調。
已排序的 CCI 可以建立在 Azure Synapse Analytics 支援的任何資料類型的資料行上,但不包括字串資料行。
用戶可以查詢 中的數據column_store_order_ordinal
行,以取得sys.index_columns
數據表排序的數據行,以及排序順序中的順序。
瀏覽使用已排序叢集資料行存放區索引的效能微調以取得詳細資料。
Azure Synapse Analytics 支援最常用的資料類型。 若要進一步了解資料類型和使用方式,請參閱 Azure Synapse Analytics 中的資料表資料類型。
注意
類似於 SQL Server,每個數據列限制有 8,060 個字節。 對於具有許多數據行或具有大型數據類型的數據行,例如 nvarchar(max) 或 varbinary(max)的數據表來說,這可能是封鎖問題。 插入或更新違反8,060位元組限制會導致錯誤碼511或611。 如需詳細資訊,請參閱分頁與範圍架構指南。
如需數據類型轉換的數據表,請參閱 CAST 和 CONVERT (Transact-SQL) 的隱含轉換一節。 如需詳細資訊,請參閱日期和時間數據類型和函式(Transact-SQL)。
下列支援的數據類型清單包含其詳細資料和記憶體位元組:
datetimeoffset
[ ( n ) ]
n 的預設值是 7。
datetime2
[ ( n ) ]
與 datetime
相同,但您可以指定小數部分的秒數。
n 的預設值是 7
。
n 值 | Precision | 調整 |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
7 |
27 | 7 |
datetime
根據西曆使用 19 到 23 個字元儲存日期和時間。 日期可以包含年、月和日。 時間包含小時、分鐘、秒。 您可以選擇為小數部分的秒數顯示三個位數。 儲存體大小是 8 位元組。
smalldatetime
儲存日期和時間。 儲存體大小是 4 位元組。
date
根據西曆使用最多 10 個字元儲存年、月和日的日期。 儲存體大小是 3 位元組。 日期會儲存為整數。
time
[ ( n ) ]
n 的預設值是 7
。
float
[ ( n ) ]
用來搭配浮點數值資料使用的近似數字資料類型。 浮點數資料是近似的,這表示並非資料類型範圍內的所有值都能夠精確地表示。
n 指定用來以科學記號標記法儲存 float
之尾數的位元數。
n 可決定有效位數和儲存體大小。 如果指定 n,則其值必須介於 1
與 53
之間。
n 的預設值是 53
。
n 值 | Precision | 儲存體大小 |
---|---|---|
1-24 | 7 位數 | 4 個位元組 |
25-53 | 15 位數 | 8 個位元組 |
Azure Synapse Analytics 會將 n 當做兩個可能值的其中一個來處理。 如果 1
<= n<= 24
,則將 n 當作 24
來處理。 如果 25
<= n<= 53
,則將 n 當作 53
來處理。
Azure Synapse Analytics float 數據類型符合 n53
ISO 標準。 雙精確度的同義字是 float(53)。
real
[ ( n ) ]
real 的定義和 float 相同。
real 的 ISO 同義字是 float(24) 。
decimal
[ ( precision [ , scale ] ) ] | numeric
[ ( precision [ , scale ] ) ]
儲存固定有效位數和小數位數的數字。
有效位數
可以在小數點任一端儲存的小數字數總數上限。 有效位數必須是從 1
到最大有效位數 38
之間的值。 預設有效位數是 18
。
scale
小數點右側所能儲存的最大十進位數。
小數位數必須是從 0
到 有效位數 之間的值。 只有在已指定 precision 的情況下,您才能指定 scale。 預設小數位數為 0
,因此 0
<= scale<= precision。 最大儲存體大小會隨著有效位數而不同。
Precision | 儲存體位元組 |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
money
| smallmoney
代表貨幣值的資料類型。
資料類型 | 儲存體位元組 |
---|---|
money |
8 |
smallmoney |
4 |
bigint
| int
| smallint
| tinyint
使用整數資料的 Exact-number 資料類型。 下表會顯示儲存體。
資料類型 | 儲存體位元組 |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
tinyint |
1 |
bit
一種整數資料類型,其值有 1
、0
或 NULL 幾種。 Azure Synapse Analytics 會將位元資料行的儲存最佳化。 如果資料表中的 bit 資料行小於或等於 8 個,這些資料行會儲存為 1 個位元組。 如果有 9 到 16 個 bit 資料行,則儲存為 2 個位元組,依此類推。
nvarchar
[ ( n | max
) ] 可變長度 Unicode 字元數據。
n 可以是從 1 到 4000 之間的值。
max
表示儲存體大小上限是 2^31-1 個位元組 (2 GB)。 儲存體大小 (以位元組為單位) 是輸入字元數的兩倍再加上 2 位元組。 輸入的資料長度可以是 0 個字元。 長度 max
僅適用於 Azure Synapse Analytics。
nchar
[ ( n ) ]
長度為 n 個字元的固定長度 Unicode 字元資料。
n 必須是從 1
到 4000
之間的值。 儲存體大小是 n 個位元組的兩倍。
varchar
[ ( n | max
) ] 可變長度、非 Unicode 字元數據,長度為 n 個字節。
n 必須是從 1
到 8000
之間的值。
max
表示儲存體大小上限是 2^31-1 個位元組 (2 GB)。 儲存體大小是輸入資料的實際長度再加上 2 位元組。 長度 max
僅適用於 Azure Synapse Analytics。
char
[ ( n ) ]
長度為 n 位元組的固定長度非 Unicode 字元資料。
n 必須是從 1
到 8000
之間的值。 儲存體大小是 n 位元組。
n 的預設值是 1
。
varbinary
[ ( n | max
) ] 可變長度的二進位資料。
n 可以是從 1
到 8000
之間的值。
max
表示儲存體大小上限是 2^31-1 個位元組 (2 GB)。 儲存體大小是輸入資料的實際長度再加上 2 位元組。
n 的預設值是 7。 長度 max
僅適用於 Azure Synapse Analytics。
binary
[ ( n ) ]
長度為 n 位元組的固定長度二進位資料。
n 可以是從 1
到 8000
之間的值。 儲存體大小是 n 位元組。
n 的預設值是 7
。
uniqueidentifier
這是 16 位元組的 GUID。
建立資料表時需要 db_ddladmin
固定資料庫角色的權限,或:
CREATE TABLE
權限ALTER SCHEMA
數據表架構的許可權建立資料分割資料表時需要 db_ddladmin
固定資料庫角色的權限,或
ALTER ANY DATASPACE
權限建立本機暫存資料表的登入會接收資料表的 CONTROL
、INSERT
、SELECT
和 UPDATE
權限。
如需 Azure Synapse Analytics 中的最小值和上限,請參閱 Azure Synapse Analytics 容量限制。
每個使用者定義的資料表都會分割成多個較小資料表,儲存在稱為散發的個別位置。 Azure Synapse Analytics 使用 60 個散發套件。 在 Analytics Platform System (PDW) 中,散發套件的數目取決於計算節點的數目。
每個散發都會包含所有資料表資料分割。 例如,如果有 60 個散發和四個資料表分割區加上一個空的分割區,將會有 300 個分割區 (5 x 60 = 300)。 如果數據表是叢集數據行存放區索引,則每個分割區會有一個數據行存放區索引,這表示您將有 300 個數據行存放區索引。
我們建議使用較少的資料表資料分割,以確保每個資料行存放區索引都有足夠的資料列,以充分利用資料行存放區索引的優點。 如需 Azure Synapse Analytics 中的詳細資訊,請參閱 分割專用 SQL 集 區中的數據表和 Azure Synapse Analytics 中專用 SQL 集區數據表上的索引。
資料列存放區資料表是以資料列逐列順序儲存的資料表。 是堆積或叢集索引。 Azure Synapse Analytics 會建立具有頁面壓縮的所有資料列存放區資料表,使用者無法設定此行為。
資料行存放區資料表是以資料行逐行順序儲存的資料表。 資料行存放區索引是資料管理技術,可管理資料行存放區資料表中儲存的資料。 叢集數據行存放區索引不會影響數據的散發方式。 相反地,它會影響數據在每個散發中儲存的方式。
若要將資料列存放區資料表變更為資料行存放區資料表,請卸除資料表中所有現有的索引,然後建立叢集資料行存放區索引。 如需範例,請參閱 CREATE COLUMNSTORE INDEX (Transact-SQL)。
如需詳細資訊,請參閱這些文章:
DEFAULT
條件約束。數據分割數據行不能有僅限 Unicode 的定序。 例如,下列語句失敗:
CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))
如果boundary_value是必須隱含轉換成partition_column_name中數據類型的常值,則會發生差異。 常值會透過 Azure Synapse Analytics 系統檢視顯示,但轉換後的值會用於 Transact-SQL 作業。
不支持開頭 ##
為的全域臨時表。
本機暫存資料表具有下列限制事項:
DROP TABLE
語句。GRANT
、DENY
和 REVOKE
陳述式無法與本機暫存資料表搭配使用。在資料表上取得獨佔鎖定。 在 DATABASE、SCHEMA 和 SCHEMARESOLUTION 物件上取得共用鎖定。
在以下範例中,資料表 MyTable
是使用兩個不同的資料行定序所建立的。 根據預設,資料列 mycolumn1
具有預設定序 Latin1_General_100_CI_AS_KS_WS
。 數據行 mycolumn2
具有定序 Frisian_100_CS_AS
。
CREATE TABLE MyTable
(
mycolumnnn1 nvarchar,
mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
以下範例說明指定資料行預設值的語法。
colA
資料行具有名為 constraint_colA
的預設條件約束,且預設值為 0
。
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
下列範例會建立一個名為 #myTable 的本機暫存資料表。 指定的資料表使用三部分名稱,開頭為 #。
CREATE TABLE AdventureWorks.dbo.#myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id),
CLUSTERED COLUMNSTORE INDEX
)
;
以下範例會建立具有叢集資料行存放區索引的分散式資料表。 每個散發都會儲存為資料行存放區。
叢集資料行存放區索引不會影響資料散發方式;資料一律由資料列散發。 叢集資料行存放區索引會影響資料在每個散發內的儲存方式。
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH
(
DISTRIBUTION = HASH ( colB ),
CLUSTERED COLUMNSTORE INDEX
)
;
下列範例會示範如何建立已排序的叢集資料行存放區索引。 索引是在上 SHIPDATE
排序。
CREATE TABLE Lineitem
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))
AS
SELECT * FROM ext_Lineitem
以下範例會建立一個具有三個資料行且沒有資料分割的 ROUND_ROBIN 資料表。 資料會分散到所有散發。 資料表是使用 CLUSTERED COLUMNSTORE INDEX 所建立的,可提供比堆積或資料列存放區叢集索引更好的效能和資料壓縮。
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH ( CLUSTERED COLUMNSTORE INDEX );
以下範例會建立和上一個範例相同的資料表。 不過,在此資料表中,資料列會散發 (在 id
和 zipCode
資料行上)。 資料表是使用叢集資料行存放區索引建立的,可提供比堆積或資料列存放區叢集索引更好的效能和資料壓縮。
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id, zipCode),
CLUSTERED COLUMNSTORE INDEX
);
以下範例會建立和上一個範例類似的複寫資料表。 複寫資料表會完整複製到每個計算節點。 當每個計算節點上都有此複本時,就可以在查詢時減少資料移動。 此範例使用叢集索引建立,提供比堆積更佳的資料壓縮。 堆積可能不會包含足夠的數據列,無法達到良好的 CLUSTERED COLUMNSTORE INDEX 壓縮。
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = REPLICATE,
CLUSTERED INDEX (lastName)
);
下列範例會建立與範例 A 中所示的相同數據表,並在數據行上RANGE LEFT
新增id
數據分割。 它會指定四個資料分割界限值,結果會產生五個資料分割。
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode int)
WITH
(
PARTITION ( id RANGE LEFT FOR VALUES (10, 20, 30, 40 )),
CLUSTERED COLUMNSTORE INDEX
);
在此範例中,數據會排序成下列資料分割:
如果這個相同的數據表已分割 RANGE RIGHT 而非 RANGE LEFT (預設值),則資料會排序為下列資料分割:
以下範例會建立具有一個資料分割的資料分割資料表。 不會指定任何界限值,從而產生單一資料分割。
CREATE TABLE myTable (
id int NOT NULL,
lastName varchar(20),
zipCode int)
WITH
(
PARTITION ( id RANGE LEFT FOR VALUES ( )),
CLUSTERED COLUMNSTORE INDEX
)
;
以下範例會建立一個名為 myTable
新資料表,並在 date
資料行上具有資料分割。 藉由針對界限值使用 RANGE RIGHT
和日期,它會在每個分割區中放入一個月的數據。
CREATE TABLE myTable (
l_orderkey bigint,
l_partkey bigint,
l_suppkey bigint,
l_linenumber bigint,
l_quantity decimal(15,2),
l_extendedprice decimal(15,2),
l_discount decimal(15,2),
l_tax decimal(15,2),
l_returnflag char(1),
l_linestatus char(1),
l_shipdate date,
l_commitdate date,
l_receiptdate date,
l_shipinstruct char(25),
l_shipmode char(10),
l_comment varchar(44))
WITH
(
DISTRIBUTION = HASH (l_orderkey),
CLUSTERED COLUMNSTORE INDEX,
PARTITION ( l_shipdate RANGE RIGHT FOR VALUES
(
'1992-01-01','1992-02-01','1992-03-01','1992-04-01','1992-05-01',
'1992-06-01','1992-07-01','1992-08-01','1992-09-01','1992-10-01',
'1992-11-01','1992-12-01','1993-01-01','1993-02-01','1993-03-01',
'1993-04-01','1993-05-01','1993-06-01','1993-07-01','1993-08-01',
'1993-09-01','1993-10-01','1993-11-01','1993-12-01','1994-01-01',
'1994-02-01','1994-03-01','1994-04-01','1994-05-01','1994-06-01',
'1994-07-01','1994-08-01','1994-09-01','1994-10-01','1994-11-01',
'1994-12-01'
))
);
在 Microsoft Fabric 的倉儲中建立新的數據表。
如需詳細資訊,請參閱 在 Microsoft Fabric 中建立倉儲上的數據表。
注意
如需 Microsoft Fabric 中的 SQL 資料庫,請參閱 CREATE TABLE。 針對 SQL Server 和 Azure SQL 平臺,請流覽 CREATE TABLE ,並從 [版本] 下拉式清單中選取所需的產品版本。 如需 Azure Synapse Analytics 和分析平台系統 (PDW) 的參考,請造訪 CREATE TABLE (Azure Synapse Analytics)。
-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
(
{ column_name <data_type> [ <column_options> ] } [ ,...n ]
)
[;]
<column_options> ::=
[ NULL | NOT NULL ] -- default is NULL
[ COLLATE Windows_collation_name ]
<data type> ::=
datetime2 ( n )
| date
| time ( n )
| float [ ( n ) ]
| real [ ( n ) ]
| decimal [ ( precision [ , scale ] ) ]
| numeric [ ( precision [ , scale ] ) ]
| bigint
| int
| smallint
| bit
| varchar [ ( n | MAX ) ]
| char [ ( n ) ]
| varbinary [ ( n | MAX ) ]
| uniqueidentifier
將包含新資料表之資料庫的名稱。 預設為目前資料庫。
資料表的結構描述。 指定結構描述是選擇性的。 如果空白,則會使用預設結構描述。
新資料表的名稱。
資料表資料行的名稱。
NULL
| NOT NULL
指定資料行是否允許使用 NULL
值。 預設值為 NULL
。
COLLATE
Windows_collation_name
指定運算式的定序。
如需支援定序的詳細資訊,請參閱 COLLATE。
Microsoft Fabric 支援最常用的數據類型。 如需詳細資訊,請參閱 Microsoft Fabric 中的資料類型。
注意
類似於 SQL Server,每個數據列限制有 8,060 個字節。 對於具有許多數據行的數據表,或具有大型數據類型的數據行,例如 varchar(8000)
或 varbinary(8000)
,這可能會成為封鎖問題。 插入或更新違反8,060位元組限制會導致錯誤碼511或611。 如需詳細資訊,請參閱分頁與範圍架構指南。
如需數據類型轉換的數據表,請參閱 CAST 和 CONVERT (Transact-SQL) 的隱含轉換一節。 如需詳細資訊,請參閱日期和時間數據類型和函式(Transact-SQL)。
下列支援的數據類型清單包含其詳細數據和記憶體位元組。
datetime2
( n )
根據公曆,以 19 到 26 個字元儲存一天中的日期和時間。 日期可以包含年、月和日。 時間包含小時、分鐘、秒。 作為選項,您可以根據 n 參數儲存和顯示零到六位數的小數秒。 儲存體大小是 8 位元組。
n 必須是從 0
到 6
之間的值。
注意
沒有預設有效位數與其他SQL平台一樣。 您必須提供從 0
到 6
的有效位數值。
n 值 | Precision | 調整 |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
date
根據西曆使用最多 10 個字元儲存年、月和日的日期。 儲存體大小是 3 位元組。 日期會儲存為 整數,。
time
( n )
n 必須是從 0
到 6
之間的值。
float
[ ( n ) ]
用來搭配浮點數值資料使用的近似數字資料類型。 浮點數資料是近似的,這表示並非資料類型範圍內的所有值都能夠精確地表示。
n 指定用來以科學表示法儲存浮點數的位數。
n 可決定有效位數和儲存體大小。 如果指定 n,則其值必須介於 1
與 53
之間。
n 的預設值是 53
。
注意
沒有預設的有效位數與其他 SQL 平台一樣。 您必須提供從 0
到 6
的有效位數值。
n 值 | Precision | 儲存體大小 |
---|---|---|
1-24 | 7 位數 | 4 個位元組 |
25-53 | 15 位數 | 8 個位元組 |
Azure Synapse Analytics 會將 n 當做兩個可能值的其中一個來處理。 如果 1
<= n<= 24
,則將 n 當作 24
來處理。 如果 25
<= n<= 53
,則將 n 當作 53
來處理。
Azure Synapse Analytics float 數據類型符合 n53
ISO 標準。 雙精確度的同義字是 float(53)。
real
[ ( n ) ]
real 的定義和 float 相同。
real 的 ISO 同義字是 float(24) 。
decimal
[ ( precision [ , scale ] ) ] | numeric
[ ( precision [ , scale ] ) ]
儲存固定有效位數和小數位數的數字。
有效位數
可以在小數點任一端儲存的小數字數總數上限。 有效位數必須是從 1
到最大有效位數 38
之間的值。 預設有效位數是 18
。
scale
小數點右側所能儲存的最大十進位數。
小數位數必須是從 0
到 有效位數 之間的值。 只有在已指定 precision 的情況下,您才能指定 scale。 預設小數位數為 0
,因此 0
<= scale<= precision。 最大儲存體大小會隨著有效位數而不同。
Precision | 儲存體位元組 |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
bigint
| int
| smallint
使用整數資料的 Exact-number 資料類型。 下表會顯示儲存體。
資料類型 | 儲存體位元組 |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
bit
一種整數資料類型,其值有 1
、0
或 NULL 幾種。 Azure Synapse Analytics 會將位元資料行的儲存最佳化。 如果資料表中的 bit 資料行小於或等於 8 個,這些資料行會儲存為 1 個位元組。 如果有 9 到 16 個 bit 資料行,則儲存為 2 個位元組,依此類推。
varchar
[ ( n | MAX
) ] 可變長度、長度為 n 個字節的 Unicode 字元數據。
n 必須是從 1
到 8000
之間的值。 儲存體大小是輸入資料的實際長度再加上 2 位元組。
n 的預設值是 1
。 數據 varchar(MAX)
行最多可在倉儲中儲存 1 MB 的文字。
注意
varchar(MAX)
在倉儲中處於預覽狀態。 如需詳細資訊,請參閱 Microsoft Fabric 中的資料類型。
char
[ ( n ) ]
長度為 n 個字組的固定長度 Unicode 字元數據。
n 必須是從 1
到 8000
之間的值。 儲存體大小是 n 位元組。
n 的預設值是 1
。
varbinary
[ ( n | MAX
) ] 可變長度的二進位資料。
n 可以是從 1
到 8000
之間的值。 儲存體大小是輸入資料的實際長度再加上 2 位元組。
n 的預設值是 7。
數據 varbinary(MAX)
行最多可以將 1 MB 的數據儲存在倉儲中。
注意
varbinary(MAX)
在倉儲中處於預覽狀態。 如需詳細資訊,請參閱 Microsoft Fabric 中的資料類型。
uniqueidentifier
這是 16 位元組的 GUID。
Microsoft Fabric 中的許可權與 Azure Synapse Analytics 的許可權不同。
用戶必須是 Fabric 工作區中管理員、成員或參與者角色的成員。
/
或 \
結尾為 .
。Latin1_General_100_BIN2_UTF8
。 您也可以 建立不區分大小寫 (CI) 定序的倉儲 - Latin1_General_100_CI_AS_KS_WS_SC_UTF8。倉儲中有有限的 Transact-SQL 功能。 如需詳細資訊,請參閱 Microsoft Fabric 中的T-SQL 介面區。
取得數據表的架構修改鎖定、資料庫的共享鎖定,以及SCHEMA的架構穩定性鎖定。
事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊