CREATE TABLE

A következőkre vonatkozik:Azure Synapse Analytics Analyticsplatformrendszer (PDW)

Új táblát hoz létre a Azure Synapse Analytics vagy az Analytics Platform System (PDW) szolgáltatásban.

A táblák megismeréséhez és használatukhoz lásd: Táblák a Azure Synapse Analyticsben.

A jelen cikkben szereplő Azure Synapse Analyticsről szóló vitafórumok Azure Synapse Elemzési és Elemzési platformrendszerre (PDW) is vonatkoznak, hacsak másként nem jelezzük.

Megjegyzés

A SQL Server és Azure SQL platformokhoz látogasson el a CREATE TABLE webhelyre, és válassza ki a kívánt termékverziót. A Microsoft Fabric raktárára a CREATE TABLE (Fabric) című témakörben hivatkozhat.

Megjegyzés

A Azure Synapse Analytics kiszolgáló nélküli SQL-készlete csak külső és ideiglenes táblákat támogat.

Transact-SQL szintaxis konvenciók

Szintaxis

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

Argumentumok

database_name

Az új táblát tartalmazó adatbázis neve. Az alapértelmezett az aktuális adatbázis.

schema_name

A tábla sémája. A séma megadása nem kötelező. Ha üres, a rendszer az alapértelmezett sémát használja.

table_name

Az új tábla neve. Helyi ideiglenes tábla létrehozásához a tábla nevét a következővel #előzze meg: . Az ideiglenes táblákra vonatkozó magyarázatért és útmutatásért lásd: Ideiglenes táblák a dedikált SQL-készletben a Azure Synapse Analyticsben.

column_name

Egy táblaoszlop neve.

Oszlopbeállítások

COLLATEWindows_collation_name
A kifejezés rendezését adja meg. A rendezésnek az SQL Server által támogatott Windows-rendezések egyikének kell lennie. Az SQL Server által támogatott Windows-rendezések listáját lásd: Windows-rendezés neve (Transact-SQL)/).

NULL | NOT NULL
Meghatározza, hogy engedélyezettek-e NULL értékek az oszlopban. A mező alapértelmezett értéke: NULL.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_expression
Az alapértelmezett oszlopértéket adja meg.

Argumentum Magyarázat
constraint_name A kényszer opcionális neve. A kényszer neve egyedi az adatbázisban. A név más adatbázisokban is felhasználható.
constant_expression Az oszlop alapértelmezett értéke. A kifejezésnek literálértéknek vagy állandónak kell lennie. Ezek az állandó kifejezések például engedélyezettek: 'CA', 4. Ezek az állandó kifejezések nem engedélyezettek: 2+3, CURRENT_TIMESTAMP.

Táblázatszerkezeti beállítások

A tábla típusának kiválasztásával kapcsolatos útmutatásért lásd: Táblák indexelése Azure Synapse Analyticsben.

CLUSTERED COLUMNSTORE INDEX

A táblát fürtözött oszlopcentrikus indexként tárolja. A fürtözött oszlopcentrikus index az összes táblaadatra érvényes. Ez a viselkedés az alapértelmezett Azure Synapse Analytics esetében.

HEAP A táblázatot heapként tárolja. Ez a viselkedés az elemzési platformrendszer (PDW) alapértelmezett működése.

CLUSTERED INDEX ( index_column_name [ ,... n ] )
A táblát egy vagy több kulcsoszlopot tartalmazó fürtözött indexként tárolja. Ez a viselkedés sor szerint tárolja az adatokat. A index_column_name használatával adja meg az index egy vagy több kulcsoszlopának nevét. További információt az Általános megjegyzések sortártáblái című témakörben talál.

LOCATION = USER_DB Ez a beállítás elavult. Szintaktikailag elfogadott, de már nem szükséges, és már nem befolyásolja a viselkedést.

Táblázatterjesztési beállítások

A legjobb terjesztési módszer kiválasztásának és az elosztott táblák használatának megismeréséhez lásd: Elosztott táblák tervezése dedikált SQL-készlet használatával az Azure Synapse Analyticsben.

A számítási feladatok alapján használható legjobb terjesztési stratégiával kapcsolatos javaslatokért tekintse meg a Synapse SQL Distribution Advisor (előzetes verzió) című témakört.

DISTRIBUTION = HASH ( distribution_column_name ) Az egyes sorokat egyetlen eloszláshoz rendeli a distribution_column_name tárolt érték kivonatolásával. Az algoritmus determinisztikus, azaz mindig ugyanazt az értéket kivonatolja ugyanahhoz az elosztási adatbázishoz. A terjesztési oszlopot NOT NULL értékként kell definiálni, mert a NULL értékkel rendelkező összes sor ugyanahhoz a disztribúcióhoz van hozzárendelve.

DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) A sorokat legfeljebb nyolc oszlop kivonatértékei alapján osztja el, így egyenletesebb eloszlást tesz lehetővé az alaptábla-adatok között, csökkentve az adatok időbeli eltérését, és javítja a lekérdezési teljesítményt.

Megjegyzés

  • A többoszlopos terjesztés (MCD) funkció engedélyezéséhez módosítsa az adatbázis kompatibilitási szintjét 50-esre ezzel a paranccsal. Az adatbáziskompatibilitási szint beállításával kapcsolatos további információkért lásd: ALTER DATABASE SCOPED CONFIGURATION .. Például: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
  • A többoszlopos terjesztés (MCD) funkció letiltásához futtassa ezt a parancsot az adatbázis kompatibilitási szintjének automatikusra való módosításához. Például: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO; A meglévő MCD-táblák megmaradnak, de olvashatatlanná válnak. Az MCD-táblákon keresztüli lekérdezések a következő hibát fogják visszaadni: 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.
    • Az MCD-táblákhoz való hozzáférés helyreállításához engedélyezze újra a funkciót.
    • Ha adatokat szeretne betölteni egy MCD-táblába, használja a CTAS-utasítást, és az adatforrásnak Synapse SQL-tábláknak kell lennie.
  • Az SSMS használata az MCD-táblák létrehozására szolgáló szkript létrehozásához jelenleg az SSMS 19-es verzióján túl támogatott.

DISTRIBUTION = ROUND_ROBIN Egyenletesen osztja el a sorokat az összes eloszlásban ciklikus időszeleteléses módon. Ez a viselkedés az alapértelmezett Azure Synapse Analytics esetében.

DISTRIBUTION = REPLICATE A tábla egy példányát tárolja az egyes számítási csomópontokon. A Azure Synapse Analytics esetében a tábla minden számítási csomóponton egy terjesztési adatbázisban van tárolva. Az Elemzési platformrendszer (PDW) esetében a tábla egy SQL Server fájlcsoportban van tárolva, amely a számítási csomópontra terjed ki. Ez a viselkedés az elemzési platformrendszer (PDW) alapértelmezett működése.

Táblapartíció beállításai

A táblapartíciók használatával kapcsolatos útmutatásért lásd: Particionálási táblák dedikált SQL-készletben.

PARTITION ( partition_column_nameRANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,... n] ] ))
Létrehoz egy vagy több táblapartíciót. Ezek a partíciók vízszintes táblaszeletek, amelyek lehetővé teszik a műveletek alkalmazását a sorok részhalmazaira, függetlenül attól, hogy a tábla hegemótaként, fürtözött indexként vagy fürtözött oszlopcentrikus indexként van-e tárolva. A terjesztési oszloptól eltérően a táblapartíciók nem határozzák meg az egyes sorok tárolási helyét. Ehelyett a táblapartíciók határozzák meg, hogy a sorok hogyan legyenek csoportosítva és tárolva az egyes disztribúciókban.

Argumentum Magyarázat
partition_column_name Meghatározza azt az oszlopot, amelyet a Azure Synapse Analytics a sorok particionálására használ. Ez az oszlop bármilyen adattípus lehet. Azure Synapse Analytics növekvő sorrendben rendezi a partícióoszlop értékeit. Az alacsony és a magas sorrend közötti sorrend a specifikációban LEFTRIGHTRANGE található.
RANGE LEFT Meghatározza, hogy a határérték a bal oldali partícióhoz tartozik-e (alacsonyabb értékek). Az alapértelmezett érték a LEFT.
RANGE RIGHT Megadja, hogy a határérték a jobb oldali partícióhoz (magasabb értékekhez) tartozik-e.
FOR VALUES ( boundary_value [,... n] ) Megadja a partíció határértékeit. boundary_value egy állandó kifejezés. Nem lehet NULL értékű. Vagy egyeznie kell, vagy implicit módon konvertálhatónak kell lennie a partition_column_name adattípusára. Az implicit átalakítás során nem csonkítható, így az érték mérete és mérete nem egyezik meg a partition_column_name adattípusával



Ha megadja a PARTITION záradékot, de nem ad meg határértéket, Azure Synapse Analytics létrehoz egy particionált táblát egy partícióval. Ha lehetséges, később két partícióra oszthatja a táblát.



