CREATE TABLE

Gäller för:Azure Synapse AnalyticsAnalytics Platform System (PDW)

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.

Anteckning

För SQL Server och Azure SQL plattformar går du till CREATE TABLE och väljer önskad produktversion. Referens till Warehouse i Microsoft Fabric finns i CREATE TABLE (Fabric).

Anteckning

Serverlös SQL-pool i Azure Synapse Analytics stöder endast externa och temporära 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 temporära tabeller finns i Temporära tabeller i en dedikerad SQL-pool i Azure Synapse Analytics.

column_name

Namnet på en tabellkolumn.

Kolumnalternativ

COLLATEWindows_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.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_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

Vägledning om hur du väljer typ av tabell finns i Indexera tabeller 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 bordet 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 i Allmänna kommentarer.

LOCATION = USER_DB Det här alternativet är inaktuellt. Det accepteras syntaktiskt, 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 Designa 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 distribution. Distributionskolumnen ska definieras som INTE NULL eftersom alla rader som har NULL tilldelas till samma distribution.

DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) Distribuerar raderna baserat på hash-värden för upp till åtta kolumner, vilket möjliggör en jämnare fördelning av bastabelldata, vilket minskar dataskevheten över tid och förbättrar frågeprestanda.

Anteckning

  • Om du vill aktivera funktionen Multi-Column Distribution (MCD) ändrar du databasens kompatibilitetsnivå till 50 med det här kommandot. Mer information om hur du anger databasens kompatibilitetsnivå finns i ALTER DATABASE SCOPED CONFIGURATION (ÄNDRA DATABASOMFATTNINGSKONFIGURATION). Exempelvis: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
  • Om du vill inaktivera funktionen Multi-Column Distribution (MCD) kör du det här kommandot för att ändra databasens kompatibilitetsnivå till AUTO. Exempel: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO; Befintliga MCD-tabeller förblir men blir oläsliga. 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.
    • Aktivera funktionen igen om du vill få åtkomst till MCD-tabeller igen.
    • Om du vill läsa in data i en MCD-tabell använder du CTAS-instruktionen och datakällan måste vara Synapse SQL-tabeller.
  • Användning av SSMS för att generera ett skript för att skapa MCD-tabeller stöds för närvarande utöver SSMS version 19.

DISTRIBUTION = ROUND_ROBIN Distribuerar raderna jämnt över alla distributioner på ett resursallokerings sä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 på en distributionsdatabas på varje beräkningsnod. För Analysplattformssystem (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

Vägledning om hur du använder tabellpartitioner finns i Partitionera tabeller i en dedikerad SQL-pool.

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 klustrade kolumnlagringsindex. Till skillnad från distributionskolumnen avgör inte tabellpartitioner distributionen där varje rad lagras. I stället avgör tabellpartitioner hur raderna grupperas och lagras inom 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 specifikationen RANGE .
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 går inte att trunkera under implicit konvertering så att värdets storlek och skala inte matchar datatypen för partition_column_name



Om du anger PARTITION satsen, men inte anger ett gränsvärde, skapar Azure Synapse Analytics en partitionerad tabell med en partition. Om det är tillämpligt kan du dela upp tabellen i två partitioner vid ett senare tillfälle.



Om du anger ett gränsvärde har den resulterande tabellen två partitioner. en för värdena 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.

Se Skapa en partitionerad tabell i avsnittet Exempel.

Ordnat indexalternativ för grupperat kolumnarkiv

Klustrat kolumnlagringsindex (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 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 de kolumner som en tabell sorteras efter och sekvensen i ordningen.

Mer information finns i Prestandajustering med ordnat grupperat columnstore-index .

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.

Anteckning

På samma sätt som SQL Server finns det en gräns på 8 060 byte per rad. Detta kan bli ett blockeringsproblem 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 Arkitekturguide för sidor och omfattningar.

En tabell med datatypskonverteringar 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. Datumet 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 datatypsintervallet kan representeras exakt. n anger antalet bitar som används för att lagra mantissan för den vetenskapliga notationen float . 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, n behandlas som 24. Om 25<= n<= 53, n behandlas som 53.

Datatypen Azure Synapse Analytics float uppfyller ISO-standarden för alla värden för n från 1 och med 53. Synonymen för dubbel precision är float(53).

real [ ( n ) ]
Definitionen av verklig är densamma som flyttal. ISO-synonymen för real är float(24).

decimal [ ( precision [ , skala ] ) ] | numeric [ ( precision [ , skala ] ) ]
Lagrar fast precision och skalningsnummer.

Precision
Det maximala totala antalet decimalsiffror som kan lagras, både till vänster och till höger om decimaltecknet. Precisionen måste vara ett värde från 1 och med den maximala precisionen för 38. Standardprecisionen är 18.

Skala
Det maximala antalet decimalsiffror som kan lagras till höger om decimaltecknet. Skala måste vara ett värde från 0 genom precision. Du kan bara ange skalning om precision anges. Standardskalan är 0 och så 0<= scale<= precision. Maximala lagringsstorlekar varierar beroende på precision.

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
Datatyper med exakt antal 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, 0eller '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 ) ] - max gäller endast för Azure Synapse Analytics.
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 anges + 2 byte. De data som anges kan vara noll tecken långa.

nchar [ ( n ) ]
Unicode-teckendata med fast längd med n teckenlängd. n måste vara ett värde från till och med 14000. Lagringsstorleken är två gånger n byte.

varchar[ ( n | max ) ] - max gäller endast för Azure Synapse Analytics.
Variabel längd, icke-Unicode teckendata med längden 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 anges + 2 byte.

char [ ( n ) ]
Teckendata med fast längd som inte är Unicode-tecken med längden 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 ) ] - max gäller endast för Azure Synapse Analytics.
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 anges + 2 byte. Standardvärdet för n är 7.

