Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Azure Synapse Analytics
Analytics Platform System (PDW)
CREATE TABLE (Azure Synapse Analytics)
Új táblát hoz létre az Azure Synapse Analytics vagy az Analytics Platform System (PDW) szolgáltatásban.
A táblák és azok használatának megismeréséhez tekintse meg az Azure Synapse Analytics táblázatait.
Az Azure Synapse Analyticsről ebben a cikkben ismertetett vitafórumok az Azure Synapse Analytics és az Analytics platformrendszerre (PDW) is érvényesek, hacsak másként nem jelezzük.
Note
SQL Server- és Azure SQL-platformok esetén látogasson el a CREATE TABLE webhelyre , és válassza ki a kívánt termékverziót. SQL adatbázisért a Microsoft Fabric-ben lásd: CREATE TABLE. A Microsoft Fabric warehouse-ra való hivatkozásért látogasson el a CREATE TABLE (Fabric) webhelyre.
Note
Az 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
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
Arguments
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 kell megelőznie: .a0> Az ideiglenes táblákkal kapcsolatos magyarázatokat és útmutatást az Azure Synapse Analytics dedikált SQL-készletében található ideiglenes táblák című témakörben talál.
column_name
Egy táblaoszlop neve.
Oszlopbeállítások
COLLATE
Windows_collation_name
A kifejezés rendezési beállítá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
Megadja, hogy az oszlopokban engedélyezettek-e NULL értékek. Az alapértelmezett érték a NULL.
[ CONSTRAINTconstraint_name ] DEFAULTconstant_expression
Az alapértelmezett oszlopértéket adja meg.
| Argument | Explanation |
|---|---|
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ális é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ázatstruktúra beállításai
A tábla típusának kiválasztásával kapcsolatos útmutatásért tekintse meg az Indexelési táblákat az 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 vonatkozik. Ez a viselkedés az Azure Synapse Analytics alapértelmezett viselkedése.
HEAP A táblázatot halomként tárolja. Ez a viselkedés az Analytics Platform System (PDW) alapértelmezett viselkedése.
CLUSTERED INDEX ( index_column_name [ ,... n ] )
A táblát fürtözött indexként tárolja egy vagy több kulcsoszlopmal. 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ó: Rowstore Tables.
LOCATION = USER_DB Ez a beállítás elavult. Érvényes szintaxis, de már nem kötelező, é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 tekintse meg az elosztott táblák dedikált SQL-készlet használatával történő tervezését 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, ami azt jelenti, hogy mindig ugyanazt az értéket kivonatozza ugyanahhoz az eloszláshoz. A terjesztési oszlopot NOT NULL értékként kell definiálni, mert a NULL értékkel rendelkező összes sor ugyanahhoz az eloszláshoz van 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áblák adatai között, csökkentve az adatok időbeli eltérését, és javítja a lekérdezési teljesítményt.
Note
- A többoszlopos terjesztési (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ési (MCD) funkció letiltásához futtassa ezt a parancsot az adatbázis kompatibilitási szintjének AUTO-ra 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
CREATE TABLE AS SELECTa (CTAS) utasítást, és az adatforrásnak Synapse SQL-tábláknak kell lennie.
- Az MCD-táblák létrehozásához használt szkriptek létrehozása jelenleg az SQL Server Management Studio (SSMS) 19-es és újabb verzióit támogatja.
DISTRIBUTION = ROUND_ROBIN A sorokat egyenletesen osztja el az összes eloszlásban ciklikus időszeleteléses módon. Ez a viselkedés az Azure Synapse Analytics alapértelmezett viselkedése.
DISTRIBUTION = REPLICATE A tábla egy-egy példányát tárolja minden számítási csomóponton. Az Azure Synapse Analytics esetében a tábla minden számítási csomóponton egy terjesztési adatbázisban van tárolva. Az Analytics Platform System (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 Analytics Platform System (PDW) alapértelmezett viselkedése.
Táblapartíció beállításai
A táblapartíciók használatával kapcsolatos útmutatásért tekintse meg a táblák dedikált SQL-készletben való particionálását ismertető témakört.
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 halomké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 a sorok csoportosítását és tárolását az egyes eloszlásokban.
| Argument | Explanation |
|---|---|
| partition_column_name | Megadja azt az oszlopot, amelyet az Azure Synapse Analytics a sorok particionálására használ. Ez az oszlop bármilyen adattípus lehet. Az Azure Synapse Analytics növekvő sorrendben rendezi a partícióoszlop értékeit. Az alacsonytól a magasig rendezés a specifikációban LEFTRIGHTRANGE található. |
RANGE LEFT |
Megadja, hogy a határérték a bal oldali partícióhoz tartozik (alacsonyabb értékek). Az alapértelmezett érték BALRA. |
RANGE RIGHT |
Megadja, hogy a határérték a jobb oldali partícióhoz tartozik (magasabb értékek). |
FOR VALUES ( boundary_value [,... n] ) |
Megadja a partíció határértékeit.
boundary_value egy állandó kifejezés. Nem lehet NULL. Vagy egyeznie kell, vagy implicit módon átalakítható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 a partition_column_name adattípusával Ha egy határértéket ad meg, az eredményként kapott tábla két partícióval rendelkezik; 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 nem lesznek partícióhatárok a metaadataiban. |
Példa: Particionált tábla létrehozása.
Rendezett fürtözött oszlopcentrikus index beállítás
A fürtözött oszlopcentrikus index (CCI) az alapértelmezett táblakészítéshez az Azure Synapse Analyticsben. 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 a rendszer az adatokat rendezi, mielőtt hozzáadja őket az indexszegmensekhez, és a lekérdezési teljesítmény javítható. Az Azure Synapse Analytics rendezett fürtözött oszlopcentrikus indexeivel kapcsolatos további információkért lásd: Teljesítményhangolás rendezett fürtözött oszlopcentrikus indexekkel.
A rendezett CCI az Azure Synapse Analyticsben támogatott adattípusok oszlopaiban hozható létre, a sztringoszlopok kivételével.
A felhasználók lekérdezhetik column_store_order_ordinal az oszlopban lévő oszlopokat sys.index_columns vagy oszlopokat, és a sorrendben lévő sorrendet.
A részletekért ellenőrizze a teljesítmény finomhangolását a rendezett fürtözött oszlopcentrikus indexkel .
Adattípus
Az Azure Synapse Analytics a leggyakrabban használt adattípusokat támogatja. Az adattípusok és azok használatának jobb megismeréséhez tekintse meg az Azure Synapse Analytics táblázatainak adattípusait.
Note
Az SQL Serverhez hasonlóan soronként 8060 bájt van. Ez blokkolási problémát jelenthet a sok oszlopot tartalmazó táblák vagy nagy adattípusú oszlopok esetében, például nvarchar(max) vagy varbinary(max). A 8060 bájtos korlátot megsértő beszúrások vagy frissítések 511-611-ös hibakódot eredményeznek. További információ: Pages and Extents Architecture Guide.
Adattípus-konverziós táblázatot a CAST és a CONVERT implicit konverziós szakaszában (Transact-SQL) talál. 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 tört másodpercek száma. Az n alapértelmezett értéke a következő 7: .
| n érték | Precision | Scale |
|---|---|---|
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 19–23 karakterrel tárolja. 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 karakter hosszúságú 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 a következő 7: .
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 tudományos jelölésben szereplő mantissa float tárolására használt bitek számát határozza meg.
N a pontosságot és a tárolási méretet határozza meg. Ha n van megadva, akkor a kettő közötti 153értéknek kell lennie. Az n alapértelmezett értéke a következő 53: .
| n érték | Precision | Tárterület mérete |
|---|---|---|
| 1-24 | 7 számjegy | 4 bájt |
| 25-53 | 15 számjegy | 8 bájt |
Az Azure Synapse Analytics az n-t két lehetséges érték egyikeként kezeli. Ha 1<= n<= 24, az n a következőképpen van kezelve 24. Ha 25<= n<= 53, az n a következőképpen van kezelve 53.
Az Azure Synapse Analytics lebegőpontos adattípusa megfelel az ISO szabványnak az n-től az 1 át.53 A kettős pontosság szinonimája a float(53).
real [ ( n ) ]
A valós definíció megegyezik a lebegőpontos definícióval. A valós ISO-szinonimája a 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.
precision
A tárolható tizedesjegyek maximális teljes száma a tizedesvessző mindkét oldalán. A pontosságnak a maximális pontosságon 1keresztüli 38 értéknek kell lennie. Az alapértelmezett pontosság a következő 18: .
scale
A tizedesvessző jobb oldalán tárolható tizedesjegyek maximális száma.
A skálázásnak0 keresztüli é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árolási méretek a pontosságtól függően eltérőek lehetnek.
| Precision | Tárolási bájtok |
|---|---|
| 1-9 | 5 |
| 10-19 | 9 |
| 20-28 | 13 |
| 29-38 | 17 |
money | smallmoney
Pénznemértékeket képviselő adattípusok.
| Adattípus | Tárolási bájtok |
|---|---|
money |
8 |
smallmoney |
4 |
bigint | int | smallint | tinyint
Egész számadatokat 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 adattípus, amely a null 1értéket 0veheti fel. Az 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 vannak tárolva. Ha 9–16 bites oszlopokról van szó, az oszlopok tárolása 2 bájtként történik, és így tovább.
nvarchar [ ( n | max ) ] Változó hosszúságú Unicode-karakteradatok.
n 1 és 4000 közötti érték lehet.
max azt jelzi, hogy a tárterület maximális mérete 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 lehetnek nulla karakter hosszúságúak. A max hossz csak az Azure Synapse Analyticsre vonatkozik.
nchar [ ( n ) ]
Rögzített hosszúságú Unicode-karakteradatok n karakter hosszúságúak.
n értéknek kell lennie a forrástól a értékig 14000. A tárterület mérete kétszer n bájt.
varchar [ ( n | max ) ] Változó hosszúságú, nem Unicode karakterű adatok , n bájt hosszúságúak.
n értéknek kell lennie a feladótól 1 a felé 8000.
max azt jelzi, hogy a tárterület maximális mérete 2^31-1 bájt (2 GB). A tárterület mérete a megadott adatok tényleges hossza + 2 bájt. A max hossz csak az Azure Synapse Analyticsre vonatkozik.
char [ ( n ) ]
Rögzített hosszúságú, nem Unicode karakterű adatok , n bájt hosszúságúak.
n értéknek kell lennie a feladótól 1 a felé 8000. A tárterület mérete n bájt. Az n alapértelmezett értéke a következő 1: .
varbinary [ ( n | max ) ] Változó hosszúságú bináris adatok.
n lehet egy érték a helyről 1 a gombra 8000.
max azt jelzi, hogy a tárterület maximális mérete 2^31-1 bájt (2 GB). A tárterület mérete a megadott adatok tényleges hossza + 2 bájt. Az n alapértelmezett értéke 7. A max hossz csak az Azure Synapse Analyticsre vonatkozik.
binary [ ( n ) ]
Rögzített hosszúságú bináris adatok n bájt hosszúságúak.
n lehet egy érték a helyről 1 a gombra 8000. A tárterület mérete n bájt. Az n alapértelmezett értéke a következő 7: .
uniqueidentifier
16 bájtos GUID.
Permissions
A tábla létrehozásához engedélyre van szükség a db_ddladmin rögzített adatbázis-szerepkörben, vagy:
-
CREATE TABLEengedély az adatbázisban -
ALTER SCHEMAengedély a tábla sémáján
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 DATASPACEengedély
A helyi ideiglenes táblát létrehozó bejelentkezés megkapja CONTROLa INSERTSELECTtáblára vonatkozó engedélyeket és UPDATE engedélyeket.
Remarks
Az Azure Synapse Analytics minimális és maximális korlátaiért tekintse meg az Azure Synapse Analytics kapacitáskorlátait.
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, amelyeket külön helyeken, úgynevezett disztribúciókban tárolnak. Az Azure Synapse Analytics 60 disztribúciót használ. Az Elemzési platformrendszerben (PDW) az eloszlások száma a számítási csomópontok számától függ.
Minden disztribúció tartalmazza az összes táblapartíciót. Ha például 60 eloszlás és négy táblapartíció plusz egy üres partíció van, 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ára, hogy minden oszlopcentrikus index elegendő sortal rendelkezzen az oszlopcentrikus indexek előnyeinek kihasználásához. Az Azure Synapse Analyticsben további információt a dedikált SQL-készlet tábláinak particionálásáról és az Azure Synapse Analytics dedikált SQL-készlettábláinak indexeiről talál.
Rowstore table (halom vagy fürtözött index)
A sortártáblák egymás utáni sorrendben tárolt táblák. Ez egy halom vagy csoportosított index. Az Azure Synapse Analytics laptömörítéssel hozza létre az összes sortártáblát; 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 oszlopcentrikus táblában tárolt adatokat kezelő technológia. A fürtözött oszlopcentrikus index nem befolyásolja az adatok elosztását. Ez inkább az adatok tárolási módját befolyásolja az egyes disztribúciókban.
Ha oszlopcentrikus táblára szeretne módosítani egy sortártáblát, helyezze az összes meglévő indexet a táblára, és hozzon létre egy fürtözött oszlopcentrikus indexet. Példa: CREATE COLUMNSTORE INDEX (Transact-SQL).
További információkért tekintse meg az alábbi cikkeket:
- Az oszlopcentrikus indexek újdonságai
- Táblák indexelése az Azure Synapse Analyticsben
- Oszlopalapú indexek: Áttekintés
Limitations
- A terjesztési oszlopra vonatkozó korlátozás nem határozható meg
DEFAULT. - A táblázat neve nem lehet hosszabb 128 karakternél.
- Az oszlopnév nem lehet hosszabb 128 karakternél.
Partitions
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 olyan literális érték, amelyet implicit módon kell átalakítani az adattípusra partition_column_name, akkor eltérés történik. A literális érték az 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 kezdő ## 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. Az Azure Synapse Analytics a munkamenet végén automatikusan elveti őket. Ha explicit módon szeretné elvetni őket, használja az utasítást
DROP TABLE. - Nem nevezhetők át.
- Nem rendelkezhetnek partíciókkal vagy nézetekkel.
- Az engedélyeik nem módosíthatók.
GRANT,DENYésREVOKEaz utasítások nem használhatók helyi ideiglenes táblákkal. - Az adatbázis-konzol parancsai ideiglenes táblák esetén le vannak tiltva.
- Ha egy kötegen belül több helyi ideiglenes táblát használ, mindegyiknek egyedi névvel kell rendelkeznie. Ha több munkamenet is ugyanazt a köteget futtatja, és ugyanazt a helyi ideiglenes táblát hozza létre, az 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 hoz létre az asztalon. A DATABASE, a SCHEMA és a SCHEMARESOLUTION objektumokat közösen zárolja.
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ő oszlopelképezéssel jön létre. Alapértelmezés szerint az oszlop mycolumn1 az alapértelmezett rendezéssel rendelkezik Latin1_General_100_CI_AS_KS_WS. Az oszlopban mycolumn2 van a rendezés 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 oszlophoz
Az alábbi példa egy oszlop alapértelmezett értékének megadására szolgáló szintaxist mutatja be. Az colA oszlopnak elnevezett constraint_colA alapértelmezett korlátja é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 #-val 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 elosztott táblát hoz létre fürtözött oszlopcentrikus indexkel. Minden disztribúció oszloptárként van tárolva.
A fürtözött oszlopcentrikus index nem befolyásolja az adatok elosztását; 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 következőre SHIPDATEvan rendezve: .
CREATE TABLE Lineitem
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))
AS
SELECT * FROM ext_Lineitem
Példák táblázatterjesztésre
F. ROUND_ROBIN tábla létrehozása
Az alábbi példa egy ROUND_ROBIN táblát hoz létre három oszlopból és partíciók nélkül. Az adatok az összes disztribúcióban elterülnek. A tábla egy 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 sortár fürtözött indexe.
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. Ebben a táblában azonban a sorok el vannak osztva (az oszlopokon és id az oszlopokonzipCode). 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 sortár 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 az adatáthelyezés csökken. Ez a példa fürtözött INDEXszel jön létre, amely jobb adattömörítést biztosít, mint egy halom. Előfordulhat, hogy a halom nem tartalmaz elegendő sort a FÜRTÖZÖTT OSZLOPCENTRIKUS INDEX 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, az oszlop particionálásának RANGE LEFTid hozzáadásával. 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 (JOBBRA) 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 egyetlen partícióval
Az alábbi példa egy particionált táblát hoz létre egy partícióval. Nem határoz 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 új táblát myTablehoz létre egy oszlop particionálásával date . A határértékek használatával RANGE RIGHT és dátumá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'
))
);
Kapcsolódó tartalom
A következőkre vonatkozik:Warehouse a Microsoft Fabric
CREATE TABLE (Fabric Data Warehouse)
Új táblát hoz létre a Microsoft Fabric egyik raktárában.
További információ: Táblák létrehozása a Microsoft Fabric raktárában.
Note
SQL adatbázisért a Microsoft Fabric-ben lásd: CREATE TABLE. SQL Server- és Azure SQL-platformok esetén látogasson el a CREATE TABLE webhelyre , és válassza ki a kívánt termékverziót a verzió legördülő listájából. Az Azure Synapse Analytics and Analytics Platform System (PDW) szolgáltatásra való hivatkozásért látogasson el CREATE TABLE (Azure Synapse Analytics).
Transact-SQL szintaxis konvenciók
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 (CLUSTER BY [ ,... n ])
[;]
<column_options> ::=
[ NULL | NOT NULL ] -- default is NULL
[ COLLATE Windows_collation_name ]
<data type> ::=
datetime2 ( n )
| date
| time ( n )
| float [ ( n ) ]
| real [ ( n ) ]
| decimal [ ( precision [ , scale ] ) ]
| numeric [ ( precision [ , scale ] ) ]
| bigint
| int
| smallint
| bit
| varchar [ ( n | MAX ) ]
| char [ ( n ) ]
| varbinary [ ( n | MAX ) ]
| uniqueidentifier
Arguments
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.
column_name
Egy táblaoszlop neve.
AHOL (KLASZTERREL [ ,... n])
A CLUSTER BY Fabric Data Warehouse adatklaszterezésére vonatkozó záradék legalább egy oszlopot megköveteli, és legfeljebb négy oszlopot kell megadni.
További információért lásd: Data clustering in Fabric Data Warehouse.
Oszlopbeállítások
NULL | NOT NULL
Megadja, hogy az oszlopokban engedélyezettek-e NULL értékek. Az alapértelmezett érték a NULL.
COLLATE
Windows_collation_name
A kifejezés rendezési beállítását adja meg.
A támogatott rendezésekkel kapcsolatos további információkért lásd: COLLATE.
Adattípus
A Microsoft Fabric támogatja a leggyakrabban használt adattípusokat. További információ: Adattípusok a Microsoft Fabricben.
Note
Az SQL Serverhez hasonlóan soronként 8060 bájt van. Ez blokkolhatja a sok oszlopot tartalmazó táblákat, illetve a nagy adattípusú oszlopokat( például varchar(8000) vagy varbinary(8000). A 8060 bájtos korlátot megsértő beszúrások vagy frissítések 511-ben vagy 611-ben hibakódot eredményeznek. További információ: Pages and Extents Architecture Guide.
Adattípus-konverziós táblázatot a CAST és a CONVERT implicit konverziós szakaszában (Transact-SQL) talál. 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.
datetime2 ( n )
A Gergely-naptár szerint a nap dátumát és időpontját 19–26 karakterrel tárolja. A dátum tartalmazhat évet, hónapot és napot. Az idő órákat, perceket, másodperceket tartalmaz. Lehetőségként az n paraméter alapján 0–6 számjegyet tárolhat és jeleníthet meg tört másodpercig. A tárterület mérete 8 bájt.
n értéknek kell lennie a feladótól 0 a felé 6.
Note
A többi SQL-platformhoz hasonlóan nincs alapértelmezett pontosság. Meg kell adnia a pontosság értékét a következőtől 0 a következőig 6: .
| n érték | Precision | Scale |
|---|---|---|
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 karakter hosszúságú 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 )
n értéknek kell lennie a feladótól 0 a felé 6.
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 lebegőpontos úszó mantissa tudományos jelölésben való tárolásához használt bitek számát határozza meg.
N a pontosságot és a tárolási méretet határozza meg. Ha n van megadva, akkor a kettő közötti 153értéknek kell lennie. Az n alapértelmezett értéke a következő 53: .
Note
A többi SQL-platformhoz hasonlóan nincs alapértelmezett pontosság. Meg kell adnia a pontosság értékét a következőtől 0 a következőig 6: .
| n érték | Precision | Tárterület mérete |
|---|---|---|
| 1-24 | 7 számjegy | 4 bájt |
| 25-53 | 15 számjegy | 8 bájt |
Az Azure Synapse Analytics az n-t két lehetséges érték egyikeként kezeli. Ha 1<= n<= 24, az n a következőképpen van kezelve 24. Ha 25<= n<= 53, az n a következőképpen van kezelve 53.
Az Azure Synapse Analytics lebegőpontos adattípusa megfelel az ISO szabványnak az n-től az 1 át.53 A kettős pontosság szinonimája a float(53).
real [ ( n ) ]
A valós definíció megegyezik a lebegőpontos definícióval. A valós ISO-szinonimája a 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.
precision
A tárolható tizedesjegyek maximális teljes száma a tizedesvessző mindkét oldalán. A pontosságnak a maximális pontosságon 1keresztüli 38 értéknek kell lennie. Az alapértelmezett pontosság a következő 18: .
scale
A tizedesvessző jobb oldalán tárolható tizedesjegyek maximális száma.
A skálázásnak0 keresztüli é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árolási méretek a pontosságtól függően eltérőek lehetnek.
| Precision | Tárolási bájtok |
|---|---|
| 1-9 | 5 |
| 10-19 | 9 |
| 20-28 | 13 |
| 29-38 | 17 |
bigint | int | smallint
Egész számadatokat 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 adattípus, amely a null 1értéket 0veheti fel. Az 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 vannak tárolva. Ha 9–16 bites oszlopokról van szó, az oszlopok tárolása 2 bájtként történik, és így tovább.
varchar [ ( n | MAX ) ] Változó hosszúságú, Unicode-karakteres adatok n bájt hosszúságúak.
n értéknek kell lennie a feladótól 1 a felé 8000. A tárterület mérete a megadott adatok tényleges hossza + 2 bájt. Az n alapértelmezett értéke a következő 1: . Az varchar(MAX) oszlop legfeljebb 1 MB szöveget tárolhat a Warehouse-ban.
Note
varchar(MAX) előzetes verzióban érhető el a Warehouse-ban. További információ: Adattípusok a Microsoft Fabricben.
char [ ( n ) ]
Rögzített hosszúságú, Unicode-karakteres adatok , n bájt hosszúságúak.
n értéknek kell lennie a feladótól 1 a felé 8000. A tárterület mérete n bájt. Az n alapértelmezett értéke a következő 1: .
varbinary [ ( n | MAX ) ] Változó hosszúságú bináris adatok.
n lehet egy érték a helyről 1 a gombra 8000. A tárterület mérete a megadott adatok tényleges hossza + 2 bájt. Az n alapértelmezett értéke 7.
Az varbinary(MAX) oszlop legfeljebb 1 MB adatot tárolhat a Warehouse-ban.
Note
varbinary(MAX) előzetes verzióban érhető el a Warehouse-ban. További információ: Adattípusok a Microsoft Fabricben.
uniqueidentifier
16 bájtos GUID.
Permissions
A Microsoft Fabric engedélyei eltérnek az Azure Synapse Analytics engedélyétől.
A felhasználónak a Háló munkaterület rendszergazdai, tagi vagy közreműködői szerepköreinek tagja kell lennie.
Limitations
- A táblázatnevek legfeljebb 128 karakter hosszúságúak lehetnek.
- A Microsoft Fabric Warehouse tábláinak nevei nem tartalmazhatják a karaktereket
/, és\nem végződnek.a következővel: . - Az oszlopnevek legfeljebb 128 karakter hosszúságúak lehetnek.
- A táblák legfeljebb 1024 oszlopot tartalmazhatnak táblánként.
- A Warehouse-ban támogatott alapértelmezett rendezés a következő
Latin1_General_100_BIN2_UTF8: . A kis- és nagybetűk megkülönböztetése (CI) rendezéssel is létrehozhat raktárakat – Latin1_General_100_CI_AS_KS_WS_SC_UTF8.
Remarks
A Warehouse korlátozott Transact-SQL funkcióval rendelkezik. További információ: T-SQL Surface Area a Microsoft Fabricben.
Zárolási viselkedés
Egy Schema-Modification zárolja a táblát, egy megosztott zárolást az ADATBÁZISon, és egy Schema-Stability zárolást a SÉMA-on.
Példák
A. Készíts egy klaszterezett táblát az értékesítési adatokhoz
Ez a példa egyszerű Sales táblázatot hoz létre, és CustomerID az és SaleDate oszlopokat használja adatklaszterezéshez.
CREATE TABLE Sales (
SaleID INT,
CustomerID INT,
SaleDate DATE,
Amount DECIMAL(10,2)
) WITH (CLUSTER BY (CustomerID, SaleDate))