Ha egy határértéket ad meg, az eredményként kapott táblának két partíciója van; egyet a határértéknél alacsonyabb értékekhez, egyet pedig a határértéknél magasabb értékekhez. Ha egy partíciót nem particionált táblába helyez át, a nem particionált tábla megkapja az adatokat, de a partíció határai nem lesznek a metaadataiban.

Lásd: Particionált tábla létrehozása a Példák szakaszban.

Rendezett fürtözött oszlopcentrikus index lehetőség

A fürtözött oszlopcentrikus index (CCI) az alapértelmezett a táblák Azure Synapse Analyticsben való létrehozásához. A CCI-ben lévő adatok nem lesznek rendezve, mielőtt oszlopcentrikus szegmensekbe tömörítenék őket. A CCI ORDER használatával történő létrehozásakor az adatok rendezése az indexszegmensekhez való hozzáadás előtt történik, és a lekérdezési teljesítmény javítható. A részletekért lásd: Teljesítményhangolás rendezett fürtözött oszlopcentrikus indexszel .

A rendezett CCI az Azure Synapse Analyticsben támogatott adattípusok oszlopaihoz hozható létre, a sztringoszlopok kivételével.

A felhasználók lekérdezhetik column_store_order_ordinal oszlopot a sys.index_columns azon oszlop(ok) esetében, amelyen a tábla van rendezve, és a sorrendben.

A részletekért tekintse meg a Teljesítményhangolás rendezett fürtözött oszlopcentrikus indexszel című témakört.

Adattípus

Azure Synapse Analytics a leggyakrabban használt adattípusokat támogatja. Az adattípusok és azok használatának jobb megismeréséhez lásd: Adattípusok a táblákhoz Azure Synapse Analyticsben.

Megjegyzés

A SQL Server-hez hasonlóan a soronkénti korlát 8060 bájt. Ez blokkoló problémává válhat a sok oszlopból vagy nagy adattípusú oszlopokból (például nvarchar(max) vagy varbinary(max)) rendelkező táblákból. A 8060 bájtos korlátot megsértő beszúrások vagy frissítések 511-ös vagy 611-ös hibakódot eredményeznek. További információ: Pages and Extents Architecture Guide (Oldalak és mértékek architektúra útmutatója).

Az adattípus-konverziók táblázatát a CAST és a CONVERT (Transact-SQL) Implicit konverziók szakaszában találja. További információ: Dátum és idő adattípusok és függvények (Transact-SQL).

A támogatott adattípusok alábbi listája tartalmazza a részleteket és a tárolási bájtokat:

datetimeoffset [ ( n ) ]
Az n alapértelmezett értéke 7.

datetime2 [ ( n ) ]
Ugyanaz, mint datetimea , kivéve, hogy megadhatja a tört másodpercek számát. Az n alapértelmezett értéke .7

n érték Pontosság Méretezés
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
A gergely-naptár szerint a nap dátumát és időpontját tárolja 19–23 karakterrel. A dátum tartalmazhat évet, hónapot és napot. Az idő órákat, perceket, másodperceket tartalmaz. Lehetőségként három számjegyet jeleníthet meg tört másodpercig. A tárterület mérete 8 bájt.

smalldatetime
Dátumot és időpontot tárol. A tárterület mérete 4 bájt.

date
A Gergely-naptár szerint legfeljebb 10 karakterből álló dátumot tárol a gergely-naptár szerint. A tárterület mérete 3 bájt. A dátum egész számként van tárolva.

time [ ( n ) ]
Az n alapértelmezett értéke .7

float [ ( n ) ]
A lebegőpontos numerikus adatokhoz használható hozzávetőleges szám adattípus. A lebegőpontos adatok hozzávetőlegesek, ami azt jelenti, hogy az adattípus-tartományban nem minden érték jeleníthető meg pontosan. N a mantissza float tudományos jelölésben való tárolásához használt bitek számát adja meg. N határozza meg a pontosságot és a tárolási méretet. Ha n van megadva, akkor a és 53közötti 1 értéknek kell lennie. Az n alapértelmezett értéke .53

n érték Pontosság Tárterület mérete
1-24 7 számjegy 4 bájt
25-53 15 számjegy 8 bájt

Azure Synapse Analytics az n értéket két lehetséges érték egyikeként kezeli. Ha 1<= n<= 24, az n a következőképpen lesz kezelve 24: . Ha 25<= n<= 53, az n a következőképpen lesz kezelve 53: .

A Azure Synapse Analytics float adattípus megfelel az ISO szabványnak az n értéktől a -n 1 értékig53. A dupla pontosság szinonimája a következő float(53): .