binary [ ( n ) ]
Binära data med fast längd med längden 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

Att skapa en tabell kräver behörighet i den fasta databasrollen db_ddladmin , eller:

  • CREATE TABLE behörighet för databasen
  • ALTER SCHEMA behörighet för schemat som ska innehålla tabellen

Att skapa en partitionerad tabell kräver behörighet i den fasta databasrollen db_ddladmin , eller

  • ALTER ANY DATASPACE Tillstånd

Inloggningen som skapar en lokal tillfällig tabell får behörigheterna CONTROL, INSERT, SELECToch UPDATE i tabellen.

Kommentarer

För lägsta och högsta gränser, se Azure Synapse Analytics kapacitetsgränser.

Fastställa antalet tabellpartitioner

Varje användardefinierad tabell är indelad 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 finns det 300 partitioner (5 x 60 = 300). Om tabellen är ett grupperat kolumnlagringsindex finns det ett kolumnlagringsindex per partition, vilket innebär att du har 300 kolumnlagringsindex.

Vi rekommenderar att du använder färre tabellpartitioner för att se till att varje kolumnlagringsindex har tillräckligt med rader för att dra nytta av fördelarna med kolumnlagringsindex. Mer information finns i Partitionera tabeller i en dedikerad SQL-pool 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 (kolumnlagringsindex)

En columnstore-tabell ä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. Det påverkar i stället 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 de här artiklarna:

Begränsningar och begränsningar

  • Du kan inte definiera en DEFAULT-begränsning för en distributionskolumn.
  • Tabellnamnet får inte vara större än 100 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 måste konverteras implicit till datatypen i partition_column_name uppstår en avvikelse. Literalvärdet visas via Azure Synapse Analytics-systemvyer, 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 ta bort dem explicit använder du DROP TABLE-instruktionen.
  • De kan inte byta namn.
  • De kan inte ha partitioner eller vyer.
  • Deras behörigheter kan inte ändras. GRANT- och DENYREVOKE -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 STANDARDvillkor 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 columnstore-index. Varje distribution lagras som ett kolumnarkiv.

Det klustrade kolumnlagringsindexet påverkar inte hur data distribueras. data distribueras alltid per 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 grupperat kolumnlagringsindex

I följande exempel visas hur du skapar ett grupperat kolumnlagringsindex. Indexet sorteras på 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 GRUPPERAT 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 GRUPPERAT INDEX, vilket ger bättre datakomprimering än en heap. En heap kanske inte innehåller tillräckligt med 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 på tabellpartitioner

