Ereignisse
31. März, 23 Uhr - 2. Apr., 23 Uhr
Das größte SQL-, Fabric- und Power BI-Lernereignis. 31. März – 2. April. Verwenden Sie Code FABINSIDER, um $400 zu sparen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Gilt für:Azure Synapse Analytics
Analytics Platform System (PDW)
Erstellt eine neue Tabelle in Azure Synapse Analytics oder Analytics-Plattformsystem (PDW).
Informationen zu Tabellen und deren Verwendung finden Sie unter Tabellen inAzure Synapse Analytics.
Die Erläuterungen zu Azure Synapse Analytics in diesem Artikel gelten sowohl für Azure Synapse Analytics als auch für Analytics-Plattformsystem (PDW), sofern nicht anders angegeben.
Hinweis
Informationen zu den Plattformen SQL Server und Azure SQL finden Sie unter CREATE TABLE. Wählen Sie dort Ihre gewünschte Produktversion aus. Informationen zur SQL-Datenbank in Microsoft Fabric finden Sie unter CREATE TABLE. Referenzinformationen zu Warehouse in Microsoft Fabric finden Sie unter CREATE TABLE (Fabric).
Hinweis
Der serverlose SQL-Pool in Azure Synapse Analytics unterstützt nur externe und temporäre Tabellen.
Transact-SQL-Syntaxkonventionen
-- 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
Der Name der Datenbank, die die neue Tabelle enthält. Gemäß Standardeinstellung die aktuelle Datenbank.
Das Schema der Tabelle. Die Angabe von schema ist optional. Wenn keine Angabe gemacht wird, wird das Standardschema verwendet.
Der Name der neuen Tabelle. Stellen Sie dem Tabellennamen das Zeichen #
voran, um eine temporäre lokale Tabelle zu erstellen. Erläuterungen und einen Leitfaden zu temporären Tabellen finden Sie unter Temporäre Tabellen in einem dedizierten SQL-Pool in Azure Synapse Analytics.
Der Name einer Tabellenspalte.
COLLATE
Windows_collation_name
Gibt die Sortierung für den Ausdruck an. Bei der Sortierung muss es sich um eine von SQL Server unterstützte Windows-Sortierung handeln. Eine Liste der von SQL Server unterstützten Windows-Sortierungen finden Sie unter Windows-Sortierungsname (Transact-SQL)).
NULL
| NOT NULL
Gibt an, ob NULL
-Werte in der Spalte zulässig sind. Der Standardwert lautet NULL
.
[CONSTRAINT
constraint_name] DEFAULT
constant_expression
Gibt den Standardspaltenwert an.
Argument | Erklärung |
---|---|
constraint_name |
Der optionale Name für die Einschränkung. Der Einschränkungsname ist innerhalb der Datenbank eindeutig. Der Name kann in anderen Datenbanken wiederverwendet werden. |
constant_expression |
Der Standardwert für die Spalte. Bei dem Ausdruck muss es sich um einen Literalwert oder eine Konstante handeln. Folgende konstanten Ausdrücke sind beispielsweise zulässig: 'CA' , 4 . Folgende konstante Ausdrücke sind unzulässig: 2+3 , CURRENT_TIMESTAMP . |
Einen Leitfaden zum Auswählen des Tabellentyps finden Sie unter Indizieren von Tabellen in Azure Synapse Analytics.
CLUSTERED COLUMNSTORE INDEX
Speichert die Tabelle als gruppierten Columnstore-Index. Der gruppierte Columnstore-Index gilt für alle Tabellendaten. Dies ist das Standardverhalten für Azure Synapse Analytics.
HEAP
Speichert die Tabelle als Heap. Dies ist das Standardverhalten für Analytics-Plattformsystem (PDW).
CLUSTERED INDEX
( index_column_name [ ,...n ] )
Speichert die Tabelle als gruppierten Index mit mindestens einer Schlüsselspalte. Durch dieses Verhalten werden die Daten zeilenweise gespeichert. Verwenden Sie index_column_name, um den Namen einer oder mehrerer Schlüsselspalten im Index anzugeben. Weitere Informationen finden Sie unter Rowstore Tables.
LOCATION = USER_DB
Diese Option ist veraltet. Es ist eine gültige Syntax, aber nicht mehr erforderlich und wirkt sich nicht mehr auf das Verhalten aus.
Um nachvollziehen zu können, wie Sie die beste Verteilungsmethode auswählen und verteilte Tabellen verwenden, lesen Sie den Artikel zum Entwerfen verteilter Tabellen mit einem dedizierten SQL-Pool in Azure Synapse Analytics.
Empfehlungen für die beste Verteilungsstrategie, die basierend auf Ihren Workloads verwendet werden soll, finden Sie unter Verteilungsratgeber (Distribution Advisor) in Azure Synapse SQL.
DISTRIBUTION = HASH
(distribution_column_name) Weist jede Zeile einer Verteilung zu, indem für den in distribution_column_name gespeicherten Wert ein Hashvorgang durchgeführt wird. Der Algorithmus ist deterministisch. Das bedeutet, er erzeugt für gleiche Verteilungen immer die gleichen Hashwerte. Die Verteilungsspalte muss als NOT NULL definiert sein, weil alle Zeilen, die NULL enthalten, derselben Verteilung zugewiesen werden.
DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] )
verteilt die Zeilen basierend auf den Hashwerten von bis zu acht Spalten, sodass die Basistabellendaten gleichmäßiger verteilt werden, die Datenschiefe im Laufe der Zeit verringert wird und die Abfrageleistung verbessert wird.
Hinweis
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO;
vorhandene MCD-Tabellen bleiben erhalten, werden aber unlesbar. Bei Abfragen mit MCD-Tabellen wird dieser Fehler zurückgegeben: 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.
CREATE TABLE AS SELECT
-Anweisung (CTAS), und die Datenquelle muss Synapse SQL-Tabellen sein.
DISTRIBUTION = ROUND_ROBIN
Verteilt die Zeilen im Roundrobinverfahren gleichmäßig auf alle Verteilungen. Dies ist das Standardverhalten für Azure Synapse Analytics.
DISTRIBUTION = REPLICATE
Speichert in jedem Computeknoten eine Kopie der Tabelle. Bei Azure Synapse Analytics wird die Tabelle in einer Verteilungsdatenbank auf den einzelnen Serverknoten gespeichert. Bei Analytics-Plattformsystem (PDW) wird die Tabelle in einer SQL Server-Dateigruppe gespeichert, die sich über den gesamten Computeknoten erstreckt. Dies ist das Standardverhalten für Analytics-Plattformsystem (PDW).
Einen Leitfaden zur Verwendung von Tabellenpartitionen finden Sie unter Partitionieren von Tabellen im dedizierten SQL-Pool.
PARTITION
(partition_column_nameRANGE
[LEFT
| RIGHT
] FOR VALUES
([boundary_value [,...n]]))
Erstellt eine oder mehrere Tabellenpartitionen. Diese Partitionen sind horizontale Tabellenslices, mit deren Hilfe Sie Vorgänge für Teilmengen von Zeilen ausführen können, unabhängig davon, ob die Tabelle als Heap, gruppierter Index oder gruppierter Columnstore-Index gespeichert ist. Im Gegensatz zur Verteilungsspalte bestimmen Tabellenpartitionen nicht die Verteilung für den Speicherort der einzelnen Zeilen. Vielmehr bestimmten Tabellenpartitionen, wie die Zeilen in den einzelnen Verteilungen gruppiert und gespeichert werden.
Argument | Erklärung |
---|---|
partition_column_name | Gibt die Spalte an, die Azure Synapse Analytics zum Partitionieren der Zeilen verwendet. Diese Spalte kann einen beliebigen Datentyp aufweisen. Azure Synapse Analytics sortiert die Werte der Partitionsspalte in aufsteigender Reihenfolge. Die Sortierung vom niedrigsten zum höchsten Wert erfolgt in der LEFT -Spezifikation von RIGHT nach RANGE . |
RANGE LEFT |
Gibt den Begrenzungswert an, der zur Partition auf der linken Seite (niedrigere Werte) gehört. Die Standardeinstellung ist LEFT. |
RANGE RIGHT |
Gibt den Begrenzungswert an, der zur Partition auf der rechten Seite (höhere Werte) gehört. |
FOR VALUES ( boundary_value [,...n] ) |
Gibt die Begrenzungswerte für die Partition an.
boundary_value ist ein konstanter Ausdruck. Er darf nicht NULL sein. Er muss entweder dem Datentyp partition_column_name entsprechen oder implizit in diesen Datentyp konvertierbar sein. Er darf bei der impliziten Konvertierung nicht abgeschnitten werden, sodass die Größe und Dezimalstellen des Werts nicht mehr dem Datentyp von partition_column_name entsprechen. Wenn Sie einen Begrenzungswert angeben, weist die resultierende Tabelle zwei Partitionen auf, eine für die im Vergleich zum Begrenzungswert niedrigeren Werte und eine für die im Vergleich zum Begrenzungswert höheren Werte. Wenn Sie eine Partition in eine nicht partitionierte Tabelle verschieben, empfängt die nicht partitionierte Tabelle die Daten, verfügt jedoch nicht über die Partitionsgrenzen in den Metadaten. |
Ein Beispiel finden Sie unter Erstellen einer partitionierten Tabelle.
Gruppierter Columnstore-Index (Clustered Columnstore Index, CCI) ist der Standardwert für das Erstellen von Tabellen in Azure Synapse Analytics. Daten in einem CCI werden vor dem Komprimieren in Columnstore-Segmente nicht sortiert. Beim Erstellen eines CCI mit ORDER werden die Daten vor dem Hinzufügen zu Indexsegmenten sortiert, und die Abfrageleistung kann verbessert werden. Weitere Informationen zu sortierten gruppierten Columnstore-Indizes in Azure Synapse Analytics finden Sie unter Performance Tuning with Ordered Clustered Columnstore Index.
Ein geordneter gruppierter CCI kann für Spalten aller Datentypen (außer Zeichenfolgenspalten) erstellt werden, die in Azure Synapse Analytics unterstützt werden.
Benutzer können eine Spalte für column_store_order_ordinal
die Spalte oder Spalten abfragensys.index_columns
, nach der eine Tabelle sortiert ist, und die Reihenfolge in der Reihenfolge.
Weitere Informationen finden Sie unter Leistungsoptimierung mit einem gruppierten Columnstore-Index.
Azure Synapse Analytics unterstützt die am häufigsten verwendeten Datentypen. Ausführlichere Informationen zu Datentypen und deren Verwendung finden Sie unter Tabellendatentypen in Azure Synapse Analytics.
Hinweis
Ähnlich wie SQL Server gibt es ein Limit von 8.060 Byte pro Zeile. Dies kann zu einem Blockierungsproblem für Tabellen mit vielen Spalten oder Spalten mit großen Datentypen werden, z . B. nvarchar(max) oder varbinary(max). Einfügungen oder Aktualisierungen, die gegen das Limit von 8.060 Byte verstoßen, führen zu Fehlercodes 511 oder 611. Weitere Informationen finden Sie im Leitfaden zur Architektur von Seiten und Blöcken.
Eine Tabelle mit Datentypkonvertierungen finden Sie im Abschnitt zu impliziten Konvertierungen unter CAST und CONVERT (Transact-SQL). Weitere Informationen finden Sie unter Datums- und Uhrzeitdatentypen und -funktionen (Transact-SQL).For more information, see Date and time data types and functions (Transact-SQL).
In der folgenden Liste der unterstützten Daten werden detaillierte Informationen sowie Speicherbytes aufgeführt:
datetimeoffset
[ ( n ) ]
Der Standardwert für n ist 7.
datetime2
[ ( n ) ]
Entspricht datetime
, jedoch mit der Ausnahme, dass die Anzahl von Sekundenbruchteilen angegeben werden kann. Der Standardwert für n ist 7
.
Wert n | Precision | Skalieren |
---|---|---|
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
Speichert das Datum und die Uhrzeit mit 19 bis 23 Zeichen entsprechend dem gregorianischen Kalender. Das Datum kann das Jahr, den Monat und den Tag enthalten. In der Uhrzeit ist die Stunde, die Minuten und die Sekunden enthalten. Sie können optional drei Ziffern für Sekundenbruchteile anzeigen. Die Speichergröße beträgt 8 Byte.
smalldatetime
Speichert ein Datum und eine Uhrzeit. Die Speichergröße beträgt 4 Byte.
date
Speichert ein Datum mit maximal 10 Zeichen für das Jahr, den Monat und den Tag gemäß dem gregorianischen Kalender. Die Speichergröße beträgt 3 Byte. Das Datum wird als ganze Zahl gespeichert.
time
[ ( n ) ]
Der Standardwert für n ist 7
.
float
[ ( n ) ]
Ungefähre Zahlendatentypen für numerische Gleitkommadaten. Gleitkommadaten sind Näherungswerte. Deshalb können nicht alle Werte im Bereich des Datentyps exakt dargestellt werden.
n gibt die Anzahl der Bits zum Speichern der Mantisse von float
in wissenschaftlicher Schreibweise an. Somit gibt n die Genauigkeit und die Speichergröße vor. Wenn n angegeben ist, muss es sich um einen Wert zwischen 1
und 53
handeln. Der Standardwert von n lautet 53
.
Wert n | Precision | Speichergröße |
---|---|---|
1-24 | 7 Stellen | 4 Byte |
25-53 | 15 Stellen | 8 Byte |
Azure Synapse Analytics verarbeitet n als einen von zwei möglichen Werten. Wenn 1
<= n<= 24
gegeben ist, wird n als 24
behandelt. Wenn 25
<= n<= 53
gegeben ist, wird n als 53
behandelt.
Der Float-Datentyp Azure Synapse Analytics 53
Das Synonym für doppelte Genauigkeit ist float(53).
real
[ ( n ) ]
Die Definition von „real“ entspricht der von „float“. Das ISO-Synonym für real ist float(24) .
decimal
[ ( precision [ , scale ] ) ] | numeric
[ ( precision [ , scale ] ) ]
Speichert Zahlen mit fester Genauigkeit und mit fester Anzahl von Dezimalstellen.
precision
Die maximale Gesamtanzahl von Dezimalziffern, die auf beiden Seiten des Dezimalkomma gespeichert werden können. Die Genauigkeit muss ein Wert zwischen 1
und der maximalen Genauigkeit von 38
sein. Die Standardgenauigkeit beträgt 18
.
scale
Die maximal speicherbare Zahl an Dezimalstellen rechts vom Dezimalkomma.
Scale muss in einem Bereich zwischen 0
und precision liegen.
scale kann nur angegeben werden, wenn precision angegeben wird. Der Standardwert lautet 0
; daher gilt: 0
<= scale<= precision. Die maximalen Speichergrößen variieren abhängig von der Genauigkeit.
Precision | Speicherplatz in Bytes |
---|---|
1-9 | 5 |
10–19 | 9 |
20–28 | 13 |
29–38 | 17 |
money
| smallmoney
Datentypen zur Darstellung von Währungswerten.
Datentyp | Speicherplatz in Bytes |
---|---|
money |
8 |
smallmoney |
4 |
bigint
| int
| smallint
| tinyint
Exakte Zahlendatentypen für ganzzahlige Daten. Der Speicherplatz wird wie in der folgenden Tabelle dargestellt.
Datentyp | Speicherplatz in Bytes |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
tinyint |
1 |
bit
Ein ganzzahliger Datentyp, der den Wert 1
, 0
oder NULL annehmen kann. Azure Synapse Analytics optimiert das Speichern von bit-Spalten. Wenn in einer Tabelle 8 oder weniger bit-Spalten vorhanden sind, werden die Spalten als 1 Byte gespeichert. Sind zwischen 9 und 16 bit-Spalten vorhanden, werden diese als 2 Byte gespeichert usw.
nvarchar
[ ( n | max
) ] Unicode-Zeichendaten variabler Länge.
n muss ein Wert zwischen 1 und 4000 sein.
max
gibt an, dass die maximale Speichergröße 2^31-1 Byte (2 GB) beträgt. Die Speichergröße in Byte ist doppelt so groß wie die Anzahl eingegebener Zeichen + 2 Byte. Die eingegebenen Daten können null Zeichen lang sein. Die max
Länge gilt nur für Azure Synapse Analytics.
nchar
[ ( n ) ]
Unicode-Zeichendaten mit einer festen Länge von n Zeichen.
n muss ein Wert zwischen 1
und 4000
sein. Die Speichergröße beträgt zweimal n Byte.
varchar
[ ( n | max
) ] Variablenlänge, Nicht-Unicode-Zeichendaten mit einer Länge von n Bytes.
n muss ein Wert zwischen 1
und 8000
sein.
max
gibt an, dass die maximale Speichergröße 2^31-1 Byte (2 GB) beträgt. Die Speichergröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte. Die max
Länge gilt nur für Azure Synapse Analytics.
char
[ ( n ) ]
Nicht-Unicode-Zeichendaten mit einer festen Länge von n Byte.
n muss ein Wert zwischen 1
und 8000
sein. Die Speichergröße beträgt n Byte. Der Standardwert für n lautet 1
.
varbinary
[ ( n | max
) ] Binärdaten mit variabler Länge.
n kann ein Wert zwischen 1
und 8000
sein.
max
gibt an, dass die maximale Speichergröße 2^31-1 Byte (2 GB) beträgt. Die Speichergröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte. Der Standardwert für n ist 7. Die max
Länge gilt nur für Azure Synapse Analytics.
binary
[ ( n ) ]
Binärdaten mit einer festen Länge von n Byte.
n kann ein Wert zwischen 1
und 8000
sein. Die Speichergröße beträgt n Byte. Der Standardwert für n ist 7
.
uniqueidentifier
Ein 16-Byte-GUID.
Zum Erstellen einer Tabelle sind Berechtigungen in der festen Datenbankrolle db_ddladmin
oder folgende Berechtigungen erforderlich:
CREATE TABLE
-Berechtigung für die DatenbankALTER SCHEMA
Berechtigung für das Schema der TabelleZum Erstellen einer partitionierten Tabelle sind Berechtigungen in der festen Datenbankrolle db_ddladmin
oder folgende Berechtigungen erforderlich:
ALTER ANY DATASPACE
-BerechtigungDer Anmeldename, der eine lokale temporäre Tabelle erstellt, erhält die Berechtigungen CONTROL
, INSERT
, SELECT
und UPDATE
für die Tabelle.
Mindest- und Höchstgrenzwerte in Azure Synapse Analytics finden Sie unter Azure Synapse Analytics-Kapazitätsbeschränkungen.
Jede benutzerdefinierte Tabelle ist in mehrere kleinere Tabellen aufgeteilt, die in getrennten entfernten Speicherorten, so genannten Verteilungen, gespeichert sind. Azure Synapse Analytics verwendet 60 Verteilungen. Bei Analytics-Plattformsystem (PDW) hängt die Anzahl der Verteilungen von der Anzahl der Computeknoten ab.
Jede Verteilung enthält alle Tabellenpartitionen. Bei 60 Verteilungen und vier Tabellenpartitionen, zuzüglich einer leeren Partition, sind beispielsweise 300 Partitionen (5 x 60 = 300) vorhanden. Wenn es sich bei der Tabelle um einen gruppierten Columnstore-Index handelt, gibt es einen Spaltenspeicherindex pro Partition, was bedeutet, dass 300 Spaltenspeicherindizes vorhanden sind.
Es wird empfohlen, weniger Tabellenpartitionen zu verwenden, um sicherzustellen, dass jeder Columnstore-Index genügend Zeilen aufweist, um von den Vorteilen der Columnstore-Indizes zu profitieren. Weitere Informationen in Azure Synapse Analytics finden Sie unter Partitionierungstabellen in dediziertem SQL-Pool und Indizes für dedizierte SQL-Pooltabellen in Azure Synapse Analytics.
Eine Rowstore-Tabelle ist eine in zeilenweiser Reihenfolge gespeicherte Tabelle. Es handelt sich um einen Heap oder gruppierten Index. Azure Synapse Analytics erstellt alle Rowstore-Tabellen mit Seitenkomprimierung. Dieses Verhalten kann vom Benutzer nicht konfiguriert werden.
Eine Columnstore-Tabelle ist eine in spaltenweiser Reihenfolge gespeicherte Tabelle. Dabei stellt der Columnstore-Index eine Technologie zum Verwalten von Daten dar, die in einer Columnstore-Tabelle gespeichert sind. Der gruppierte Columnstore-Index wirkt sich nicht darauf aus, wie die Daten verteilt werden. Er wirkt sich aber darauf aus, wie die Daten innerhalb der einzelnen Verteilungen gespeichert werden.
Um aus einer Rowstore-Tabelle eine Columnstore-Tabelle zu machen, müssen alle in der Tabelle vorhandenen Indizes gelöscht und ein gruppierter Columnstore-Index erstellt werden. Ein Beispiel hierzu finden Sie unter CREATE COLUMNSTORE INDEX (Transact-SQL).
Weitere Informationen und Beispiele finden Sie in diesen Artikeln:
DEFAULT
Einschränkung für eine Verteilungsspalte definieren.Die Partitionsspalte darf keine reine Unicode-Sammlung enthalten. Bei der folgenden Anweisung beispielsweise tritt ein Fehler auf:
CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))
Wenn boundary_value ein Literalwert ist, der implizit in den Datentyp in partition_column_name konvertiert werden muss, ergibt sich eine Diskrepanz. Zwar wird über die Azure Synapse Analytics-Systemsichten der Literalwert angezeigt, für Transact-SQL-Vorgänge wird jedoch der konvertierte Wert verwendet.
Globale temporäre Tabellen, die mit ##
beginnen, werden nicht unterstützt.
Lokale temporäre Tabellen weisen die folgenden Einschränkungen auf:
DROP TABLE
-Anweisung, um sie explizit abzulegen.GRANT
, DENY
und REVOKE
nicht verwendet werden.Wendet auf die Tabelle eine exklusive Sperre an. Wendet auf die Objekte DATABASE, SCHEMA und SCHEMARESOLUTION eine gemeinsame Sperre an.
Im folgenden Beispiel wird die Tabelle MyTable
mit zwei verschiedenen Spaltensortierungen erstellt. Standardmäßig weist die Spalte mycolumn1
die Standardsortierung Latin1_General_100_CI_AS_KS_WS
auf. Die Spalte mycolumn2
weist die Sortierung Frisian_100_CS_AS
auf.
CREATE TABLE MyTable
(
mycolumnnn1 nvarchar,
mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
Im folgenden Beispiel ist die Syntax zum Festlegen eines Standardwerts für eine Spalte dargestellt. Die spalte colA
verfügt über eine Standardeinschränkung namens constraint_colA
und einen Standardwert von 0
.
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
Im folgenden Beispiel wird eine lokale temporäre Tabelle namens #myTable erstellt. In der Tabelle wird mit einem dreiteiligen Namen angegeben, der mit einem # beginnt.
CREATE TABLE AdventureWorks.dbo.#myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id),
CLUSTERED COLUMNSTORE INDEX
)
;
Im folgende Beispiel wird eine verteilte Tabelle mit einem gruppierten Columnstore-Index erstellt. Jede Verteilung wird als Columnstore gespeichert.
Der gruppierte Columnstore-Index hat keine Auswirkung auf die Verteilung der Daten, da die Daten immer zeilenweise verteilt werden. Der gruppierte Columnstore-Index bestimmt jedoch, wie die Daten in den einzelnen Verteilungen gespeichert werden.
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH
(
DISTRIBUTION = HASH ( colB ),
CLUSTERED COLUMNSTORE INDEX
)
;
Das folgende Beispiel zeigt, wie ein sortierter gruppierter Columnstore-Index erstellt wird. Der Index wird sortiert am SHIPDATE
.
CREATE TABLE Lineitem
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))
AS
SELECT * FROM ext_Lineitem
Im folgenden Beispiel wird eine ROUND_ROBIN-Tabelle mit drei Spalten und ohne Partitionen erstellt. Die Daten werden in allen Verteilungen verteilt. Die Tabelle wird mit einem gruppierten Columnstore-Index erstellt, der im Vergleich zu einem Heap oder einem gruppierten Rowstore-Index eine bessere Leistung und Datensicherung gewährleistet.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH ( CLUSTERED COLUMNSTORE INDEX );
Im folgenden Beispiel wird dieselbe Tabelle wie im vorherigen Beispiel erstellt. Für diese Tabelle werden jedoch Zeilen verteilt (für id
- und zipCode
-Spalten). Die Tabelle wird mit einem gruppierten Columnstore-Index erstellt, der im Vergleich zu einem Heap oder einem gruppierten Rowstore-Index eine bessere Leistung und Datensicherung gewährleistet.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id, zipCode),
CLUSTERED COLUMNSTORE INDEX
);
Im folgenden Beispiel wird eine replizierte Tabelle ähnlich wie im vorherigen Beispiel erstellt. Replizierte Tabellen werden vollständig auf alle Computeknoten kopiert. Dank dieser Kopie auf allen Computeknoten wird die Anzahl der Datenverschiebungen für Abfragen reduziert. Dieses Beispiel wird mit einem CLUSTERED INDEX erstellt, wodurch eine bessere Datenkomprimierung als bei einem Heap erzielt wird. Ein Heap enthält möglicherweise nicht genügend Zeilen, um eine gute CLUSTERED COLUMNSTORE INDEX-Komprimierung zu erzielen.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = REPLICATE,
CLUSTERED INDEX (lastName)
);
Im folgenden Beispiel wird die gleiche Tabelle erstellt wie in Beispiel A mit dem Hinzufügen der RANGE LEFT
Partitionierung in der id
Spalte. Es werden vier Partitionsbegrenzungswerte angegeben, sodass sich fünf Partitionen ergeben.
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
);
In diesem Beispiel werden Daten in die folgenden Partitionen sortiert:
Wenn diese Tabelle "RANGE RIGHT" anstelle von RANGE LEFT (Standard) partitioniert wurde, werden die Daten in die folgenden Partitionen sortiert:
Im folgende Beispiel wird eine partitionierte Tabelle mit einer Partition erstellt. Es wird kein Begrenzungswert angegeben, sodass sich nur eine Partition ergibt.
CREATE TABLE myTable (
id int NOT NULL,
lastName varchar(20),
zipCode int)
WITH
(
PARTITION ( id RANGE LEFT FOR VALUES ( )),
CLUSTERED COLUMNSTORE INDEX
)
;
Im folgenden Beispiel wird eine neue Tabelle mit dem Namen myTable
mit Partitionierung in einer date
-Spalte erstellt. Durch Die Verwendung von RANGE RIGHT
und Datumsangaben für die Grenzwerte wird ein Monat mit Daten in jede Partition platziert.
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'
))
);
Gilt für:Warehouse in Microsoft Fabric
Erstellt eine neue Tabelle in einem Warehouse in Microsoft Fabric.
Weitere Informationen finden Sie unter Erstellen von Tabellen in Warehouse in Microsoft Fabric.
Hinweis
Informationen zur SQL-Datenbank in Microsoft Fabric finden Sie unter CREATE TABLE. Besuchen Sie für SQL Server- und Azure SQL-Plattformen CREATE TABLE , und wählen Sie ihre gewünschte Produktversion aus der Dropdownliste der Version aus. Referenzinformationen zu Azure Synapse Analytics und Analytics Platform System (PDW) finden Sie unter CREATE TABLE (Azure Synapse Analytics).
Transact-SQL-Syntaxkonventionen
-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
(
{ column_name <data_type> [ <column_options> ] } [ ,...n ]
)
[;]
<column_options> ::=
[ NULL | NOT NULL ] -- default is NULL
[ COLLATE Windows_collation_name ]
<data type> ::=
datetime2 ( n )
| date
| time ( n )
| float [ ( n ) ]
| real [ ( n ) ]
| decimal [ ( precision [ , scale ] ) ]
| numeric [ ( precision [ , scale ] ) ]
| bigint
| int
| smallint
| bit
| varchar [ ( n | MAX ) ]
| char [ ( n ) ]
| varbinary [ ( n | MAX ) ]
| uniqueidentifier
Der Name der Datenbank, die die neue Tabelle enthält. Gemäß Standardeinstellung die aktuelle Datenbank.
Das Schema der Tabelle. Die Angabe von schema ist optional. Wenn keine Angabe gemacht wird, wird das Standardschema verwendet.
Der Name der neuen Tabelle.
Der Name einer Tabellenspalte.
NULL
| NOT NULL
Gibt an, ob NULL
-Werte in der Spalte zulässig sind. Der Standardwert lautet NULL
.
COLLATE
Windows_collation_name
Gibt die Sortierung für den Ausdruck an.
Weitere Informationen zu unterstützten Sortierungen finden Sie unter COLLATE.
Microsoft Fabric unterstützt die gängigsten Datentypen. Weitere Informationen finden Sie unter Datentypen in Microsoft Fabric.
Hinweis
Ähnlich wie SQL Server gibt es ein Limit von 8.060 Byte pro Zeile. Dies kann zu einem Blockierungsproblem für Tabellen mit vielen Spalten oder Spalten mit großen Datentypen werden, z varchar(8000)
. B. oder varbinary(8000)
. Einfügungen oder Aktualisierungen, die gegen das Limit von 8.060 Byte verstoßen, führen zu Fehlercodes 511 oder 611. Weitere Informationen finden Sie im Leitfaden zur Architektur von Seiten und Blöcken.
Eine Tabelle mit Datentypkonvertierungen finden Sie im Abschnitt zu impliziten Konvertierungen unter CAST und CONVERT (Transact-SQL). Weitere Informationen finden Sie unter Datums- und Uhrzeitdatentypen und -funktionen (Transact-SQL).For more information, see Date and time data types and functions (Transact-SQL).
In der folgenden Liste der unterstützten Daten werden detaillierte Informationen sowie Speicherbytes aufgeführt.
datetime2
( n )
Speichert das Datum und die Uhrzeit mit 19 bis 26 Zeichen entsprechend dem gregorianischen Kalender. Das Datum kann das Jahr, den Monat und den Tag enthalten. In der Uhrzeit ist die Stunde, die Minuten und die Sekunden enthalten. Optional können Sie null bis sechs Ziffern für Sekundenbruchteile basierend auf dem Parameter n speichern und anzeigen. Die Speichergröße beträgt 8 Byte.
n muss ein Wert zwischen 0
und 6
sein.
Hinweis
Es gibt keine Standardgenauigkeit wie andere SQL-Plattformen. Sie müssen den Wert für die Genauigkeit von 0
bis 6
angeben.
Wert n | Precision | Skalieren |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
date
Speichert ein Datum mit maximal 10 Zeichen für das Jahr, den Monat und den Tag gemäß dem gregorianischen Kalender. Die Speichergröße beträgt 3 Byte. Das Datum wird als ganze Zahlgespeichert.
time
( n )
n muss ein Wert zwischen 0
und 6
sein.
float
[ ( n ) ]
Ungefähre Zahlendatentypen für numerische Gleitkommadaten. Gleitkommadaten sind Näherungswerte. Deshalb können nicht alle Werte im Bereich des Datentyps exakt dargestellt werden.
n gibt die Anzahl der Bits an, die verwendet werden, um die Mantissa des Floats in der wissenschaftlichen Schreibweise zu speichern. Somit gibt n die Genauigkeit und die Speichergröße vor. Wenn n angegeben ist, muss es sich um einen Wert zwischen 1
und 53
handeln. Der Standardwert von n lautet 53
.
Hinweis
Es gibt keine Standardgenauigkeit wie bei anderen SQL-Plattformen. Sie müssen den Wert für die Genauigkeit von 0
bis 6
angeben.
Wert n | Precision | Speichergröße |
---|---|---|
1-24 | 7 Stellen | 4 Byte |
25-53 | 15 Stellen | 8 Byte |
Azure Synapse Analytics verarbeitet n als einen von zwei möglichen Werten. Wenn 1
<= n<= 24
gegeben ist, wird n als 24
behandelt. Wenn 25
<= n<= 53
gegeben ist, wird n als 53
behandelt.
Der Float-Datentyp Azure Synapse Analytics 53
Das Synonym für doppelte Genauigkeit ist float(53).
real
[ ( n ) ]
Die Definition von „real“ entspricht der von „float“. Das ISO-Synonym für real ist float(24) .
decimal
[ ( precision [ , scale ] ) ] | numeric
[ ( precision [ , scale ] ) ]
Speichert Zahlen mit fester Genauigkeit und mit fester Anzahl von Dezimalstellen.
precision
Die maximale Gesamtanzahl von Dezimalziffern, die auf beiden Seiten des Dezimalkomma gespeichert werden können. Die Genauigkeit muss ein Wert zwischen 1
und der maximalen Genauigkeit von 38
sein. Die Standardgenauigkeit beträgt 18
.
scale
Die maximal speicherbare Zahl an Dezimalstellen rechts vom Dezimalkomma.
Scale muss in einem Bereich zwischen 0
und precision liegen.
scale kann nur angegeben werden, wenn precision angegeben wird. Der Standardwert lautet 0
; daher gilt: 0
<= scale<= precision. Die maximalen Speichergrößen variieren abhängig von der Genauigkeit.
Precision | Speicherplatz in Bytes |
---|---|
1-9 | 5 |
10–19 | 9 |
20–28 | 13 |
29–38 | 17 |
bigint
| int
| smallint
Exakte Zahlendatentypen für ganzzahlige Daten. Der Speicherplatz wird wie in der folgenden Tabelle dargestellt.
Datentyp | Speicherplatz in Bytes |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
bit
Ein ganzzahliger Datentyp, der den Wert 1
, 0
oder NULL annehmen kann. Azure Synapse Analytics optimiert das Speichern von bit-Spalten. Wenn in einer Tabelle 8 oder weniger bit-Spalten vorhanden sind, werden die Spalten als 1 Byte gespeichert. Sind zwischen 9 und 16 bit-Spalten vorhanden, werden diese als 2 Byte gespeichert usw.
varchar
[ ( n | MAX
) ] Unicode-Zeichendaten mit einer variablen Länge von n Byte.
n muss ein Wert zwischen 1
und 8000
sein. Die Speichergröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte. Der Standardwert für n lautet 1
. Die varchar(MAX)
Spalte kann bis zu 1 MB Text im Lager speichern.
Hinweis
varchar(MAX)
befindet sich in der Vorschau im Lager. Weitere Informationen finden Sie unter Datentypen in Microsoft Fabric.
char
[ ( n ) ]
Unicode-Zeichendaten mit einer festen Länge von n Byte.
n muss ein Wert zwischen 1
und 8000
sein. Die Speichergröße beträgt n Byte. Der Standardwert für n lautet 1
.
varbinary
[ ( n | MAX
) ] Binärdaten mit variabler Länge.
n kann ein Wert zwischen 1
und 8000
sein. Die Speichergröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte. Der Standardwert für n ist 7.
Die varbinary(MAX)
Spalte kann bis zu 1 MB Daten im Warehouse speichern.
Hinweis
varbinary(MAX)
befindet sich in der Vorschau im Lager. Weitere Informationen finden Sie unter Datentypen in Microsoft Fabric.
uniqueidentifier
Ein 16-Byte-GUID.
Berechtigungen in Microsoft Fabric unterscheiden sich von Berechtigungen Azure Synapse Analytics.
Der Benutzer muss Mitglied der Rollen "Administrator", "Mitglied" oder "Mitwirkender" im Fabric-Arbeitsbereich sein.
/
oder \
enden nicht mit einem .
.Latin1_General_100_BIN2_UTF8
. Sie können auch Warehoueses auch mit CI-Sortierung (ohne Berücksichtigung von Groß-/Kleinschreibung) erstellen: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.Die Transact-SQL-Funktionalität in Warehouse ist eingeschränkt. Weitere Informationen finden Sie unter T-SQL Surface Area in Microsoft Fabric.
Akzeptiert eine Schema-Modification-Sperre für die Tabelle, eine Freigabesperre für DATABASE und eine Schema-Stability-Sperre für SCHEMA.
Ereignisse
31. März, 23 Uhr - 2. Apr., 23 Uhr
Das größte SQL-, Fabric- und Power BI-Lernereignis. 31. März – 2. April. Verwenden Sie Code FABINSIDER, um $400 zu sparen.
Jetzt registrieren