real [ ( n ) ]
A valós definíciója megegyezik a lebegőpontos definícióval. Az ISO szinonimája a következő: realfloat(24).

decimal [ ( pontosság [ , skálázás ] ) ] | numeric [ ( pontosság [ , skálázás ] ) ]
Rögzített pontosságú és skálázási számokat tárol.

Precíziós
A tárolható tizedesjegyek maximális száma a tizedesvessző bal oldalán és jobb oldalán. A pontosságnak a maximális pontosságon keresztüli 1 értéknek 38kell lennie. Az alapértelmezett pontosság a következő: 18.

Skála
A tizedesvessző jobb oldalán tárolható tizedesjegyek maximális száma. A skálázásnaka pontosságon keresztüli 0 értéknek kell lennie. A skálázást csak akkor adhatja meg, ha a pontosság meg van adva. Az alapértelmezett skálázás és 0 így 0<= skálázás<= pontosság. A maximális tárméret a pontosságtól függően változhat.

Pontosság Tárolási bájtok
1-9 5
10-19 9
20-28 13
29-38 17

money | smallmoney
A pénznemértékeket ábrázoló adattípusok.

Adattípus Tárolási bájtok
money 8
smallmoney 4

bigint | int | smallint | tinyint
Egész adatokat használó pontos szám típusú adattípusok. A tárterület az alábbi táblázatban látható.

Adattípus Tárolási bájtok
bigint 8
int 4
smallint 2
tinyint 1

bit
Egy egész szám típusú adattípus, amely a , 0vagy a NULL értéket 1veszi fel. Azure Synapse Analytics optimalizálja a bitoszlopok tárolását. Ha egy táblában 8 vagy kevesebb bitoszlop található, az oszlopok 1 bájtként lesznek tárolva. Ha 9–16 bites oszlopokról van szó, az oszlopok tárolása 2 bájt, és így tovább.

nvarchar[ ( n | max ) ] - max csak a Azure Synapse Analyticsre vonatkozik.
Változó hosszúságú Unicode-karakteradatok. Az n érték 1 és 4000 között lehet. max azt jelzi, hogy a maximális tárterületméret 2^31-1 bájt (2 GB). A tárterület mérete bájtban a beírt karakterek számának kétszerese + 2 bájt. A megadott adatok hossza nulla karakter lehet.

nchar [ ( n ) ]
Rögzített hosszúságú Unicode-karakteradatok n karakter hosszúságúak. n értéknek kell lennie a-tól a-n 1 keresztül.4000 A tárterület mérete kétszer n bájt.

varchar[ ( n | max ) ] - max csak a Azure Synapse Analyticsre vonatkozik.
Változó hosszúságú, nem Unicode karakteres adatok n bájt hosszúságúak. Az n értéknek a-tól a -ig 18000kell lennie. max azt jelzi, hogy a maximális tárterületméret 2^31-1 bájt (2 GB). A tárterület mérete a beírt adatok tényleges hossza + 2 bájt.

char [ ( n ) ]
Rögzített hosszúságú, nem Unicode karakteres adatok , n bájt hosszúságúak. Az n értéknek a-tól a -ig 18000kell lennie. A tárterület mérete n bájt. Az n alapértelmezett értéke a .1

varbinary[ ( n | max ) ] - max csak a Azure Synapse Analyticsre vonatkozik.
Változó hosszúságú bináris adatok. Az n érték lehet a-tól a -ig 18000. max azt jelzi, hogy a maximális tárterületméret 2^31-1 bájt (2 GB). A tárterület mérete a beírt adatok tényleges hossza + 2 bájt. Az n alapértelmezett értéke 7.

binary [ ( n ) ]
Rögzített hosszúságú, n bájt hosszúságú bináris adatok. Az n érték lehet a-tól a -ig 18000. A tárterület mérete n bájt. Az n alapértelmezett értéke a .7

uniqueidentifier
16 bájtos GUID.

Engedélyek

A tábla létrehozásához engedély szükséges a db_ddladmin rögzített adatbázis-szerepkörben, vagy:

  • CREATE TABLE engedély az adatbázisban
  • ALTER SCHEMA a táblát tartalmazó sémára vonatkozó engedély

Particionált tábla létrehozásához engedélyre van szükség a db_ddladmin rögzített adatbázis-szerepkörben, vagy

  • ALTER ANY DATASPACE Engedély

A helyi ideiglenes táblát létrehozó bejelentkezés megkapja CONTROLa , a INSERT, SELECTa és UPDATE az engedélyeket a táblán.

Megjegyzések

A minimális és maximális korlátokért lásd: Azure Synapse Analytics kapacitáskorlátai.

