CREATE TABLE
Platí pro:Azure Synapse Analytics
Analytics Platform System (PDW)
Vytvoří novou tabulku ve službě Azure Synapse Analytics nebo Analytics Platform System (PDW).
Informace o tabulkách a jejich používání najdete v tématu Tabulky v Azure Synapse Analytics.
Diskuze o Azure Synapse Analytics v tomto článku se týkají Azure Synapse Analytics i PDW (Analytics Platform System), pokud není uvedeno jinak.
Poznámka
V případě SQL Server a Azure SQL platforem přejděte na vytvořit tabulku a vyberte požadovanou verzi produktu. Odkaz na Sklad v Microsoft Fabric najdete v tématu CREATE TABLE (Fabric) .
Konvence syntaxe jazyka Transact-SQL
Syntaxe
-- 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
Argumenty
Název_databáze
Název databáze, která bude obsahovat novou tabulku. Výchozí hodnota je aktuální databáze.
Schema_name
Schéma tabulky. Zadání schématu je volitelné. Pokud je prázdné, použije se výchozí schéma.
Table_name
Název nové tabulky. Pokud chcete vytvořit místní dočasnou tabulku, před názvem #
tabulky zadejte . Vysvětlení a pokyny k dočasným tabulkám najdete v tématu Dočasné tabulky ve vyhrazeném fondu SQL v Azure Synapse Analytics.
Column_name
Název sloupce tabulky.
Možnosti sloupce
COLLATE
Windows_collation_name
Určuje kolaci výrazu. Kolace musí být jednou z kolací Windows podporovaných SQL Server. Seznam kolací Windows podporovaných SQL Server najdete v tématu Název kolace Windows (Transact-SQL)/).
NULL
| NOT NULL
Určuje, jestli NULL
jsou ve sloupci povolené hodnoty. Výchozí formát je NULL
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_expression
Určuje výchozí hodnotu sloupce.
Argument | Vysvětlení |
---|---|
constraint_name | Volitelný název omezení. Název omezení je v rámci databáze jedinečný. Název lze znovu použít v jiných databázích. |
constant_expression | Výchozí hodnota sloupce. Výraz musí být hodnota literálu nebo konstanta. Jsou povoleny například tyto konstantní výrazy: 'CA' , 4 . Tyto konstantní výrazy nejsou povoleny: 2+3 , CURRENT_TIMESTAMP . |
Možnosti struktury tabulky
Pokyny k výběru typu tabulky najdete v tématu Indexování tabulek v Azure Synapse Analytics.
CLUSTERED COLUMNSTORE INDEX
Uloží tabulku jako clusterovaný index columnstore. Clusterovaný index columnstore se vztahuje na všechna data tabulky. Toto chování je výchozí pro Azure Synapse Analytics.
HEAP
Uloží tabulku jako haldu. Toto chování je výchozí pro systém platformy Analytics (PDW).
CLUSTERED INDEX
( index_column_name [ ,... n ] )
Uloží tabulku jako clusterovaný index s jedním nebo více klíčovými sloupci. Toto chování ukládá data po řádech. Pomocí index_column_name zadejte název jednoho nebo více klíčových sloupců v indexu. Další informace najdete v tématu Tabulky úložiště řádků v části Obecné poznámky.
LOCATION = USER_DB
Tato možnost je zastaralá. Je syntakticky přijímána, ale už se nevyžaduje a už neovlivňuje chování.
Možnosti distribuce tabulek
Informace o tom, jak zvolit nejlepší metodu distribuce a používat distribuované tabulky, najdete v tématu Návrh distribuovaných tabulek s využitím vyhrazeného fondu SQL v Azure Synapse Analytics.
Doporučení k nejlepší distribuční strategii, která se má použít na základě vašich úloh, najdete v tématu Poradce pro distribuci Synapse SQL (Preview).
DISTRIBUTION = HASH
( distribution_column_name ) Přiřadí každý řádek k jedné distribuci pomocí hodnoty uložené v distribution_column_name. Algoritmus je deterministický, což znamená, že vždy vytvoří hodnotu hash ze stejné hodnoty do stejné distribuce. Distribuční sloupec by měl být definován jako NOT NULL, protože všechny řádky, které mají hodnotu NULL, jsou přiřazeny ke stejné distribuci.
DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] )
Distribuuje řádky na základě hodnot hash až osmi sloupců, což umožňuje rovnoměrnější distribuci dat základní tabulky, snižuje nerovnoměrnou distribuci dat v průběhu času a zlepšuje výkon dotazů.
Poznámka
- Pokud chcete povolit funkci MCD (Multi-Column Distribution), změňte úroveň kompatibility databáze na 50 pomocí tohoto příkazu. Další informace o nastavení úrovně kompatibility databáze najdete v tématu ALTER DATABASE SCOPED CONFIGURATION. Příklad:
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
- Pokud chcete funkci MCD (Multi-Column Distribution) zakázat, spusťte tento příkaz a změňte úroveň kompatibility databáze na AUTO. Příklad:
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO;
Existující tabulky MCD zůstanou, ale budou nečitelné. Dotazy na tabulky MCD vrátí tuto chybu: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.
- Pokud chcete znovu získat přístup k tabulkám MCD, znovu tuto funkci povolte.
- Pokud chcete načíst data do tabulky MCD, použijte příkaz CTAS a zdrojem dat musí být tabulky Synapse SQL.
- Použití SSMS pro generování skriptu pro vytváření tabulek MCD se v současné době podporuje i nad rámec SSMS verze 19.
DISTRIBUTION = ROUND_ROBIN
Distribuuje řádky rovnoměrně napříč všemi rozděleními pomocí kruhového dotazování. Toto chování je výchozí pro Azure Synapse Analytics.
DISTRIBUTION = REPLICATE
Ukládá jednu kopii tabulky na každém výpočetním uzlu. Pro Azure Synapse Analytics je tabulka uložená v distribuční databázi na každém výpočetním uzlu. V systému PDW (Analytics Platform System) je tabulka uložená ve skupině souborů SQL Server, která zahrnuje výpočetní uzel. Toto chování je výchozí pro systém platformy Analytics (PDW).
Možnosti oddílu tabulky
Pokyny k používání oddílů tabulek najdete v tématu Dělení tabulek ve vyhrazeném fondu SQL.
PARTITION
( partition_column_nameRANGE
[ LEFT
| RIGHT
] FOR VALUES
( [ boundary_value [,... n] ] ))
Vytvoří jeden nebo více oddílů tabulky. Tyto oddíly jsou vodorovné řezy tabulky, které umožňují provádět operace na podmnožině řádků bez ohledu na to, jestli je tabulka uložená jako halda, clusterovaný index nebo clusterovaný index columnstore. Na rozdíl od distribučního sloupce neurčí oddíly tabulky rozdělení, ve kterém jsou jednotlivé řádky uložené. Místo toho oddíly tabulky určují, jak jsou řádky seskupeny a uloženy v každé distribuci.
Argument | Vysvětlení |
---|---|
partition_column_name | Určuje sloupec, který Azure Synapse Analytics použije k dělení řádků. Tento sloupec může být libovolný datový typ. Azure Synapse Analytics seřadí hodnoty sloupců oddílů ve vzestupném pořadí. Pořadí od nejnižšího po nejvyšší se ve specifikaci pohybuje od LEFT doRIGHT .RANGE |
RANGE LEFT |
Určuje hodnotu hranice, která patří oddílu na levé straně (nižší hodnoty). Výchozí hodnota je LEFT. |
RANGE RIGHT |
Určuje hodnotu hranice, která patří oddílu na pravé straně (vyšší hodnoty). |
FOR VALUES ( boundary_value [,... n] ) |
Určuje hodnoty hranic pro oddíl. boundary_value je konstantní výraz. Nemůže mít hodnotu NULL. Musí se buď shodovat s datovým typem partition_column_name, nebo na něj implicitně přecházet. Během implicitního převodu se nedá zkrátit, aby velikost a měřítko hodnoty neodpovídala datovému typu partition_column_name Pokud zadáte klauzuli PARTITION , ale nezadáte hodnotu hranice, Azure Synapse Analytics vytvoří dělenou tabulku s jedním oddílem. Pokud je to možné, můžete tabulku později rozdělit na dva oddíly.Pokud zadáte jednu hodnotu hranice, má výsledná tabulka dva oddíly; jedna pro hodnoty nižší než mezní hodnota a jedna pro hodnoty vyšší než hraniční hodnota. Pokud přesunete oddíl do tabulky, která není rozdělená na oddíly, tato tabulka přijme data, ale nebude mít hranice oddílů v metadatech. |
Viz Vytvoření tabulky s oddíly v části Příklady.
Možnost uspořádaného clusterovaného indexu columnstore
Clusterovaný index columnstore (CCI) je výchozí pro vytváření tabulek v Azure Synapse Analytics. Data v CCI nejsou seřazena před komprimací do segmentů columnstore. Při vytváření CCI pomocí funkce ORDER se data před jejich přidáním do segmentů indexu seřadí a výkon dotazů se dá zlepšit. Podrobnosti najdete v tématu Ladění výkonu pomocí uspořádaného clusterovaného indexu columnstore .
Uspořádané CCI je možné vytvořit u sloupců libovolných datových typů podporovaných v Azure Synapse Analytics s výjimkou sloupců řetězců.
Uživatelé se můžou dotazovat column_store_order_ordinal sloupce v sys.index_columns na sloupce, podle které je tabulka seřazená, a pořadí v pořadí.
Podrobnosti najdete v části Ladění výkonu s uspořádaným clusterovaným indexem columnstore .
Datový typ
Azure Synapse Analytics podporuje nejčastěji používané datové typy. Pokud chcete lépe porozumět datovým typům a jejich používání, přečtěte si téma Datové typy pro tabulky v Azure Synapse Analytics.
Poznámka
Podobně jako SQL Server platí limit 8060 bajtů na řádek. To může být blokující problém u tabulek, které mají mnoho sloupců, nebo sloupců s velkými datovými typy, jako nvarchar(max)
je nebo varbinary(max)
. Vložení nebo aktualizace, které porušují limit 8060 bajtů, způsobí kódy chyb 511 nebo 611. Další informace najdete v průvodci architekturou stránek a rozsahů.
Tabulku převodů datových typů najdete v části Implicitní převody v tématu CAST a CONVERT (Transact-SQL). Další informace najdete v tématu Datové typy a funkce data a času (Transact-SQL).
Následující seznam podporovaných datových typů obsahuje jejich podrobnosti a bajty úložiště:
datetimeoffset
[ ( n ) ]
Výchozí hodnota pro n je 7.
datetime2
[ ( n ) ]
Stejné jako datetime
s tím rozdílem, že můžete zadat počet desetinných sekund. Výchozí hodnota pro n je 7
.
n hodnota | Přesnost | Měřítko |
---|---|---|
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
Ukládá datum a čas dne s 19 až 23 znaky podle gregoriánského kalendáře. Datum může obsahovat rok, měsíc a den. Čas obsahuje hodiny, minuty a sekundy. Jako možnost můžete zobrazit tři číslice pro zlomky sekund. Velikost úložiště je 8 bajtů.
smalldatetime
Ukládá datum a čas. Velikost úložiště jsou 4 bajty.
date
Ukládá datum s maximálně 10 znaky pro rok, měsíc a den podle gregoriánského kalendáře. Velikost úložiště jsou 3 bajty. Datum je uloženo jako celé číslo.
time
[ ( n ) ]
Výchozí hodnota pro n je 7
.
float
[ ( n ) ]
Přibližný datový typ čísla pro použití s číselnými daty s plovoucí desetinou čárkou Data s plovoucí desetinou čárkou jsou přibližná, což znamená, že ne všechny hodnoty v oblasti datových typů mohou být přesně reprezentovány. n určuje počet bitů použitých k uložení mantissa ve vědeckém zápisu float
. n určuje přesnost a velikost úložiště. Pokud je zadán n, musí to být hodnota mezi 1
a 53
. Výchozí hodnota n je 53
.
n hodnota | Přesnost | Velikost úložiště |
---|---|---|
1-24 | 7 číslic | 4 bajty |
25-53 | 15 číslic | 8 bajtů |
Azure Synapse Analytics považuje n za jednu ze dvou možných hodnot. Pokud 1
<= n<= 24
, n se považuje za 24
. Pokud 25
<= n<= 53
, n se považuje za 53
.
Datový typ Azure Synapse Analytics float
je v souladu se standardem ISO pro všechny hodnoty od1
n do 53
. Synonymum pro dvojitou přesnost je float(53)
.
real
[ ( n ) ]
Definice reálného je stejná jako float. Synonymum ISO pro real
je float(24)
.
decimal
[ ( přesnost [ , měřítko ] ) ] | numeric
[ ( přesnost [ , měřítko ] ) ]
Ukládá čísla s pevnou přesností a měřítkem.
Přesnost
Maximální celkový počet desetinných číslic, které lze uložit, a to jak vlevo, tak vpravo od desetinné čárky. Přesnost musí být hodnota od 1
maximální přesnosti .38
Výchozí přesnost je 18
.
Měřítko
Maximální počet desetinných číslic, které lze uložit napravo od desetinné čárky. Měřítko musí být hodnota od 0
až do přesnosti. Měřítko lze zadat pouze v případě, že je zadána přesnost. Výchozí měřítko je 0
a proto 0
<= scale<= přesnost. Maximální velikost úložiště se liší v závislosti na přesnosti.
Přesnost | Bajty úložiště |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
money
| smallmoney
Datové typy, které představují hodnoty měny.
Typ dat | Bajty úložiště |
---|---|
money |
8 |
smallmoney |
4 |
bigint
| int
| smallint
| tinyint
Datové typy s přesným číslem, které používají celočíselná data. Úložiště je znázorněno v následující tabulce.
Typ dat | Bajty úložiště |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
tinyint |
1 |
bit
Celočíselný datový typ, který může mít hodnotu 1
, 0
nebo NULL. Azure Synapse Analytics optimalizuje úložiště bitových sloupců. Pokud je v tabulce 8 nebo méně bitů, jsou sloupce uloženy jako 1 bajt. Pokud existují 9-16bitové sloupce, jsou sloupce uloženy jako 2 bajty atd.
nvarchar
[ ( n | max
) ] – max
platí jenom pro Azure Synapse Analytics.
Data znaků Unicode s proměnlivou délkou. n může být hodnota od 1 do 4000. max
označuje, že maximální velikost úložiště je 2^31–1 bajtů (2 GB). Velikost úložiště v bajtech je dvojnásobný počet zadaných znaků + 2 bajty. Zadaná data můžou mít nulovou délku.
nchar
[ ( n ) ]
Data znaků Unicode s pevnou délkou a délkou n znaků. n musí být hodnota od 1
do 4000
. Velikost úložiště je dvakrát n bajtů.
varchar
[ ( n | max
) ] – max
platí jenom pro Azure Synapse Analytics.
Data o proměnlivé délce znaků, která nejsou ve znakové sadě Unicode, o délce n bajtů. n musí být hodnota od 1
do 8000
. max
označuje, že maximální velikost úložiště je 2^31–1 bajtů (2 GB). Velikost úložiště je skutečná délka zadaných dat + 2 bajty.
char
[ ( n ) ]
Data znaků s pevnou délkou, která nejsou ve znakové sadě Unicode, o délce n bajtů. n musí být hodnota od 1
do 8000
. Velikost úložiště je n bajtů. Výchozí hodnota pro n je 1
.
varbinary
[ ( n | max
) ] – max
platí jenom pro Azure Synapse Analytics.
Binární data s proměnlivou délkou. n může být hodnota od 1
do 8000
. max
označuje, že maximální velikost úložiště je 2^31–1 bajtů (2 GB). Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Výchozí hodnota pro n je 7.
binary
[ ( n ) ]
Binární data s pevnou délkou o délce n bajtů. n může být hodnota od 1
do 8000
. Velikost úložiště je n bajtů. Výchozí hodnota pro n je 7
.
uniqueidentifier
Je 16 bajtový identifikátor GUID.
Oprávnění
Vytvoření tabulky vyžaduje oprávnění v db_ddladmin
pevné databázové roli, nebo:
CREATE TABLE
oprávnění k databáziALTER SCHEMA
oprávnění ke schématu, které bude obsahovat tabulku
Vytvoření tabulky s oddíly vyžaduje oprávnění v db_ddladmin
pevné databázové roli nebo
ALTER ANY DATASPACE
Oprávnění
Přihlášení, které vytvoří místní dočasnou tabulku, obdrží CONTROL
k tabulce oprávnění , INSERT
SELECT
, a UPDATE
.
Poznámky
Minimální a maximální limity najdete v tématu limity kapacity služby Azure Synapse Analytics.
Určení počtu oddílů tabulky
Každá tabulka definovaná uživatelem je rozdělená na několik menších tabulek, které jsou uložené v samostatných umístěních označovaných jako distribuce. Azure Synapse Analytics používá 60 distribucí. V pdw (Analytics Platform System) závisí počet distribucí na počtu výpočetních uzlů.
Každá distribuce obsahuje všechny oddíly tabulky. Pokud například existuje 60 distribucí a čtyři oddíly tabulky plus jeden prázdný oddíl, bude existovat 300 oddílů (5 x 60 = 300). Pokud je tabulka clusterovaný index columnstore, bude existovat jeden index columnstore na oddíl, což znamená, že budete mít 300 indexů columnstore.
Doporučujeme použít méně oddílů tabulky, abyste zajistili, že každý index columnstore má dostatek řádků, aby mohl využívat výhody indexů columnstore. Další informace najdete v tématech Dělení tabulek ve vyhrazeném fondu SQL a Indexy u tabulek vyhrazeného fondu SQL v Azure Synapse Analytics.
Tabulka rowstore (halda nebo clusterovaný index)
Tabulka rowstore je tabulka uložená v pořadí po řádech. Jedná se o haldu nebo clusterovaný index. Azure Synapse Analytics vytvoří všechny tabulky rowstore s kompresí stránky; toto chování není možné konfigurovat uživatelem.
Tabulka Columnstore (index columnstore)
Tabulka columnstore je tabulka uložená v pořadí po sloupcích. Index columnstore je technologie, která spravuje data uložená v tabulce columnstore. Clusterovaný index columnstore nemá vliv na distribuci dat. Má vliv na to, jak jsou data uložena v jednotlivých distribucích.
Pokud chcete změnit tabulku rowstore na tabulku columnstore, odstraňte všechny existující indexy tabulky a vytvořte clusterovaný index columnstore. Příklad najdete v tématu CREATE COLUMNSTORE INDEX (Transact-SQL).
Další informace najdete v těchto článcích:
- Souhrn funkcí indexů columnstore se správou verzí
- Indexování tabulek ve službě Azure Synapse Analytics
- Průvodce indexy columnstore
Omezení a omezení
- U distribučního sloupce nemůžete definovat výchozí omezení.
- Název tabulky nesmí být delší než 100 znaků.
Oddíly
Sloupec oddílu nemůže mít kolaci pouze s kódováním Unicode. Například následující příkaz se nezdaří:
CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))
Pokud je boundary_value hodnota literálu, která musí být implicitně převedena na datový typ v partition_column_name, dojde k nesrovnalostem. Hodnota literálu se zobrazuje prostřednictvím systémových zobrazení služby Azure Synapse Analytics, ale převedená hodnota se používá pro operace Transact-SQL.
Dočasné tabulky
Globální dočasné tabulky, které začínají ##
na , se nepodporují.
Místní dočasné tabulky mají následující omezení a omezení:
- Jsou viditelné pouze pro aktuální relaci. Azure Synapse Analytics je na konci relace automaticky zahodí. Pokud je chcete explicitně vynechat, použijte příkaz DROP TABLE.
- Nedají se přejmenovat.
- Nemůžou mít oddíly ani zobrazení.
- Jejich oprávnění se nedají změnit.
GRANT
Příkazy ,DENY
aREVOKE
se nedají použít s místními dočasnými tabulkami. - Příkazy databázové konzoly jsou blokované pro dočasné tabulky.
- Pokud se v rámci dávky používá více než jedna místní dočasná tabulka, musí mít každá tabulka jedinečný název. Pokud je ve více relacích spuštěná stejná dávka a vytváří se stejná místní dočasná tabulka, Azure Synapse Analytics interně připojí číselnou příponu k názvu místní dočasné tabulky, aby zachovala jedinečný název pro každou místní dočasnou tabulku.
Chování při uzamykání
Zamkne exkluzivní zámek na stole. Přebírá sdílený zámek objektů DATABASE, SCHEMA a SCHEMARESOLUTION.
Příklady sloupců
A. Určení kolace sloupce
V následujícím příkladu se tabulka MyTable
vytvoří se dvěma různými sloupcovými kolacemi. Ve výchozím nastavení má sloupec mycolumn1
výchozí Latin1_General_100_CI_AS_KS_WS kolace. Sloupec mycolumn2
obsahuje kolaci Frisian_100_CS_AS.
CREATE TABLE MyTable
(
mycolumnnn1 nvarchar,
mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
B. Určení výchozího omezení pro sloupec
Následující příklad ukazuje syntaxi pro určení výchozí hodnoty sloupce. Sloupec colA má výchozí omezení s názvem constraint_colA a výchozí hodnotu 0.
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
Příklady dočasných tabulek
C. Vytvoření místní dočasné tabulky
Následující příklad vytvoří místní dočasnou tabulku s názvem #myTable. Tabulka je určena názvem se třemi částmi, který začíná na #.
CREATE TABLE AdventureWorks.dbo.#myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id),
CLUSTERED COLUMNSTORE INDEX
)
;
Příklady pro strukturu tabulky
D. Vytvoření tabulky s clusterovaným indexem columnstore
Následující příklad vytvoří distribuovanou tabulku s clusterovaným indexem columnstore. Každá distribuce se ukládá jako columnstore.
Clusterovaný index columnstore nemá vliv na způsob distribuce dat. data se vždy distribuují podle řádku. Clusterovaný index columnstore ovlivňuje způsob ukládání dat v jednotlivých distribucích.
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH
(
DISTRIBUTION = HASH ( colB ),
CLUSTERED COLUMNSTORE INDEX
)
;
E. Vytvoření uspořádaného clusterovaného indexu columnstore
Následující příklad ukazuje, jak vytvořit uspořádaný clusterovaný index columnstore. Index je seřazený podle data SHIPDATE.
CREATE TABLE Lineitem
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))
AS
SELECT * FROM ext_Lineitem
Příklady distribuce tabulek
F. Vytvoření tabulky ROUND_ROBIN
Následující příklad vytvoří ROUND_ROBIN tabulku se třemi sloupci a bez oddílů. Data jsou rozložená napříč všemi distribucemi. Tabulka se vytvoří pomocí CLUSTERED COLUMNSTORE INDEX, který poskytuje lepší výkon a kompresi dat než clusterovaný index haldy nebo rowstore.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH ( CLUSTERED COLUMNSTORE INDEX );
G. Vytvoření tabulky s distribuovanou hodnotou hash ve více sloupcích (Preview)
Následující příklad vytvoří stejnou tabulku jako předchozí příklad. V této tabulce jsou ale řádky distribuované (podle id
sloupců a zipCode
). Tabulka se vytvoří pomocí clusterovaného indexu columnstore, který poskytuje lepší výkon a kompresi dat než clusterovaný index haldy nebo rowstore.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id, zipCode),
CLUSTERED COLUMNSTORE INDEX
);
H. Vytvoření replikované tabulky
Následující příklad vytvoří replikovanou tabulku podobnou předchozím příkladům. Replikované tabulky se plně kopírují do každého výpočetního uzlu. Díky této kopii na každém výpočetním uzlu dochází u dotazů k omezení přesunu dat. Tento příklad je vytvořen pomocí CLUSTERED INDEX, který poskytuje lepší kompresi dat než haldy. Halda nemusí obsahovat dostatek řádků k dosažení dobré komprese CLUSTERED COLUMNSTORE INDEX.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = REPLICATE,
CLUSTERED INDEX (lastName)
);
Příklady pro oddíly tabulky
I. Vytvoření tabulky s oddíly
Následující příklad vytvoří stejnou tabulku jako v příkladu A s přidáním dělení RANGE LEFT ve sloupci id
. Určuje čtyři hodnoty hranic oddílů, jejichž výsledkem je pět oddílů.
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
);
V tomto příkladu se data seřadí do následujících oddílů:
- Oddíl 1: sloupec <= 10
- Oddíl 2: 10 < col <= 20
- Oddíl 3: 20 < col <= 30
- Oddíl 4: 30 < col <= 40
- Oddíl 5: 40 < sloupců
Pokud byla stejná tabulka rozdělená na oddíly OBLAST VPRAVO místo DOLEVA (výchozí), data se seřadí do následujících oddílů:
- Oddíl 1: sloupec < 10
- Oddíl 2: 10 <= sloupec < 20
- Oddíl 3: 20 <= sloupec < 30
- Oddíl 4: 30 <= sloupec < 40
- Oddíl 5: 40 <= sloupec
J. Vytvoření tabulky s oddíly s jedním oddílem
Následující příklad vytvoří dělenou tabulku s jedním oddílem. Neurčí žádnou hodnotu hranice, což má za následek jeden oddíl.
CREATE TABLE myTable (
id int NOT NULL,
lastName varchar(20),
zipCode int)
WITH
(
PARTITION ( id RANGE LEFT FOR VALUES ( )),
CLUSTERED COLUMNSTORE INDEX
)
;
K. Vytvoření tabulky s dělením kalendářních dat
Následující příklad vytvoří novou tabulku s názvem myTable
s dělením date
na sloupec. Když pro hodnoty hranic použijete OBLAST ZPRAVA a kalendářní data, vloží se do každého oddílu měsíc dat.
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'
))
);
Další kroky
Platí pro:Sklad v Microsoft Fabric
Vytvoří novou tabulku ve skladu v Microsoft Fabric.
Další informace najdete v tématu Vytváření tabulek ve skladu v Microsoft Fabric.
Poznámka
Referenční informace o Azure Synapse Analytics and Analytics Platform System (PDW) najdete v tématu CREATE TABLE (Azure Synapse Analytics). V případě SQL Server a Azure SQL platforem přejděte na CREATE TABLE a v rozevíracím seznamu verzí vyberte požadovanou verzi produktu.
Konvence syntaxe jazyka Transact-SQL
Syntaxe
-- 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
[ <column_constraint> ]
<data type> ::=
datetime2 [ ( n ) ]
| date
| time [ ( n ) ]
| float [ ( n ) ]
| real [ ( n ) ]
| decimal [ ( precision [ , scale ] ) ]
| numeric [ ( precision [ , scale ] ) ]
| bigint
| int
| smallint
| bit
| varchar [ ( n ) ]
| char [ ( n ) ]
| varbinary [ ( n ) ]
| binary [ ( n ) ]
| uniqueidentifier
Argumenty
Název_databáze
Název databáze, která bude obsahovat novou tabulku. Výchozí hodnota je aktuální databáze.
Schema_name
Schéma tabulky. Zadání schématu je volitelné. Pokud je prázdné, použije se výchozí schéma.
Table_name
Název nové tabulky. Pokud chcete vytvořit místní dočasnou tabulku, před názvem #
tabulky zadejte .
Column_name
Název sloupce tabulky.
Možnosti sloupce
NULL
| NOT NULL
Určuje, jestli NULL
jsou ve sloupci povolené hodnoty. Výchozí formát je NULL
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_expression
Určuje výchozí hodnotu sloupce.
Argument | Vysvětlení |
---|---|
constraint_name | Volitelný název omezení. Název omezení je v rámci databáze jedinečný. Název lze znovu použít v jiných databázích. |
constant_expression | Výchozí hodnota sloupce. Výraz musí být hodnota literálu nebo konstanta. Jsou povoleny například tyto konstantní výrazy: 'CA' , 4 . Tyto konstantní výrazy nejsou povoleny: 2+3 , CURRENT_TIMESTAMP . |
Datový typ
Microsoft Fabric podporuje nejčastěji používané datové typy.
Poznámka
Podobně jako SQL Server platí limit 8060 bajtů na řádek. To může být blokující problém u tabulek, které mají mnoho sloupců, nebo sloupců s velkými datovými typy, jako varchar(8000)
je nebo varbinary(8000)
. Vložení nebo aktualizace, které porušují limit 8060 bajtů, způsobí kódy chyb 511 nebo 611. Další informace najdete v průvodci architekturou stránek a rozsahů.
Tabulku převodů datových typů najdete v části Implicitní převody v tématu CAST a CONVERT (Transact-SQL). Další informace najdete v tématu Datové typy a funkce data a času (Transact-SQL).
Následující seznam podporovaných datových typů obsahuje jejich podrobnosti a bajty úložiště.
datetime2
( n )
Ukládá datum a čas dne s 19 až 26 znaky podle gregoriánského kalendáře. Datum může obsahovat rok, měsíc a den. Čas obsahuje hodiny, minuty a sekundy. Jako možnost můžete uložit a zobrazit nula až šest číslic pro desetinné sekundy na základě parametru n . Velikost úložiště je 8 bajtů. n musí být hodnota od 0
do 6
.
Poznámka
Neexistuje žádná výchozí přesnost jako u jiných platforem SQL. Je nutné zadat hodnotu přesnosti od 0
do 6
.
n hodnota | Přesnost | Měřítko |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
date
Ukládá datum s maximálně 10 znaky pro rok, měsíc a den podle gregoriánského kalendáře. Velikost úložiště jsou 3 bajty. Datum je uloženo jako celé číslo.
time
( n )
n musí být hodnota od 0
do 6
.
float
[ ( n ) ]
Přibližný datový typ čísla pro použití s číselnými daty s plovoucí desetinou čárkou Data s plovoucí desetinou čárkou jsou přibližná, což znamená, že ne všechny hodnoty v oblasti datových typů mohou být přesně reprezentovány. n určuje počet bitů použitých k uložení mantissa ve vědeckém zápisu float
. n určuje přesnost a velikost úložiště. Pokud je zadán n, musí to být hodnota mezi 1
a 53
. Výchozí hodnota n je 53
.
Poznámka
Neexistuje žádná výchozí přesnost jako u jiných platforem SQL. Je nutné zadat hodnotu přesnosti od 0
do 6
.
n hodnota | Přesnost | Velikost úložiště |
---|---|---|
1-24 | 7 číslic | 4 bajty |
25-53 | 15 číslic | 8 bajtů |
Azure Synapse Analytics považuje n za jednu ze dvou možných hodnot. Pokud 1
<= n<= 24
, n se považuje za 24
. Pokud 25
<= n<= 53
, n se považuje za 53
.
Datový typ Azure Synapse Analytics float
je v souladu se standardem ISO pro všechny hodnoty od1
n do 53
. Synonymum pro dvojitou přesnost je float(53)
.
real
[ ( n ) ]
Definice reálného je stejná jako float. Synonymum ISO pro real
je float(24)
.
decimal
[ ( přesnost [ , měřítko ] ) ] | numeric
[ ( přesnost [ , měřítko ] ) ]
Ukládá čísla s pevnou přesností a měřítkem.
Přesnost
Maximální celkový počet desetinných číslic, které lze uložit, a to jak vlevo, tak vpravo od desetinné čárky. Přesnost musí být hodnota od 1
maximální přesnosti .38
Výchozí přesnost je 18
.
Měřítko
Maximální počet desetinných číslic, které lze uložit napravo od desetinné čárky. Měřítko musí být hodnota od 0
přesnosti. Měřítko můžete zadat pouze v případě, že je zadána přesnost. Výchozí měřítko je 0
a tak 0
<= scale<= přesnost. Maximální velikost úložiště se liší v závislosti na přesnosti.
Přesnost | Bajty úložiště |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
bigint
| int
| smallint
Datové typy s přesným číslem, které používají celočíselná data. Úložiště je znázorněno v následující tabulce.
Typ dat | Bajty úložiště |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
bit
Celočíselný datový typ, který může převzít hodnotu 1
, 0
nebo NULL. Azure Synapse Analytics optimalizuje úložiště bitových sloupců. Pokud je v tabulce 8 nebo méně bitových sloupců, uloží se sloupce jako 1 bajt. Pokud existují 9 až 16bitové sloupce, ukládají se sloupce jako 2 bajty atd.
varchar
[ ( n ) ] Proměnná délka, znaková data Unicode o délce n bajtů. n musí být hodnota od 1
do 8000
. Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Výchozí hodnota pro n je 1
.
char
[ ( n ) ]
Data znaků Unicode s pevnou délkou o délce n bajtů. n musí být hodnota od 1
do 8000
. Velikost úložiště je n bajtů. Výchozí hodnota pro n je 1
.
varbinary
[ ( n ) ] Binární data s proměnnou délkou. n může být hodnota od 1
do 8000
. Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Výchozí hodnota pro n je 7.
uniqueidentifier
Je identifikátor GUID o 16 bajtů.
Oprávnění
Oprávnění v Microsoft Fabric se liší od oprávnění Azure Synapse Analytics.
Limity a omezení
- Název tabulky nesmí být delší než 100 znaků.
- Názvy tabulek ve skladu v Microsoft Fabric nemůžou obsahovat znaky
/
nebo\
. - Výchozí a pouze kolace podporovaná ve službě Warehouse je Latin1_General_100_BIN2_UTF8.
Poznámky
Funkce TSQL ve službě Warehouse jsou omezené. Další informace najdete v tématu TSQL Surface Area v Microsoft Fabric.
Chování při zamykání
Převezme Schema-Modification zámek tabulky, sdílený zámek databáze a zámek Schema-Stability schématu.