I. Skapa en partitionerad tabell

I följande exempel skapas samma tabell som i exempel A, med tillägget AV RANGE LEFT-partitionering i id kolumnen. 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: kol <= 10
  • Partition 2: 10 < kol <= 20
  • Partition 3: 20 < kol <= 30
  • Partition 4: 30 < kol <= 40
  • Partition 5: 40 < kolumn

Om samma tabell var partitionerad RANGE RIGHT i stället för RANGE LEFT (standard) sorteras data i följande partitioner:

  • Partition 1: kolumn < 10
  • Partition 2: 10 <= kolumn < 20
  • Partition 3: 20 <= kolumn < 30
  • Partition 4: 30 <= kolumn < 40
  • Partition 5: 40 <= kolumn

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 i 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'  
      ))
  );  

Nästa steg

Gäller för:Informationslager i Microsoft Fabric

Skapar en ny tabell i ett lager i Microsoft Fabric.

Mer information finns i Skapa tabeller på Warehouse i Microsoft Fabric.

Anteckning

Referens till Azure Synapse Analytics and Analytics Platform System (PDW) finns i CREATE TABLE (Azure Synapse Analytics). För SQL Server och Azure SQL plattformar går du till SKAPA TABELL och väljer önskad produktversion i listrutan version.

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
    [ <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  

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 #.

column_name

Namnet på en tabellkolumn.

Kolumnalternativ

NULL | NOT NULL
Anger om NULL värden tillåts i kolumnen. Standardvärdet är NULL.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_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.

Datatyp

Microsoft Fabric stöder de vanligaste datatyperna.

Anteckning

På samma sätt som 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 8060 byte-gränsen resulterar i felkoderna 511 eller 611. Mer information finns i arkitekturguiden för sidor och utrymmen.

En tabell med datatypskonverteringar 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 för bråksekunder baserat på parametern n . Lagringsstorleken är 8 byte. n måste vara ett värde från 0 till 6.

Anteckning

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 den vetenskapliga notationen float . 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.

Anteckning

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, n behandlas som 24. Om 25<= n<= 53, n behandlas som 53.

Datatypen Azure Synapse Analytics float uppfyller ISO-standarden för alla värden för n från 1 och med 53. Synonymen för dubbel precision är float(53).

real [ ( n ) ]
Definitionen av verkligt är samma som flyttal. ISO-synonymen för real är float(24).

decimal [ ( precision [ , skala ] ) ] | numeric [ ( precision [ , skala ] ) ]
Lagrar fast precision och skalningsnummer.

Precision
Det maximala totala antalet decimalsiffror som kan lagras, både till vänster och till höger om decimaltecknet. Precisionen måste vara ett värde från och med 1 den maximala precisionen för 38. Standardprecisionen är 18.

Skala
Det maximala antalet decimalsiffror som kan lagras till höger om decimaltecknet. Skala måste vara ett värde från 0 genom precision. Du kan bara ange skalning om precision anges. Standardskalan är 0 och så 0<= scale<= precision. Maximala lagringsstorlekar varierar beroende på precision.

Precision Lagringsbyte
1-9 5
10-19 9
20-28 13
29-38 17

bigint | int | smallint
Datatyper med exakt antal 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, 0eller '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 ) ] Variabel längd, Unicode-teckendata med längden n byte. n måste vara ett värde från 1 till 8000. Lagringsstorleken är den faktiska längden på data som anges + 2 byte. Standardvärdet för n är 1.

char [ ( n ) ]
Unicode-teckendata med fast längd och 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 ) ] 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 anges + 2 byte. Standardvärdet för n är 7.

uniqueidentifier
Är ett GUID på 16 byte.

Behörigheter

Behörigheter i Microsoft Fabric skiljer sig från behörigheter Azure Synapse Analytics.

Begränsningar

  • Tabellnamnet får inte vara större än 100 tecken.
  • Tabellnamn i Warehouse i Microsoft Fabric får inte innehålla tecknen / eller \.
  • Standardsortering och endast sortering som stöds i warehouse är Latin1_General_100_BIN2_UTF8.

Kommentarer

Det finns begränsade TSQL-funktioner i Warehouse. Mer information finns i TSQL 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.

Nästa steg