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
COLLATE
Windows_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
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_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 LEFT RIGHT RANGE 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 datetime
a , 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 53
kö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ő: real
float(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 38
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 |
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 , 0
vagy a NULL értéket 1
veszi 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 1
8000
kell 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 1
8000
kell 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 1
8000
.
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 1
8000
. 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 CONTROL
a , a INSERT
, SELECT
a é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:
- Oszlopcentrikus indexek verziószámozott funkció összefoglalása
- Táblák indexelése az Azure Synapse Analyticsben
- Oszlopcentrikus indexek útmutatója
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
ésREVOKE
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 mycolumn1
az 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 myTable
hoz 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
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_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 0
6
kell 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 0
6
.
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 0
6
kell 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 53
a 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 0
6
.
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 1
53
. 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 38
keresztü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 , 0
vagy a NULL értéket 1
veszi 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 1
8000
kell 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 1
8000
kell 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 1
8000
. 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.