SKAPA TABELL
gäller för:Azure Synapse Analytics
Analytics Platform System (PDW)
CREATE TABLE (Azure Synapse Analytics)
Skapar en ny tabell i Azure Synapse Analytics eller Analytics Platform System (PDW).
Information om tabeller och hur du använder dem finns i Tabeller i Azure Synapse Analytics.
Diskussioner om Azure Synapse Analytics i den här artikeln gäller för både Azure Synapse Analytics och Analytics Platform System (PDW) om inget annat anges.
Not
För SQL Server- och Azure SQL-plattformar går du till CREATE TABLE och väljer önskad produktversion. Information om SQL-databas i Microsoft Fabric finns i CREATE TABLE. Referens till Warehouse i Microsoft Fabric finns i CREATE TABLE (Fabric).
Not
Serverlös SQL-pool i Azure Synapse Analytics stöder endast externa och tillfälliga tabeller.
Transact-SQL syntaxkonventioner
Syntax
-- 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
Argument
database_name
Namnet på databasen som ska innehålla den nya tabellen. Standardvärdet är den aktuella databasen.
schema_name
Schemat för tabellen. Det är valfritt att ange schema. Om det är tomt används standardschemat.
table_name
Namnet på den nya tabellen. Om du vill skapa en lokal tillfällig tabell föregår du tabellnamnet med #
. Förklaringar och vägledning om tillfälliga tabeller finns i Temporära tabeller i en dedikerad SQL-pool i Azure Synapse Analytics.
column_name
Namnet på en tabellkolumn.
Kolumnalternativ
COLLATE
Windows_collation_name
Anger sorteringen för uttrycket. Sorteringen måste vara en av De Windows-sorteringar som stöds av SQL Server. En lista över Windows-sorteringar som stöds av SQL Server finns i Windows-sorteringsnamn (Transact-SQL)).
NULL
| NOT NULL
Anger om NULL
värden tillåts i kolumnen. Standardvärdet är NULL
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_expression
Anger standardkolumnvärdet.
Argument | Förklaring |
---|---|
constraint_name |
Det valfria namnet på villkoret. Villkorsnamnet är unikt i databasen. Namnet kan återanvändas i andra databaser. |
constant_expression |
Standardvärdet för kolumnen. Uttrycket måste vara ett literalvärde eller en konstant. Dessa konstanta uttryck tillåts till exempel: 'CA' , 4 . Dessa konstanta uttryck tillåts inte: 2+3 , CURRENT_TIMESTAMP . |
Alternativ för tabellstruktur
Information om hur du väljer typ av tabell finns i Indexeringstabeller i Azure Synapse Analytics.
CLUSTERED COLUMNSTORE INDEX
Lagrar tabellen som ett grupperat kolumnlagringsindex. Det klustrade kolumnlagringsindexet gäller för alla tabelldata. Det här beteendet är standard för Azure Synapse Analytics.
HEAP
Lagrar tabellen som en heap. Det här beteendet är standard för Analytics Platform System (PDW).
CLUSTERED INDEX
( index_column_name [ ,...n ] )
Lagrar tabellen som ett grupperat index med en eller flera nyckelkolumner. Det här beteendet lagrar data efter rad. Använd index_column_name för att ange namnet på en eller flera nyckelkolumner i indexet. Mer information finns i radlagringstabeller.
LOCATION = USER_DB
Det här alternativet är inaktuellt. Det är en giltig syntax men krävs inte längre och påverkar inte längre beteendet.
Alternativ för tabelldistribution
Information om hur du väljer den bästa distributionsmetoden och använder distribuerade tabeller finns i utforma distribuerade tabeller med hjälp av en dedikerad SQL-pool i Azure Synapse Analytics.
Rekommendationer om den bästa distributionsstrategin som ska användas baserat på dina arbetsbelastningar finns i Synapse SQL Distribution Advisor (förhandsversion).
DISTRIBUTION = HASH
( distribution_column_name ) Tilldelar varje rad till en distribution genom att hasha värdet som lagras i distribution_column_name. Algoritmen är deterministisk, vilket innebär att den alltid hashar samma värde till samma fördelning. Distributionskolumnen ska definieras som INTE NULL eftersom alla rader som har NULL har tilldelats samma distribution.
DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] )
Distribuerar raderna baserat på hash-värdena för upp till åtta kolumner, vilket möjliggör en jämnare fördelning av bastabelldata, vilket minskar datasnedvridningen över tid och förbättrar frågeprestandan.
Not
- Om du vill aktivera mcd-funktionen (multi-column distribution) ändrar du databasens kompatibilitetsnivå till 50 med det här kommandot. Mer information om hur du ställer in databasens kompatibilitetsnivå finns i ALTER DATABASE SCOPED CONFIGURATION. Till exempel:
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
- Om du vill inaktivera mcd-funktionen (multi-column distribution) kör du det här kommandot för att ändra databasens kompatibilitetsnivå till AUTO. Till exempel:
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO;
Befintliga MCD-tabeller förblir men blir olästa. Frågor över MCD-tabeller returnerar det här felet: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.
- Om du vill få åtkomst till MCD-tabeller igen aktiverar du funktionen igen.
- Om du vill läsa in data i en MCD-tabell använder du
CREATE TABLE AS SELECT
-instruktionen (CTAS) och datakällan måste vara Synapse SQL-tabeller.
- Generera skript för att skapa MCD-tabeller stöds för närvarande SQL Server Management Studio (SSMS) version 19 och senare versioner.
DISTRIBUTION = ROUND_ROBIN
Distribuerar raderna jämnt över alla distributioner på ett resursallokeringssätt. Det här beteendet är standard för Azure Synapse Analytics.
DISTRIBUTION = REPLICATE
Lagrar en kopia av tabellen på varje beräkningsnod. För Azure Synapse Analytics lagras tabellen i en distributionsdatabas på varje beräkningsnod. För Analytics Platform System (PDW) lagras tabellen i en SQL Server-filgrupp som sträcker sig över beräkningsnoden. Det här beteendet är standard för Analytics Platform System (PDW).
Alternativ för tabellpartition
Information om hur du använder tabellpartitioner finns i Partitioneringstabeller i dedikerade SQL-pooler.
PARTITION
( partition_column_nameRANGE
[ LEFT
| RIGHT
] FOR VALUES
( [ boundary_value [,...n] ] ))
Skapar en eller flera tabellpartitioner. Dessa partitioner är vågräta tabellsektorer som gör att du kan tillämpa åtgärder på delmängder av rader, oavsett om tabellen lagras som ett heap-, klustrat index eller grupperat kolumnlagringsindex. Till skillnad från distributionskolumnen avgör tabellpartitioner inte distributionen där varje rad lagras. I stället avgör tabellpartitioner hur raderna grupperas och lagras i varje distribution.
Argument | Förklaring |
---|---|
partition_column_name | Anger den kolumn som Azure Synapse Analytics använder för att partitionera raderna. Den här kolumnen kan vara vilken datatyp som helst. Azure Synapse Analytics sorterar partitionskolumnvärdena i stigande ordning. Den låga till höga ordningen går från LEFT till RIGHT i RANGE -specifikationen. |
RANGE LEFT |
Anger att gränsvärdet tillhör partitionen till vänster (lägre värden). Standardvärdet är VÄNSTER. |
RANGE RIGHT |
Anger att gränsvärdet tillhör partitionen till höger (högre värden). |
FOR VALUES ( boundary_value [,...n] ) |
Anger gränsvärdena för partitionen.
boundary_value är ett konstant uttryck. Det kan inte vara NULL. Den måste antingen matcha eller implicit konverteras till datatypen för partition_column_name. Det kan inte trunkeras under implicit konvertering så att värdets storlek och skala inte matchar datatypen för partition_column_name Om du anger ett gränsvärde har den resulterande tabellen två partitioner. ett för värden som är lägre än gränsvärdet och ett för värdena som är högre än gränsvärdet. Om du flyttar en partition till en icke-partitionerad tabell tar den icke-partitionerade tabellen emot data, men har inte partitionsgränserna i sina metadata. |
Ett exempel finns i Skapa en partitionerad tabell.
Ordnat grupperat columnstore-indexalternativ
Klustrat columnstore-index (CCI) är standardvärdet för att skapa tabeller i Azure Synapse Analytics. Data i en CCI sorteras inte innan de komprimeras till kolumnlagringssegment. När du skapar en CCI med ORDER sorteras data innan de läggs till i indexsegment och frågeprestanda kan förbättras. Mer information om sorterade grupperade kolumnlagringsindex i Azure Synapse Analytics finns i Prestandajustering med ordnat grupperat columnstore-index.
En ordnad CCI kan skapas på kolumner av alla datatyper som stöds i Azure Synapse Analytics förutom strängkolumner.
Användare kan fråga column_store_order_ordinal
kolumn i sys.index_columns
för kolumnen eller kolumnerna som en tabell sorteras efter och sekvensen i ordningen.
Mer information finns i Prestandajustering med ordnat grupperat kolumnlagringsindex.
Datatyp
Azure Synapse Analytics stöder de vanligaste datatyperna. Mer information om datatyper och hur du använder dem finns i Datatyper för tabeller i Azure Synapse Analytics.
Not
I likhet med SQL Server finns det en gräns på 8 060 byte per rad. Detta kan bli ett blockerande problem för tabeller som har många kolumner eller kolumner med stora datatyper, till exempel nvarchar(max) eller varbinary(max). Infogningar eller uppdateringar som bryter mot gränsen på 8 060 byte resulterar i felkoderna 511 eller 611. Mer information finns i arkitekturguiden för sidor och omfattningar.
En tabell med datatypkonverteringar finns i avsnittet Implicita konverteringar i CAST och CONVERT (Transact-SQL). Mer information finns i Datatyper och funktioner för datum och tid (Transact-SQL).
Följande lista över datatyper som stöds innehåller deras information och lagringsbyte:
datetimeoffset
[ ( n ) ]
Standardvärdet för n är 7.
datetime2
[ ( n ) ]
Samma som datetime
, förutom att du kan ange antalet bråksekunder. Standardvärdet för n är 7
.
n värde | Precision | Skala |
---|---|---|
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
Lagrar datum och tid på dagen med 19 till 23 tecken enligt den gregorianska kalendern. Datumet kan innehålla år, månad och dag. Tiden innehåller timme, minuter, sekunder. Som ett alternativ kan du visa tre siffror för bråksekunder. Lagringsstorleken är 8 byte.
smalldatetime
Lagrar ett datum och en tid. Lagringsstorleken är 4 byte.
date
Lagrar ett datum med högst 10 tecken för år, månad och dag enligt den gregorianska kalendern. Lagringsstorleken är 3 byte. Datum lagras som ett heltal.
time
[ ( n ) ]
Standardvärdet för n är 7
.
float
[ ( n ) ]
Ungefärlig taldatatyp för användning med numeriska flyttalsdata. Flyttalsdata är ungefärliga, vilket innebär att inte alla värden i datatypområdet kan representeras exakt.
n anger antalet bitar som används för att lagra mantissa för float
i vetenskaplig notation.
n avgör precisionen och lagringsstorleken. Om n anges måste det vara ett värde mellan 1
och 53
. Standardvärdet för n är 53
.
n värde | Precision | Lagringsstorlek |
---|---|---|
1-24 | 7 siffror | 4 byte |
25-53 | 15 siffror | 8 byte |
Azure Synapse Analytics behandlar n som ett av två möjliga värden. Om 1
<= n<= 24
behandlas n som 24
. Om 25
<= n<= 53
behandlas n som 53
.
Azure Synapse Analytics flyttal datatyp uppfyller ISO-standarden för alla värden för n från 1
till 53
. Synonymen för dubbel precision är float(53).
real
[ ( n ) ]
Definitionen av verkliga är samma som flyttal. ISO-synonymen för verkliga är float(24).
decimal
[ ( precision [ , skala ] ) ] | numeric
[ ( precision [ , skala ] ) ] ]
Lagrar fasta precisions- och skalningsnummer.
precision
Det maximala totala antalet decimalsiffror som kan lagras på båda sidor av decimaltecknet. Precisionen måste vara ett värde från 1
genom den maximala precisionen för 38
. Standardprecisionen är 18
.
skala
Det maximala antalet decimalsiffror som kan lagras till höger om decimaltecknet.
Scale måste vara ett värde från 0
till precision. Du kan bara ange skala om precision anges. Standardskalan är 0
och därför 0
<= skala<= precision. De maximala lagringsstorlekarna varierar beroende på precisionen.
Precision | Lagringsbyte |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
money
| smallmoney
Datatyper som representerar valutavärden.
Datatyp | Lagringsbyte |
---|---|
money |
8 |
smallmoney |
4 |
bigint
| int
| smallint
| tinyint
Exakta datatyper som använder heltalsdata. Lagringen visas i följande tabell.
Datatyp | Lagringsbyte |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
tinyint |
1 |
bit
En heltalsdatatyp som kan ta värdet 1
, 0
eller NULL. Azure Synapse Analytics optimerar lagringen av bitkolumner. Om det finns 8 eller färre bitars kolumner i en tabell lagras kolumnerna som 1 byte. Om det finns mellan 9 och 16 bitars kolumner lagras kolumnerna som 2 byte och så vidare.
nvarchar
[ ( n | max
) ] Unicode-teckendata med variabel längd.
n kan vara ett värde mellan 1 och 4 000.
max
anger att den maximala lagringsstorleken är 2^31–1 byte (2 GB). Lagringsstorleken i byte är två gånger så många tecken som angetts + 2 byte. De data som anges kan vara noll tecken långa. Den max
längden gäller endast för Azure Synapse Analytics.
nchar
[ ( n ) ]
Unicode-teckendata med fast längd med en längd på n tecken.
n måste vara ett värde från 1
till 4000
. Lagringsstorleken är två gånger n byte.
varchar
[ ( n | max
) ] Variabellängd, icke-Unicode-teckendata med en längd på n byte.
n måste vara ett värde från 1
till 8000
.
max
anger att den maximala lagringsstorleken är 2^31–1 byte (2 GB). Lagringsstorleken är den faktiska längden på data som angetts + 2 byte. Den max
längden gäller endast för Azure Synapse Analytics.
char
[ ( n ) ]
Teckendata med fast längd som inte är Unicode med en längd på n byte.
n måste vara ett värde från 1
till 8000
. Lagringsstorleken är n byte. Standardvärdet för n är 1
.
varbinary
[ ( n | max
) ] Binära data med variabel längd.
n kan vara ett värde från 1
till 8000
.
max
anger att den maximala lagringsstorleken är 2^31–1 byte (2 GB). Lagringsstorleken är den faktiska längden på data som angetts + 2 byte. Standardvärdet för n är 7. Den max
längden gäller endast för Azure Synapse Analytics.
binary
[ ( n ) ]
Binära data med fast längd med en längd på n byte.
n kan vara ett värde från 1
till 8000
. Lagringsstorleken är n byte. Standardvärdet för n är 7
.
uniqueidentifier
Är ett GUID på 16 byte.
Behörigheter
För att skapa en tabell krävs behörighet i db_ddladmin
fast databasroll, eller:
-
CREATE TABLE
behörighet för databasen -
ALTER SCHEMA
behörighet i tabellens schema
För att skapa en partitionerad tabell krävs behörighet i db_ddladmin
fast databasroll, eller
-
ALTER ANY DATASPACE
behörighet
Inloggningen som skapar en lokal tillfällig tabell tar emot CONTROL
, INSERT
, SELECT
och UPDATE
behörigheter i tabellen.
Anmärkningar
För lägsta och högsta gränser i Azure Synapse Analytics, se Kapacitetsbegränsningar för Azure Synapse Analytics.
Fastställa antalet tabellpartitioner
Varje användardefinierad tabell är uppdelad i flera mindre tabeller som lagras på separata platser som kallas distributioner. Azure Synapse Analytics använder 60 distributioner. I Analytics Platform System (PDW) beror antalet distributioner på antalet beräkningsnoder.
Varje distribution innehåller alla tabellpartitioner. Om det till exempel finns 60 distributioner och fyra tabellpartitioner plus en tom partition, kommer det att finnas 300 partitioner (5 x 60 = 300). Om tabellen är ett grupperat kolumnlagringsindex kommer det att finnas ett kolumnlagringsindex per partition, vilket innebär att du har 300 kolumnlagringsindex.
Vi rekommenderar att du använder färre tabellpartitioner för att säkerställa att varje kolumnlagringsindex har tillräckligt med rader för att dra nytta av fördelarna med kolumnlagringsindex. Mer information i Azure Synapse Analytics finns i Partitioneringstabeller i dedikerade SQL-pooler och index på dedikerade SQL-pooltabeller i Azure Synapse Analytics.
Radlagringstabell (heap eller klustrat index)
En radlagringstabell är en tabell som lagras i rad-för-rad-ordning. Det är ett heap- eller klustrade index. Azure Synapse Analytics skapar alla radlagringstabeller med sidkomprimering. Det här beteendet kan inte konfigureras av användaren.
Columnstore-tabell (columnstore-index)
En kolumnlagringstabell är en tabell som lagras i kolumn-för-kolumn-ordning. Kolumnlagringsindexet är den teknik som hanterar data som lagras i en kolumnlagringstabell. Det klustrade kolumnlagringsindexet påverkar inte hur data distribueras. I stället påverkar det hur data lagras i varje distribution.
Om du vill ändra en radlagringstabell till en kolumnlagringstabell släpper du alla befintliga index i tabellen och skapar ett grupperat kolumnlagringsindex. Ett exempel finns i CREATE COLUMNSTORE INDEX (Transact-SQL).
Mer information finns i följande artiklar:
- Nyheter i kolumnlagringsindex
- indexeringstabeller i Azure Synapse Analytics
- Columnstore-index: Översikt
Begränsningar
- Du kan inte definiera en
DEFAULT
begränsning för en distributionskolumn. - Tabellnamnet får inte vara större än 128 tecken.
- Kolumnnamnet får inte vara större än 128 tecken.
Partitioner
Partitionskolumnen kan inte ha en unicode-sortering. Följande instruktion misslyckas till exempel:
CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))
Om boundary_value är ett literalvärde som implicit måste konverteras till datatypen i partition_column_nameuppstår en avvikelse. Literalvärdet visas via Azure Synapse Analytics-systemvyerna, men det konverterade värdet används för Transact-SQL åtgärder.
Temporära tabeller
Globala temporära tabeller som börjar med ##
stöds inte.
Lokala temporära tabeller har följande begränsningar:
- De är bara synliga för den aktuella sessionen. Azure Synapse Analytics släpper dem automatiskt i slutet av sessionen. Om du vill släppa dem explicit använder du instruktionen
DROP TABLE
. - De kan inte byta namn.
- De kan inte ha partitioner eller vyer.
- Deras behörigheter kan inte ändras.
GRANT
,DENY
ochREVOKE
-instruktioner kan inte användas med lokala temporära tabeller. - Databaskonsolkommandon blockeras för temporära tabeller.
- Om mer än en lokal tillfällig tabell används i en batch måste var och en ha ett unikt namn. Om flera sessioner kör samma batch och skapar samma lokala temporära tabell lägger Azure Synapse Analytics internt till ett numeriskt suffix i det lokala temporära tabellnamnet för att behålla ett unikt namn för varje lokal tillfällig tabell.
Låsningsbeteende
Tar ett exklusivt lås på bordet. Tar ett delat lås på objekten DATABASE, SCHEMA och SCHEMARESOLUTION.
Exempel för kolumner
A. Ange en kolumnsortering
I följande exempel skapas tabellen MyTable
med två olika kolumnsortering. Som standard har kolumnen mycolumn1
standardsortering Latin1_General_100_CI_AS_KS_WS
. Kolumnen mycolumn2
har sorteringen Frisian_100_CS_AS
.
CREATE TABLE MyTable
(
mycolumnnn1 nvarchar,
mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
B. Ange en STANDARD-begränsning för en kolumn
I följande exempel visas syntaxen för att ange ett standardvärde för en kolumn. Kolumnen colA
har ett standardvillkor med namnet constraint_colA
och standardvärdet 0
.
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
Exempel på temporära tabeller
C. Skapa en lokal tillfällig tabell
I följande exempel skapas en lokal tillfällig tabell med namnet #myTable. Tabellen anges med ett namn i tre delar, som börjar med ett #.
CREATE TABLE AdventureWorks.dbo.#myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id),
CLUSTERED COLUMNSTORE INDEX
)
;
Exempel på tabellstruktur
D. Skapa en tabell med ett grupperat kolumnlagringsindex
I följande exempel skapas en distribuerad tabell med ett grupperat kolumnlagringsindex. Varje distribution lagras som ett kolumnarkiv.
Det klustrade kolumnlagringsindexet påverkar inte hur data distribueras. data distribueras alltid efter rad. Det klustrade kolumnlagringsindexet påverkar hur data lagras i varje distribution.
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. Skapa ett ordnat grupperat columnstore-index
I följande exempel visas hur du skapar ett ordnat grupperat kolumnlagringsindex. Indexet sorteras efter SHIPDATE
.
CREATE TABLE Lineitem
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))
AS
SELECT * FROM ext_Lineitem
Exempel för tabelldistribution
F. Skapa en ROUND_ROBIN tabell
I följande exempel skapas en ROUND_ROBIN tabell med tre kolumner och utan partitioner. Data sprids över alla distributioner. Tabellen skapas med ett CLUSTERED COLUMNSTORE INDEX, vilket ger bättre prestanda och datakomprimering än ett heap- eller rowstore-grupperat index.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH ( CLUSTERED COLUMNSTORE INDEX );
G. Skapa en tabell som är hash-distribuerad på flera kolumner (förhandsversion)
I följande exempel skapas samma tabell som i föregående exempel. För den här tabellen distribueras dock rader (på id
och zipCode
kolumner). Tabellen skapas med ett grupperat kolumnlagringsindex, vilket ger bättre prestanda och datakomprimering än ett heap- eller rowstore-grupperat index.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id, zipCode),
CLUSTERED COLUMNSTORE INDEX
);
H. Skapa en replikerad tabell
I följande exempel skapas en replikerad tabell som liknar föregående exempel. Replikerade tabeller kopieras i sin helhet till varje beräkningsnod. Med den här kopian på varje beräkningsnod minskas dataflytten för frågor. Det här exemplet skapas med ett CLUSTERED INDEX, vilket ger bättre datakomprimering än en heap. En heap kanske inte innehåller tillräckligt många rader för att uppnå en bra CLUSTERED COLUMNSTORE INDEX-komprimering.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = REPLICATE,
CLUSTERED INDEX (lastName)
);
Exempel för tabellpartitioner
Jag. Skapa en partitionerad tabell
I följande exempel skapas samma tabell som i exempel A, med tillägg av RANGE LEFT
partitionering i kolumnen id
. Den anger fyra partitionsgränsvärden, vilket resulterar i fem partitioner.
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
);
I det här exemplet sorteras data i följande partitioner:
- Partition 1: col <= 10
- Partition 2: 10 < col <= 20
- Partition 3: 20 < col <= 30
- Partition 4: 30 < col <= 40
- Partition 5: 40 < kol
Om samma tabell partitionerades RANGE RIGHT i stället för RANGE LEFT (standard) sorteras data i följande partitioner:
- Partition 1: col < 10
- Partition 2: 10 <= col < 20
- Partition 3: 20 <= col < 30
- Partition 4: 30 <= col < 40
- Partition 5: 40 <= kol
J. Skapa en partitionerad tabell med en partition
I följande exempel skapas en partitionerad tabell med en partition. Det anger inget gränsvärde, vilket resulterar i en partition.
CREATE TABLE myTable (
id int NOT NULL,
lastName varchar(20),
zipCode int)
WITH
(
PARTITION ( id RANGE LEFT FOR VALUES ( )),
CLUSTERED COLUMNSTORE INDEX
)
;
K. Skapa en tabell med datumpartitionering
I följande exempel skapas en ny tabell med namnet myTable
, med partitionering på en date
kolumn. Genom att använda RANGE RIGHT
och datum för gränsvärdena placerar den en månad med data i varje partition.
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'
))
);
Relaterat innehåll
gäller för:Warehouse i Microsoft Fabric
CREATE TABLE (Fabric Data Warehouse)
Skapar en ny tabell i ett lager i Microsoft Fabric.
Mer information finns i Skapa tabeller på Warehouse i Microsoft Fabric.
Not
Information om SQL-databas i Microsoft Fabric finns i CREATE TABLE. För SQL Server- och Azure SQL-plattformar går du till CREATE TABLE och väljer önskad produktversion i listrutan version. Referens till Azure Synapse Analytics and Analytics Platform System (PDW) finns i CREATE TABLE (Azure Synapse Analytics).
Transact-SQL syntaxkonventioner
Syntax
-- 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
Argument
database_name
Namnet på databasen som ska innehålla den nya tabellen. Standardvärdet är den aktuella databasen.
schema_name
Schemat för tabellen. Det är valfritt att ange schema. Om det är tomt används standardschemat.
table_name
Namnet på den nya tabellen.
column_name
Namnet på en tabellkolumn.
Kolumnalternativ
NULL
| NOT NULL
Anger om NULL
värden tillåts i kolumnen. Standardvärdet är NULL
.
COLLATE
Windows_collation_name
Anger sorteringen för uttrycket.
Mer information om sortering som stöds finns i COLLATE.
Datatyp
Microsoft Fabric stöder de vanligaste datatyperna. Mer information finns i Datatyper i Microsoft Fabric.
Not
I likhet med SQL Server finns det en gräns på 8 060 byte per rad. Detta kan bli ett blockerande problem för tabeller som har många kolumner eller kolumner med stora datatyper, till exempel varchar(8000)
eller varbinary(8000)
. Infogningar eller uppdateringar som bryter mot gränsen på 8 060 byte resulterar i felkoderna 511 eller 611. Mer information finns i arkitekturguiden för sidor och omfattningar.
En tabell med datatypkonverteringar finns i avsnittet Implicita konverteringar i CAST och CONVERT (Transact-SQL). Mer information finns i Datatyper och funktioner för datum och tid (Transact-SQL).
Följande lista över datatyper som stöds innehåller deras information och lagringsbyte.
datetime2
( n )
Lagrar datum och tid på dagen med 19 till 26 tecken enligt den gregorianska kalendern. Datumet kan innehålla år, månad och dag. Tiden innehåller timme, minuter, sekunder. Som ett alternativ kan du lagra och visa noll till sex siffror i bråk sekunder baserat på parametern n. Lagringsstorleken är 8 byte.
n måste vara ett värde från 0
till 6
.
Not
Det finns ingen standardprecision som andra SQL-plattformar. Du måste ange värdet för precision från 0
till 6
.
n värde | Precision | Skala |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
date
Lagrar ett datum med högst 10 tecken för år, månad och dag enligt den gregorianska kalendern. Lagringsstorleken är 3 byte. Datumet lagras som ett heltal.
time
( n )
n måste vara ett värde från 0
till 6
.
float
[ ( n ) ]
Ungefärlig taldatatyp för användning med numeriska flyttalsdata. Flyttalsdata är ungefärliga, vilket innebär att inte alla värden i datatypområdet kan representeras exakt.
n anger antalet bitar som används för att lagra mantissan för float i vetenskaplig notation.
n avgör precisionen och lagringsstorleken. Om n anges måste det vara ett värde mellan 1
och 53
. Standardvärdet för n är 53
.
Not
Det finns ingen standardprecision som andra SQL-plattformar. Du måste ange värdet för precision från 0
till 6
.
n värde | Precision | Lagringsstorlek |
---|---|---|
1-24 | 7 siffror | 4 byte |
25-53 | 15 siffror | 8 byte |
Azure Synapse Analytics behandlar n som ett av två möjliga värden. Om 1
<= n<= 24
behandlas n som 24
. Om 25
<= n<= 53
behandlas n som 53
.
Azure Synapse Analytics flyttal datatyp uppfyller ISO-standarden för alla värden för n från 1
till 53
. Synonymen för dubbel precision är float(53).
real
[ ( n ) ]
Definitionen av verkliga är samma som flyttal. ISO-synonymen för verkliga är float(24).
decimal
[ ( precision [ , skala ] ) ] | numeric
[ ( precision [ , skala ] ) ] ]
Lagrar fasta precisions- och skalningsnummer.
precision
Det maximala totala antalet decimalsiffror som kan lagras på båda sidor av decimaltecknet. Precisionen måste vara ett värde från 1
genom den maximala precisionen för 38
. Standardprecisionen är 18
.
skala
Det maximala antalet decimalsiffror som kan lagras till höger om decimaltecknet.
Scale måste vara ett värde från 0
till precision. Du kan bara ange skala om precision anges. Standardskalan är 0
och därför 0
<= skala<= precision. De maximala lagringsstorlekarna varierar beroende på precisionen.
Precision | Lagringsbyte |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
bigint
| int
| smallint
Exakta datatyper som använder heltalsdata. Lagringen visas i följande tabell.
Datatyp | Lagringsbyte |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
bit
En heltalsdatatyp som kan ta värdet 1
, 0
eller NULL. Azure Synapse Analytics optimerar lagringen av bitkolumner. Om det finns 8 eller färre bitars kolumner i en tabell lagras kolumnerna som 1 byte. Om det finns mellan 9 och 16 bitars kolumner lagras kolumnerna som 2 byte och så vidare.
varchar
[ ( n | MAX
) ] Variabel längd, Unicode-teckendata med en längd på n byte.
n måste vara ett värde från 1
till 8000
. Lagringsstorleken är den faktiska längden på data som angetts + 2 byte. Standardvärdet för n är 1
. Kolumnen varchar(MAX)
kan lagra upp till 1 MB text i Warehouse.
Not
varchar(MAX)
finns i förhandsversion i Warehouse. Mer information finns i Datatyper i Microsoft Fabric.
char
[ ( n ) ]
Unicode-teckendata med fast längd med en längd på n byte.
n måste vara ett värde från 1
till 8000
. Lagringsstorleken är n byte. Standardvärdet för n är 1
.
varbinary
[ ( n | MAX
) ] Binära data med variabel längd.
n kan vara ett värde från 1
till 8000
. Lagringsstorleken är den faktiska längden på data som angetts + 2 byte. Standardvärdet för n är 7.
Kolumnen varbinary(MAX)
kan lagra upp till 1 MB data i Warehouse.
Not
varbinary(MAX)
finns i förhandsversion i Warehouse. Mer information finns i Datatyper i Microsoft Fabric.
uniqueidentifier
Är ett GUID på 16 byte.
Behörigheter
Behörigheter i Microsoft Fabric skiljer sig från behörigheter för Azure Synapse Analytics.
Användaren måste vara medlem i administratörs-, medlems- eller deltagarrollerna på arbetsytan Infrastruktur.
Begränsningar
- Tabellnamn får inte vara större än 128 tecken.
- Tabellnamn i Warehouse i Microsoft Fabric kan inte innehålla tecknen
/
eller\
eller sluta med en.
. - Kolumnnamn får inte vara större än 128 tecken.
- Tabeller har högst 1 024 kolumner per tabell.
- Standardsortering som stöds i Warehouse är
Latin1_General_100_BIN2_UTF8
. Du kan också skapa lager med skiftlägesokänslig sortering (CI) – Latin1_General_100_CI_AS_KS_WS_SC_UTF8.
Anmärkningar
Det finns begränsade Transact-SQL funktioner i Warehouse. Mer information finns i T-SQL Surface Area i Microsoft Fabric.
Låsningsbeteende
Tar ett Schema-Modification lås på tabellen, ett delat lås på DATABASEN och ett Schema-Stability lås på SCHEMAT.