Sdílet prostřednictvím


CREATE TABLE

Platí pro:Azure Synapse AnalyticsAnalytics 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) .

Poznámka

Bezserverový fond SQL v Azure Synapse Analytics podporuje pouze externí a dočasné tabulky.

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.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_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 klauzuliPARTITION, 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 datetimes 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 0do 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, 0nebo 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ázi
  • ALTER 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ží CONTROLk tabulce oprávnění , INSERTSELECT, 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:

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. GRANTPříkazy , DENYa REVOKE 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 mycolumn1vý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 myTables 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.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_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 0př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, 0nebo 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.

Další kroky