Táblapartíciók számának meghatározása

Minden felhasználó által definiált tábla több kisebb táblára van osztva, amelyek külön helyeken, úgynevezett disztribúciókban vannak tárolva. Azure Synapse Analytics 60 disztribúciót használ. Az Elemzési platformrendszer (PDW) esetében a disztribúciók száma a számítási csomópontok számától függ.

Minden eloszlás tartalmazza az összes táblapartíciót. Ha például 60 eloszlás és négy táblapartíció és egy üres partíció van, akkor 300 partíció lesz (5 x 60= 300). Ha a tábla fürtözött oszlopcentrikus index, partíciónként egy oszlopcentrikus index lesz, ami azt jelenti, hogy 300 oszlopcentrikus indexe lesz.

Javasoljuk, hogy kevesebb táblapartíciót használjon annak biztosításához, hogy minden oszlopcentrikus index elegendő sortal rendelkezzen az oszlopcentrikus indexek előnyeinek kihasználásához. További információ: Particionálási táblák dedikált SQL-készletben és Indexek dedikált SQL-készlettáblákon a Azure Synapse Analyticsben.

Sortártábla (heap vagy fürtözött index)

A sorcentrikus tábla soronkénti sorrendben tárolt tábla. Ez egy heap vagy fürtözött index. Azure Synapse Analytics az összes sorcentrikus táblát laptömörítéssel hozza létre; ez a viselkedés nem konfigurálható felhasználó számára.

Oszlopcentrikus tábla (oszlopcentrikus index)

Az oszlopcentrikus tábla oszloponkénti sorrendben tárolt tábla. Az oszlopcentrikus index az a technológia, amely az oszlopcentrikus táblában tárolt adatokat kezeli. A fürtözött oszlopcentrikus index nincs hatással az adatok elosztására. Ez inkább azt befolyásolja, hogy az adatok hogyan tárolódnak az egyes disztribúciókban.

Ha oszlopcentrikus táblára szeretne módosítani egy sorcentrikus táblát, helyezze el az összes meglévő indexet a táblán, és hozzon létre egy fürtözött oszlopcentrikus indexet. Példa: CREATE COLUMNSTORE INDEX (Transact-SQL).

További információért lásd a következő cikkeket:

Korlátozások és korlátozások

  • Nem definiálhat ALAPÉRTELMEZETT kényszert egy terjesztési oszlophoz.
  • A táblanév legfeljebb 100 karakter hosszúságú lehet.

Partíciók

A partícióoszlop nem rendelkezhet csak Unicode-rendezéssel. A következő utasítás például meghiúsul:

CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))

Ha boundary_value egy konstansérték, amelyet implicit módon kell átalakítani partition_column_name adattípusra , eltérés lép fel. A literális érték a Azure Synapse Analytics rendszernézeteken keresztül jelenik meg, de a konvertált érték Transact-SQL-műveletekhez használatos.

Ideiglenes táblák

A kezdetű ## globális ideiglenes táblák nem támogatottak.

A helyi ideiglenes táblákra a következő korlátozások és korlátozások vonatkoznak:

  • Csak az aktuális munkamenetben láthatók. Azure Synapse Analytics automatikusan elveti őket a munkamenet végén. Ha explicit módon szeretné őket elvetni, használja a DROP TABLE utasítást.
  • Nem nevezhetők át.
  • Nem rendelkezhetnek partíciókkal vagy nézetekkel.
  • Az engedélyeik nem módosíthatók. GRANT, DENYés REVOKE utasítás nem használható helyi ideiglenes táblákkal.
  • Az adatbázis-konzolparancsok ideiglenes táblák esetén le vannak tiltva.
  • Ha egy kötegben több helyi ideiglenes táblát használ, mindegyiknek egyedi névvel kell rendelkeznie. Ha több munkamenet is futtatja ugyanazt a köteget, és ugyanazt a helyi ideiglenes táblát hozza létre, a Azure Synapse Analytics belsőleg hozzáfűz egy numerikus utótagot a helyi ideiglenes tábla nevéhez, hogy minden egyes helyi ideiglenes tábla egyedi nevét megőrizze.

Zárolási viselkedés

Kizárólagos zárolást ad az asztalra. Közös zárolást hoz létre az DATABASE, a SCHEMA és a SCHEMARESOLUTION objektumon.

Példák oszlopokra

A. Oszlop rendezésének megadása

Az alábbi példában a táblázat MyTable két különböző oszlopelre rendezéssel jön létre. Alapértelmezés szerint a oszlopban mycolumn1az alapértelmezett rendezési Latin1_General_100_CI_AS_KS_WS. Az oszlopban mycolumn2 a rendezési Frisian_100_CS_AS.

CREATE TABLE MyTable   
  (  
    mycolumnnn1 nvarchar,  
    mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

B. ALAPÉRTELMEZETT kényszer megadása egy oszlophoz

Az alábbi példa egy oszlop alapértelmezett értékének megadására szolgáló szintaxist mutatja be. A colA oszlop alapértelmezett constraint_colA nevű korlátozással rendelkezik, és alapértelmezett értéke 0.

CREATE TABLE MyTable
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

Példák ideiglenes táblákra

C. Helyi ideiglenes tábla létrehozása

Az alábbi példa egy #myTable nevű helyi ideiglenes táblát hoz létre. A tábla háromrészes névvel van megadva, amely egy #-tal kezdődik.

CREATE TABLE AdventureWorks.dbo.#myTable
  (  
   id int NOT NULL,  
   lastName varchar(20),  
   zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),  
    CLUSTERED COLUMNSTORE INDEX
  )  
;  

Példák táblázatszerkezetre

D. Tábla létrehozása fürtözött oszlopcentrikus indexkel

Az alábbi példa egy fürtözött oszlopcentrikus indexet tartalmazó elosztott táblát hoz létre. Minden disztribúció oszlopcentrikus tárolóként van tárolva.

A fürtözött oszlopcentrikus index nincs hatással az adatok elosztására; az adatok mindig sor szerint oszlanak el. A fürtözött oszlopcentrikus index hatással van az adatok tárolási módjára az egyes disztribúciókban.

  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. Rendezett fürtözött oszlopcentrikus index létrehozása

Az alábbi példa bemutatja, hogyan hozhat létre rendezett fürtözött oszlopcentrikus indexet. Az index a SHIPDATE szerint van rendezve.

CREATE TABLE Lineitem  
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))  
AS  
SELECT * FROM ext_Lineitem

Példák táblaeloszlásra

F. ROUND_ROBIN tábla létrehozása

Az alábbi példa egy ROUND_ROBIN táblát hoz létre három oszloppal és partíciók nélkül. Az adatok az összes disztribúcióban elosztva lesznek. A tábla fürtözött OSZLOPCENTRIKUS INDEXszel jön létre, amely jobb teljesítményt és adattömörítést biztosít, mint egy halom- vagy sorcentrikus fürtözött index.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX );  

G. Kivonatolt táblázat létrehozása több oszlopon (előzetes verzió)

Az alábbi példa ugyanazt a táblát hozza létre, mint az előző példában. Ennél a táblázatnál azonban a sorok el vannak osztva (a és zipCode az oszlopok közöttid). A tábla egy fürtözött oszlopcentrikus indexkel jön létre, amely jobb teljesítményt és adattömörítést biztosít, mint egy halom- vagy sorcentrikus fürtözött index.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id, zipCode), 
    CLUSTERED COLUMNSTORE INDEX  
  );  

H. Replikált tábla létrehozása

Az alábbi példa az előző példákhoz hasonló replikált táblát hoz létre. A replikált táblák teljes egészében át lesznek másolva az egyes számítási csomópontokra. Ha ez a példány minden számítási csomóponton jelenik meg, a lekérdezések esetében csökken az adatáthelyezési lehetőség. Ez a példa egy FÜRTÖZÖTT INDEXszel jön létre, amely jobb adattömörítést biztosít, mint egy halom. Előfordulhat, hogy egy halom nem tartalmaz elegendő sort a FÜRTÖZÖTT OSZLOPCENTRIKUS INDEX megfelelő tömörítéséhez.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = REPLICATE,
    CLUSTERED INDEX (lastName)  
  );  

Példák táblapartíciókra

I. Particionált tábla létrehozása

Az alábbi példa ugyanazt a táblát hozza létre, mint az A példában látható, a RANGE LEFT particionálás hozzáadásával az id oszlopban. Négy partícióhatárértéket határoz meg, amelyek öt partíciót eredményeznek.

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

Ebben a példában az adatok a következő partíciókba lesznek rendezve:

  • 1. partíció: col <= 10
  • 2. partíció: 10 < col <= 20
  • 3. partíció: 20 < col <= 30
  • 4. partíció: 30 < col <= 40
  • 5. partíció: 40 < col

Ha ugyanezt a táblát a RANGE LEFT (alapértelmezett) helyett a RANGE RIGHT (JOBB) tartomány particionálta, az adatok a következő partíciókba lesznek rendezve:

  • 1. partíció: 10. oszlop <
  • 2. partíció: 10 <= col < 20
  • 3. partíció: 20 <= col < 30
  • 4. partíció: 30 <= col < 40
  • 5. partíció: 40 <= col

J. Particionált tábla létrehozása egy partícióval

Az alábbi példa egy particionált táblát hoz létre egy partícióval. Nem ad meg határértéket, ami egyetlen partíciót eredményez.

CREATE TABLE myTable (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH
    (
      PARTITION ( id RANGE LEFT FOR VALUES ( )),  
      CLUSTERED COLUMNSTORE INDEX  
    )  
;  

K. Tábla létrehozása dátumparticionálással

Az alábbi példa egy nevű új táblát myTablehoz létre egy oszlop particionálásával date . A JOBB TARTOMÁNY és a határértékek dátumainak használatával egy hónapnyi adatot helyez el az egyes partíciókban.

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

Következő lépések

A következőkre vonatkozik:Raktár a Microsoft Fabricben

Létrehoz egy új táblát egy Raktárban a Microsoft Fabricben.

További információ: Táblák létrehozása a Raktáron a Microsoft Fabricben.

Megjegyzés

A Azure Synapse Analytics and Analytics Platform System (PDW) szolgáltatásra való hivatkozásért tekintse meg a CREATE TABLE (Azure Synapse Analytics) című témakört. A SQL Server és Azure SQL platformokért látogasson el a CREATE TABLE webhelyre, és válassza ki a kívánt termékverziót a verzió legördülő listából.

Transact-SQL szintaxis konvenciók

Szintaxis

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

Argumentumok

database_name

Az új táblát tartalmazó adatbázis neve. Az alapértelmezett az aktuális adatbázis.

schema_name

A tábla sémája. A séma megadása nem kötelező. Ha üres, a rendszer az alapértelmezett sémát használja.

table_name

Az új tábla neve. Helyi ideiglenes tábla létrehozásához a tábla nevét a következővel #előzze meg: .

column_name

Egy táblaoszlop neve.

Oszlopbeállítások

NULL | NOT NULL
Meghatározza, hogy engedélyezettek-e NULL értékek az oszlopban. A mező alapértelmezett értéke: NULL.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_expression
Az alapértelmezett oszlopértéket adja meg.

Argumentum Magyarázat
constraint_name A kényszer opcionális neve. A kényszer neve egyedi az adatbázisban. A név más adatbázisokban is felhasználható.
constant_expression Az oszlop alapértelmezett értéke. A kifejezésnek literálértéknek vagy állandónak kell lennie. Ezek az állandó kifejezések például engedélyezettek: 'CA', 4. Ezek az állandó kifejezések nem engedélyezettek: 2+3, CURRENT_TIMESTAMP.

Adattípus

A Microsoft Fabric támogatja a leggyakrabban használt adattípusokat.

Megjegyzés

A SQL Server-hez hasonlóan a soronkénti korlát 8060 bájt. Ez blokkoló problémává válhat a sok oszlopot tartalmazó táblák vagy nagy adattípusú oszlopok esetében, például varchar(8000) vagy varbinary(8000). A 8060 bájtkorlátot megsértő beszúrások vagy frissítések az 511-ben vagy a 611-ben megadott hibakódot eredményezik. További információ: Pages and Extents Architecture Guide (Oldalak és mértékek architektúra útmutatója).

Az adattípus-konverziók táblázatát a CAST és a CONVERT (Transact-SQL) Implicit konverziók szakaszában találja. További információ: Dátum- és időadatok típusai és függvényei (Transact-SQL).

A támogatott adattípusok alábbi listája tartalmazza a részleteket és a tárolási bájtokat.

datetime2 ( n )
A Gergely-naptár szerint a nap dátumát és időpontját tárolja 19–26 karakterrel. A dátum tartalmazhat évet, hónapot és napot. Az idő órákat, perceket, másodperceket tartalmaz. Lehetőségként nulla–hat számjegyet tárolhat és jeleníthet meg tört másodpercig az n paraméter alapján. A tárterület mérete 8 bájt. Az n értéknek a-tól a -ig 06kell lennie.

Megjegyzés

A többi SQL-platformhoz hasonlóan nincs alapértelmezett pontosság. Meg kell adnia a pontosság értékét a-tól a -ig 06.

n érték Pontosság Méretezés
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6

date
A Gergely-naptár szerint legfeljebb 10 karakterből álló dátumot tárol a Gergely-naptár szerint. A tárterület mérete 3 bájt. A dátumot a rendszer egész számként tárolja.

time ( n )
Az n értéknek a-tól a -ig 06kell lennie.

float [ ( n ) ]
A lebegőpontos numerikus adatokkal való használat hozzávetőleges számadattípusa. A lebegőpontos adatok hozzávetőlegesek, ami azt jelenti, hogy az adattípus-tartomány nem minden értéke jeleníthető meg pontosan. N a mantissa float tudományos jelölésben való tárolásához használt bitek számát adja meg. N határozza meg a pontosságot és a tárolási méretet. Ha n van megadva, akkor a és 53a közötti 1 értéknek kell lennie. Az n alapértelmezett értéke .53

Megjegyzés

A többi SQL-platformhoz hasonlóan nincs alapértelmezett pontosság. Meg kell adnia a pontosság értékét a-tól a -ig 06.

n érték Pontosság Tárterület mérete
1-24 7 számjegy 4 bájt
25-53 15 számjegy 8 bájt

Azure Synapse Analytics az n értéket két lehetséges érték egyikeként kezeli. Ha 1<= n<= 24, az n a következőképpen lesz kezelve 24: . Ha 25<= n<= 53, az n a következőképpen lesz kezelve 53: .

A Azure Synapse Analytics-adattípus float megfelel az ISO szabványnak az n értéktől a -n értékig 153. A kettős pontosság szinonimája a .float(53)

real [ ( n ) ]
A valós definíciója megegyezik a lebegőpontos definícióval. Az ISO szinonimája a real következő: float(24).

decimal [ ( pontosság [ , skálázás ] ) ] | numeric [ ( pontosság [ , skálázás ] ) ]
Rögzített pontosságot és skálázási számokat tárol.

Precíziós
A tárolható tizedesjegyek maximális teljes száma a tizedesvessző bal oldalán és jobb oldalán. A pontosságnak a maximális pontosságon 38keresztüli 1 értéknek kell lennie. Az alapértelmezett pontosság a következő 18: .

Skála
A tizedesvessző jobb oldalán tárolható tizedesjegyek maximális száma. A skálázásnaka pontosságon keresztüli 0 értéknek kell lennie. A skálázást csak akkor adhatja meg, ha a pontosság meg van adva. Az alapértelmezett skálázás és 0 így 0<= skálázás<= pontosság. A maximális tárméret a pontosságtól függően változhat.

Pontosság Tárolási bájtok
1-9 5
10-19 9
20-28 13
29-38 17

bigint | int | smallint
Egész adatokat használó pontos szám típusú adattípusok. A tárterület az alábbi táblázatban látható.

Adattípus Tárolási bájtok
bigint 8
int 4
smallint 2

bit
Egy egész szám típusú adattípus, amely a , 0vagy a NULL értéket 1veszi fel. Azure Synapse Analytics optimalizálja a bitoszlopok tárolását. Ha egy táblában 8 vagy kevesebb bitoszlop található, az oszlopok 1 bájtként lesznek tárolva. Ha 9–16 bites oszlopokról van szó, az oszlopok tárolása 2 bájt, és így tovább.

varchar [ ( n ) ] Változó hosszúságú, Unicode-karakteres adat, amelynek hossza n bájt. Az n értéknek a-tól a -ig 18000kell lennie. A tárterület mérete a beírt adatok tényleges hossza + 2 bájt. Az n alapértelmezett értéke a .1

char [ ( n ) ]
Rögzített hosszúságú Unicode-karakteradatok , n bájt hosszúságúak. Az n értéknek a-tól a -ig 18000kell lennie. A tárterület mérete n bájt. Az n alapértelmezett értéke a .1

varbinary [ ( n ) ] Változó hosszúságú bináris adatok. Az n érték lehet a-tól a -ig 18000. A tárterület mérete a beírt adatok tényleges hossza + 2 bájt. Az n alapértelmezett értéke 7.

uniqueidentifier
16 bájtos GUID.

Engedélyek

A Microsoft Fabric engedélyei eltérnek az Azure Synapse Analytics engedélyeitől.

Korlátozások és megkötések

  • A táblanév nem lehet 100 karakternél hosszabb.
  • A Microsoft Fabric Warehouse-ban lévő táblanevek nem tartalmazhatják a vagy \a karaktereket/.
  • Az alapértelmezett és csak a Warehouse-ban támogatott rendezés Latin1_General_100_BIN2_UTF8.

Megjegyzések

A Warehouse-ban korlátozott A TSQL-funkciók korlátozottak. További információ: TSQL Surface Area a Microsoft Fabricben.

Zárolási viselkedés

A tábla Schema-Modification zárolását, az ADATBÁZIS megosztott zárolását és a SÉMA Schema-Stability zárolását veszi igénybe.

Következő lépések