CREATE TABLE
Dotyczy:azure Synapse Analytics
Analytics Platform System (PDW)
CREATE TABLE (Azure Synapse Analytics)
Tworzy nową tabelę w usłudze Azure Synapse Analytics lub Analytics Platform System (PDW).
Aby zrozumieć tabele i jak ich używać, zobacz Tables in Azure Synapse Analytics (Tabele w usłudze Azure Synapse Analytics).
Dyskusje na temat usługi Azure Synapse Analytics w tym artykule dotyczą zarówno usługi Azure Synapse Analytics, jak i systemu platformy analizy (PDW), chyba że określono inaczej.
Nuta
W przypadku platform SQL Server i Azure SQL odwiedź stronę CREATE TABLE i wybierz odpowiednią wersję produktu. Aby uzyskać informacje o bazie danych SQL w usłudze Microsoft Fabric, zobacz CREATE TABLE. Aby uzyskać informacje na temat magazynu w usłudze Microsoft Fabric, odwiedź stronę CREATE TABLE (Fabric).
Nuta
Bezserwerowa pula SQL w usłudze Azure Synapse Analytics obsługuje tylko zewnętrznych i tymczasowych tabel.
Transact-SQL konwencje składni
Składnia
-- 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
Argumenty
database_name
Nazwa bazy danych, która będzie zawierać nową tabelę. Wartość domyślna to bieżąca baza danych.
schema_name
Schemat tabeli. Określanie schematu jest opcjonalne. Jeśli pole jest puste, zostanie użyty domyślny schemat.
table_name
Nazwa nowej tabeli. Aby utworzyć lokalną tabelę tymczasową, przed nazwą tabeli #
. Aby uzyskać wyjaśnienia i wskazówki dotyczące tabel tymczasowych, zobacz Tabele tymczasowe w dedykowanej puli SQL w usłudze Azure Synapse Analytics.
column_name
Nazwa kolumny tabeli.
Opcje kolumn
COLLATE
Windows_collation_name
Określa sortowanie wyrażenia. Sortowanie musi być jednym z sortowania systemu Windows obsługiwanych przez program SQL Server. Aby uzyskać listę sortowania systemu Windows obsługiwanych przez program SQL Server, zobacz Nazwa sortowania systemu Windows (Transact-SQL)).
NULL
| NOT NULL
Określa, czy wartości NULL
są dozwolone w kolumnie. Wartość domyślna to NULL
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_expression
Określa domyślną wartość kolumny.
Argument | Wyjaśnienie |
---|---|
constraint_name |
Opcjonalna nazwa ograniczenia. Nazwa ograniczenia jest unikatowa w bazie danych. Nazwa może być ponownie używana w innych bazach danych. |
constant_expression |
Wartość domyślna kolumny. Wyrażenie musi być wartością literału lub stałą. Na przykład te wyrażenia stałe są dozwolone: 'CA' , 4 . Te wyrażenia stałe nie są dozwolone: 2+3 , CURRENT_TIMESTAMP . |
Opcje struktury tabeli
Aby uzyskać wskazówki dotyczące wybierania typu tabeli, zobacz Tabele indeksowania w usłudze Azure Synapse Analytics.
CLUSTERED COLUMNSTORE INDEX
Przechowuje tabelę jako indeks klastrowanego magazynu kolumn. Indeks klastrowanego magazynu kolumn ma zastosowanie do wszystkich danych tabeli. To zachowanie jest domyślne dla usługi Azure Synapse Analytics.
HEAP
Przechowuje tabelę jako stertę. To zachowanie jest ustawieniem domyślnym dla systemu platformy analizy (PDW).
CLUSTERED INDEX
( index_column_name [ ,...n ] )
Przechowuje tabelę jako indeks klastrowany z co najmniej jedną kolumną klucza. To zachowanie przechowuje dane według wiersza. Użyj index_column_name, aby określić nazwę co najmniej jednej kolumny klucza w indeksie. Aby uzyskać więcej informacji, zobacz Tabele magazynu wierszy.
LOCATION = USER_DB
Ta opcja jest przestarzała. Jest to prawidłowa składnia, ale nie jest już wymagana i nie ma już wpływu na zachowanie.
Opcje dystrybucji tabel
Aby dowiedzieć się, jak wybrać najlepszą metodę dystrybucji i użyć tabel rozproszonych, zobacz projektowanie tabel rozproszonych przy użyciu dedykowanej puli SQL w usłudze Azure Synapse Analytics.
Aby uzyskać zalecenia dotyczące najlepszej strategii dystrybucji do użycia na podstawie obciążeń, zobacz Synapse SQL Distribution Advisor (wersja zapoznawcza).
DISTRIBUTION = HASH
( distribution_column_name ) przypisuje każdy wiersz do jednej dystrybucji, tworząc skrót wartości przechowywanej w distribution_column_name. Algorytm jest deterministyczny, co oznacza, że zawsze skróty tej samej wartości do tej samej dystrybucji. Kolumna dystrybucji powinna być zdefiniowana jako NOT NULL, ponieważ wszystkie wiersze, które mają wartość NULL, są przypisane do tej samej dystrybucji.
DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] )
Dystrybuuje wiersze na podstawie wartości skrótu do ośmiu kolumn, co pozwala na jeszcze większą dystrybucję danych tabeli bazowej, zmniejszając niesymetryczność danych w czasie i poprawiając wydajność zapytań.
Nuta
- Aby włączyć funkcję dystrybucji wielokolumna (MCD), zmień poziom zgodności bazy danych na 50 za pomocą tego polecenia. Aby uzyskać więcej informacji na temat ustawiania poziomu zgodności bazy danych, zobacz ALTER DATABASE SCOPED CONFIGURATION. Na przykład:
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
- Aby wyłączyć funkcję dystrybucji wielokolumnajowej (MCD), uruchom to polecenie, aby zmienić poziom zgodności bazy danych na AUTO. Na przykład:
ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO;
Istniejące tabele MCD pozostaną, ale staną się nieczytelne. Zapytania dotyczące tabel MCD zwracają ten błąd: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.
- Aby odzyskać dostęp do tabel MCD, włącz tę funkcję ponownie.
- Aby załadować dane do tabeli MCD, użyj instrukcji
CREATE TABLE AS SELECT
(CTAS), a źródłem danych muszą być tabele SQL usługi Synapse.
- Generowanie skryptów tworzenia tabel MCD jest obecnie obsługiwane w programie SQL Server Management Studio (SSMS) w wersji 19 i nowszych.
DISTRIBUTION = ROUND_ROBIN
rozkłada wiersze równomiernie we wszystkich rozkładach w sposób okrężny. To zachowanie jest domyślne dla usługi Azure Synapse Analytics.
DISTRIBUTION = REPLICATE
Przechowuje jedną kopię tabeli w każdym węźle Obliczeniowym. W przypadku usługi Azure Synapse Analytics tabela jest przechowywana w bazie danych dystrybucji w każdym węźle obliczeniowym. W przypadku systemu platformy analizy (PDW) tabela jest przechowywana w grupie plików programu SQL Server, która obejmuje węzeł Obliczeniowy. To zachowanie jest ustawieniem domyślnym dla systemu platformy analizy (PDW).
Opcje partycji tabeli
Aby uzyskać wskazówki dotyczące używania partycji tabel, zobacz Partycjonowanie tabel w dedykowanej puli SQL.
PARTITION
( partition_column_nameRANGE
[ LEFT
| RIGHT
] FOR VALUES
( [ boundary_value [,...n] ])
Tworzy co najmniej jedną partycję tabeli. Te partycje to wycinki tabeli poziomej, które umożliwiają stosowanie operacji do podzestawów wierszy niezależnie od tego, czy tabela jest przechowywana jako sterta, indeks klastrowany lub indeks klastrowanego magazynu kolumn. W przeciwieństwie do kolumny dystrybucji partycje tabeli nie określają dystrybucji, w której są przechowywane poszczególne wiersze. Zamiast tego partycje tabel określają sposób grupowania i przechowywania wierszy w poszczególnych dystrybucjach.
Argument | Wyjaśnienie |
---|---|
partition_column_name | Określa kolumnę używaną przez usługę Azure Synapse Analytics do partycjonowania wierszy. Ta kolumna może być dowolnym typem danych. Usługa Azure Synapse Analytics sortuje wartości kolumn partycji w kolejności rosnącej. W specyfikacji RANGE od LEFT do RIGHT w specyfikacji RANGE . |
RANGE LEFT |
Określa wartość granicy należy do partycji po lewej stronie (niższe wartości). Wartość domyślna to LEFT. |
RANGE RIGHT |
Określa wartość granicy należy do partycji po prawej stronie (wyższe wartości). |
FOR VALUES ( boundary_value [,...n] ) |
Określa wartości granic partycji.
boundary_value jest wyrażeniem stałym. Nie może mieć wartości NULL. Musi być zgodny lub niejawnie konwertowany na typ danych partition_column_name. Nie można go obcinać podczas niejawnej konwersji, aby rozmiar i skala wartości nie odpowiadały typowi danych partition_column_name Jeśli określisz jedną wartość granic, tabela wynikowa ma dwie partycje; jeden dla wartości niższych niż wartość granicy i jeden dla wartości wyższych niż wartość granicy. Jeśli przeniesiesz partycję do tabeli niepartycyjnej, tabela niepartycjonowana odbiera dane, ale nie będzie miała granic partycji w metadanych. |
Aby zapoznać się z przykładem, zobacz Create a partitioned table (Tworzenie tabeli partycjonowanej).
Opcja indeksu uporządkowanego klastrowanego magazynu kolumn
Indeks klastrowanego magazynu kolumn (CCI) jest domyślnym ustawieniem tworzenia tabel w usłudze Azure Synapse Analytics. Dane w CCI nie są sortowane przed skompresowaniem do segmentów magazynu kolumn. Podczas tworzenia CCI z kolejnością dane są sortowane przed dodaniu do segmentów indeksu i można poprawić wydajność zapytań. Aby uzyskać więcej informacji na temat uporządkowanych klastrowanych indeksów magazynu kolumn w usłudze Azure Synapse Analytics, zobacz Performance Tuning with Ordered Clustered Columnstore Index.
Uporządkowany CCI można utworzyć na kolumnach dowolnego typu danych obsługiwanych w usłudze Azure Synapse Analytics z wyjątkiem kolumn ciągu.
Użytkownicy mogą wykonywać zapytania column_store_order_ordinal
kolumny w sys.index_columns
dla kolumny lub kolumn, na których jest uporządkowana tabela, oraz sekwencję w kolejności.
Aby uzyskać szczegółowe informacje, zobacz Dostrajanie wydajności za pomocą uporządkowanego klastrowanego indeksu magazynu kolumn.
Typ danych
Usługa Azure Synapse Analytics obsługuje najczęściej używane typy danych. Aby lepiej zrozumieć typy danych i jak ich używać, zobacz Typy danych dla tabel w usłudze Azure Synapse Analytics.
Nuta
Podobnie jak w przypadku programu SQL Server, istnieje limit 8060 bajtów na wiersz. Może to stać się problemem blokującym w przypadku tabel z wieloma kolumnami lub kolumnami z dużymi typami danych, takimi jak nvarchar(max) lub varbinary(max). Wstawia lub aktualizacje naruszające limit 8060 bajtów spowoduje wyświetlenie kodów błędów 511 lub 611. Aby uzyskać więcej informacji, zobacz Pages and Extents Architecture Guide.
Aby uzyskać tabelę konwersji typów danych, zobacz sekcję Niejawne konwersje CAST i CONVERT (Transact-SQL). Aby uzyskać więcej informacji, zobacz Typy i funkcje danych daty i godziny (Transact-SQL).
Poniższa lista obsługiwanych typów danych zawiera ich szczegóły i bajty magazynu:
datetimeoffset
[ ( n ) ]
Wartość domyślna n to 7.
datetime2
[ ( n ) ]
Tak samo jak datetime
, z tą różnicą, że można określić liczbę sekund ułamkowych. Wartość domyślna n to 7
.
n wartości | Precyzja | Skala |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
7 |
27 | 7 |
datetime
Przechowuje datę i godzinę dnia z 19 do 23 znaków zgodnie z kalendarzem gregoriańskim. Data może zawierać rok, miesiąc i dzień. Czas zawiera godzinę, minuty, sekundy. Jako opcję można wyświetlić trzy cyfry dla sekund ułamkowych. Rozmiar magazynu wynosi 8 bajtów.
smalldatetime
Przechowuje datę i godzinę. Rozmiar magazynu to 4 bajty.
date
Przechowuje datę, używając maksymalnie 10 znaków dla roku, miesiąca i dnia zgodnie z kalendarzem gregoriańskim. Rozmiar magazynu to 3 bajty. Data jest przechowywana jako liczba całkowita.
time
[ ( n ) ]
Wartość domyślna n to 7
.
float
[ ( n ) ]
Przybliżony typ danych liczbowych do użycia z danymi liczbowymi zmiennoprzecinkowych. Dane zmiennoprzecinkowe są przybliżone, co oznacza, że nie wszystkie wartości w zakresie typów danych mogą być reprezentowane dokładnie.
n określa liczbę bitów używanych do przechowywania mantissa float
w notacji naukowej.
n określa dokładność i rozmiar magazynu. Jeśli określono n, musi to być wartość między 1
a 53
. Wartość domyślna n to 53
.
n wartości | Precyzja | Rozmiar magazynu |
---|---|---|
1-24 | 7 cyfr | 4 bajty |
25-53 | 15 cyfr | 8 bajtów |
Usługa Azure Synapse Analytics traktuje n jako jedną z dwóch możliwych wartości. Jeśli 1
<= n<= 24
, n jest traktowana jako 24
. Jeśli 25
<= n<= 53
, n jest traktowana jako 53
.
Typ danych zmiennoprzecinkowych usługi Azure Synapse Analytics jest zgodny ze standardem ISO dla wszystkich wartości n od 1
do 53
. Synonimem podwójnej dokładności jest float(53).
real
[ ( n ) ]
Definicja wartości rzeczywistej jest taka sama jak zmiennoprzecinkowa. Synonim ISO dla rzeczywistej jest float(24).
decimal
[ ( precyzja [ , skalowanie ] ] | numeric
[ ( precyzja [ , skalowanie ] ]
Przechowuje stałe precyzje i liczby skalowania.
precyzji
Maksymalna całkowita liczba cyfr dziesiętnych, które można przechowywać po obu stronach przecinka dziesiętnego. Precyzja musi być wartością z 1
przez maksymalną precyzję 38
. Domyślna precyzja to 18
.
skalowanie
Maksymalna liczba cyfr dziesiętnych, które mogą być przechowywane po prawej stronie przecinka dziesiętnego.
Skalowanie musi być wartością z 0
przez precyzji. Można określić skalowania tylko wtedy, gdy określono precyzji. Domyślna skala jest 0
, a więc 0
<= skalowanie<= precyzja. Maksymalne rozmiary magazynu różnią się w zależności od dokładności.
Precyzja | Bajty magazynu |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
money
| smallmoney
Typy danych reprezentujące wartości waluty.
Typ danych | Bajty magazynu |
---|---|
money |
8 |
smallmoney |
4 |
bigint
| int
| smallint
| tinyint
Dokładne typy danych liczb, które używają danych całkowitych. Magazyn jest pokazany w poniższej tabeli.
Typ danych | Bajty magazynu |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
tinyint |
1 |
bit
Typ danych całkowitych, który może przyjmować wartość 1
, 0
lub null. Usługa Azure Synapse Analytics optymalizuje magazyn kolumn bitowych. Jeśli w tabeli znajduje się co najmniej 8 kolumn bitowych, kolumny są przechowywane jako 1 bajt. Jeśli istnieją kolumny z zakresu od 9 do 16 bitów, kolumny są przechowywane jako 2 bajty itd.
nvarchar
[ ( n | max
) ] Dane znaków Unicode o zmiennej długości.
n może być wartością z zakresu od 1 do 4000.
max
wskazuje, że maksymalny rozmiar magazynu wynosi 2^31–1 bajtów (2 GB). Rozmiar magazynu w bajtach jest dwa razy większy niż liczba znaków wprowadzonych + 2 bajty. Wprowadzone dane mogą mieć długość zero znaków. Długość max
dotyczy tylko usługi Azure Synapse Analytics.
nchar
[ ( n ) ]
Dane znaków Unicode o stałej długości o długości n znaków.
n musi być wartością z 1
przez 4000
. Rozmiar magazynu to dwa razy n bajtów.
varchar
[ ( n | max
) ] Dane znaków o zmiennej długości, innej niż Unicode o długości n bajtów.
n musi być wartością z 1
do 8000
.
max
wskazuje, że maksymalny rozmiar magazynu wynosi 2^31–1 bajtów (2 GB). Rozmiar magazynu to rzeczywista długość danych wprowadzonych + 2 bajty. Długość max
dotyczy tylko usługi Azure Synapse Analytics.
char
[ ( n ) ]
Dane o stałej długości znaków innych niż Unicode o długości n bajtów.
n musi być wartością z 1
do 8000
. Rozmiar magazynu to n bajtów. Wartość domyślna n to 1
.
varbinary
[ ( n | max
) ] Dane binarne o zmiennej długości.
n może być wartością z 1
do 8000
.
max
wskazuje, że maksymalny rozmiar magazynu wynosi 2^31–1 bajtów (2 GB). Rozmiar magazynu to rzeczywista długość danych wprowadzonych + 2 bajty. Wartość domyślna n to 7. Długość max
dotyczy tylko usługi Azure Synapse Analytics.
binary
[ ( n ) ]
Dane binarne o stałej długości o długości n bajtów.
n może być wartością z 1
do 8000
. Rozmiar magazynu to n bajtów. Wartość domyślna n to 7
.
uniqueidentifier
To 16-bajtowy identyfikator GUID.
Uprawnienia
Utworzenie tabeli wymaga uprawnień w db_ddladmin
stałej roli bazy danych lub:
-
CREATE TABLE
uprawnienia do bazy danych -
ALTER SCHEMA
uprawnienia do schematu tabeli
Tworzenie tabeli partycjonowanej wymaga uprawnień w db_ddladmin
stałej roli bazy danych lub
- uprawnienie
ALTER ANY DATASPACE
Identyfikator logowania, który tworzy lokalną tabelę tymczasową, otrzymuje uprawnienia CONTROL
, INSERT
, SELECT
i UPDATE
w tabeli.
Uwagi
Aby uzyskać minimalne i maksymalne limity w usłudze Azure Synapse Analytics, zobacz Limity pojemności usługi Azure Synapse Analytics.
Określanie liczby partycji tabeli
Każda tabela zdefiniowana przez użytkownika jest podzielona na wiele mniejszych tabel, które są przechowywane w oddzielnych lokalizacjach nazywanych dystrybucjami. Usługa Azure Synapse Analytics używa 60 dystrybucji. W systemie Platform Platform Analytics (PDW) liczba dystrybucji zależy od liczby węzłów obliczeniowych.
Każda dystrybucja zawiera wszystkie partycje tabeli. Jeśli na przykład istnieje 60 dystrybucji i cztery partycje tabeli oraz jedna pusta partycja, będzie 300 partycji (5 x 60 = 300). Jeśli tabela jest klastrowanym indeksem magazynu kolumn, będzie jeden indeks magazynu kolumn na partycję, co oznacza, że będziesz mieć 300 indeksów magazynu kolumn.
Zalecamy użycie mniejszej liczby partycji tabeli, aby upewnić się, że każdy indeks magazynu kolumn ma wystarczającą liczbę wierszy, aby skorzystać z zalet indeksów magazynu kolumn. Aby uzyskać więcej informacji w usłudze Azure Synapse Analytics, zobacz tabele partycjonowania w dedykowanej puli SQL i indeksy w dedykowanych tabelach puli SQL w usłudze Azure Synapse Analytics.
Tabela magazynu wierszy (sterta lub indeks klastrowany)
Tabela magazynu wierszy to tabela przechowywana w kolejności wiersz po wierszu. Jest to sterta lub indeks klastrowany. Usługa Azure Synapse Analytics tworzy wszystkie tabele magazynu wierszy z kompresją strony; to zachowanie nie jest konfigurowalne przez użytkownika.
Tabela magazynu kolumn (indeks magazynu kolumn)
Tabela magazynu kolumn to tabela przechowywana w kolejności kolumn po kolumnie. Indeks magazynu kolumn to technologia, która zarządza danymi przechowywanymi w tabeli magazynu kolumn. Indeks klastrowanego magazynu kolumn nie wpływa na sposób dystrybucji danych. Zamiast tego wpływa na sposób przechowywania danych w poszczególnych dystrybucjach.
Aby zmienić tabelę magazynu wierszy na tabelę magazynu kolumn, usuń wszystkie istniejące indeksy w tabeli i utwórz indeks klastrowanego magazynu kolumn. Aby zapoznać się z przykładem, zobacz CREATE COLUMNSTORE INDEX (Transact-SQL).
Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Co nowego w indeksach magazynu kolumn
- tabele indeksowania w usłudze Azure Synapse Analytics
- indeksy magazynu kolumn: omówienie
Ograniczenia
- Nie można zdefiniować ograniczenia
DEFAULT
w kolumnie dystrybucji. - Nazwa tabeli nie może być większa niż 128 znaków.
- Nazwa kolumny nie może być większa niż 128 znaków.
Partycji
Kolumna partycji nie może mieć sortowania tylko w formacie Unicode. Na przykład następująca instrukcja kończy się niepowodzeniem:
CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))
Jeśli boundary_value jest wartością literału, która musi zostać niejawnie przekonwertowana na typ danych w partition_column_name, występuje rozbieżność. Wartość literału jest wyświetlana za pośrednictwem widoków systemu usługi Azure Synapse Analytics, ale przekonwertowana wartość jest używana na potrzeby operacji Transact-SQL.
Tabele tymczasowe
Globalne tabele tymczasowe rozpoczynające się od ##
nie są obsługiwane.
Lokalne tabele tymczasowe mają następujące ograniczenia i ograniczenia:
- Są one widoczne tylko dla bieżącej sesji. Usługa Azure Synapse Analytics automatycznie odrzuca je na końcu sesji. Aby je jawnie usunąć, użyj instrukcji
DROP TABLE
. - Nie można ich zmienić.
- Nie mogą mieć partycji ani widoków.
- Nie można zmienić ich uprawnień. instrukcje
GRANT
,DENY
iREVOKE
nie mogą być używane z lokalnymi tabelami tymczasowymi. - Polecenia konsoli bazy danych są blokowane dla tabel tymczasowych.
- Jeśli w partii jest używana więcej niż jedna lokalna tabela tymczasowa, każda z nich musi mieć unikatową nazwę. Jeśli wiele sesji uruchamia tę samą partię i tworzy tę samą lokalną tabelę tymczasową, usługa Azure Synapse Analytics wewnętrznie dołącza sufiks liczbowy do lokalnej tymczasowej nazwy tabeli w celu zachowania unikatowej nazwy dla każdej lokalnej tabeli tymczasowej.
Zachowanie blokujące
Przyjmuje wyłączną blokadę na stole. Pobiera udostępnioną blokadę obiektów DATABASE, SCHEMA i SCHEMARESOLUTION.
Przykłady dla kolumn
A. Określanie sortowania kolumn
W poniższym przykładzie tabela MyTable
jest tworzona z dwoma różnymi sortowaniami kolumn. Domyślnie kolumna mycolumn1
ma domyślne sortowanie Latin1_General_100_CI_AS_KS_WS
. Kolumna mycolumn2
ma Frisian_100_CS_AS
sortowania .
CREATE TABLE MyTable
(
mycolumnnn1 nvarchar,
mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
B. Określanie ograniczenia DOMYŚLNEgo dla kolumny
W poniższym przykładzie przedstawiono składnię określającą wartość domyślną dla kolumny. Kolumna colA
ma domyślne ograniczenie o nazwie constraint_colA
i wartość domyślną 0
.
CREATE TABLE MyTable
(
colA int CONSTRAINT constraint_colA DEFAULT 0,
colB nvarchar COLLATE Frisian_100_CS_AS
)
WITH ( CLUSTERED COLUMNSTORE INDEX )
;
Przykłady tabel tymczasowych
C. Tworzenie lokalnej tabeli tymczasowej
Poniższy przykład tworzy lokalną tabelę tymczasową o nazwie #myTable. Tabela jest określana za pomocą trzyczęściowej nazwy, która rozpoczyna się od znaku #.
CREATE TABLE AdventureWorks.dbo.#myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id),
CLUSTERED COLUMNSTORE INDEX
)
;
Przykłady struktury tabeli
D. Tworzenie tabeli z klastrowanym indeksem magazynu kolumn
Poniższy przykład tworzy tabelę rozproszoną z klastrowanym indeksem magazynu kolumn. Każda dystrybucja jest przechowywana jako magazyn kolumn.
Indeks klastrowanego magazynu kolumn nie ma wpływu na sposób dystrybucji danych; dane są zawsze dystrybuowane według wierszy. Indeks klastrowanego magazynu kolumn wpływa na sposób przechowywania danych w poszczególnych dystrybucjach.
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. Tworzenie uporządkowanego klastrowanego indeksu magazynu kolumn
W poniższym przykładzie pokazano, jak utworzyć uporządkowany indeks klastrowanego magazynu kolumn. Indeks jest uporządkowany w SHIPDATE
.
CREATE TABLE Lineitem
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))
AS
SELECT * FROM ext_Lineitem
Przykłady dystrybucji tabel
F. Tworzenie tabeli ROUND_ROBIN
Poniższy przykład tworzy tabelę ROUND_ROBIN z trzema kolumnami i bez partycji. Dane są rozłożone na wszystkie dystrybucje. Tabela jest tworzona przy użyciu klastrowanego indeksu MAGAZYNU KOLUMN, który zapewnia lepszą wydajność i kompresję danych niż indeks klastrowany stert lub magazyn wierszy.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH ( CLUSTERED COLUMNSTORE INDEX );
G. Tworzenie tabeli rozproszonej przy użyciu skrótów w wielu kolumnach (wersja zapoznawcza)
Poniższy przykład tworzy tę samą tabelę co w poprzednim przykładzie. Jednak w przypadku tej tabeli wiersze są dystrybuowane (w kolumnach id
i zipCode
). Tabela jest tworzona za pomocą klastrowanego indeksu magazynu kolumn, który zapewnia lepszą wydajność i kompresję danych niż indeks klastrowany stert lub magazyn wierszy.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id, zipCode),
CLUSTERED COLUMNSTORE INDEX
);
H. Tworzenie replikowanej tabeli
W poniższym przykładzie zostanie utworzona zreplikowana tabela podobna do poprzednich przykładów. Zreplikowane tabele są kopiowane w całości do każdego węzła obliczeniowego. Dzięki tej kopii w każdym węźle obliczeniowym przenoszenie danych jest zmniejszane w przypadku zapytań. Ten przykład jest tworzony za pomocą indeksu KLASTROWANEGO, który zapewnia lepszą kompresję danych niż sterta. Sterta może nie zawierać wystarczającej liczby wierszy, aby osiągnąć dobrą kompresję INDEKSU MAGAZYNU KOLUMN KLASTROWANYCH.
CREATE TABLE myTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = REPLICATE,
CLUSTERED INDEX (lastName)
);
Przykłady partycji tabeli
Ja. Tworzenie tabeli partycjonowanej
Poniższy przykład tworzy tę samą tabelę, jak pokazano w przykładzie A, z dodatkiem RANGE LEFT
partycjonowania w kolumnie id
. Określa cztery wartości granic partycji, co powoduje pięć partycji.
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
);
W tym przykładzie dane są sortowane w następujące partycje:
- Partycja 1: <kolumny = 10
- Partycja 2: 10 < kolumny <= 20
- Partycja 3: 20 < kolumny <= 30
- Partycja 4: 30 < kolumny <= 40
- Partycja 5: 40 < kolumny
Jeśli ta sama tabela została podzielona na partycje RANGE RIGHT zamiast RANGE LEFT (ustawienie domyślne), dane są sortowane w następujące partycje:
- Partycja 1: kolumna < 10
- Partycja 2: 10 <= kolumna < 20
- Partycja 3: 20 <= kolumna < 30
- Partycja 4: 30 <= kolumna < 40
- Partycja 5: 40 <= kolumna
J. Tworzenie tabeli partycjonowanej z jedną partycją
Poniższy przykład tworzy tabelę partycjonowaną z jedną partycją. Nie określa żadnej wartości granicy, co powoduje wyświetlenie jednej partycji.
CREATE TABLE myTable (
id int NOT NULL,
lastName varchar(20),
zipCode int)
WITH
(
PARTITION ( id RANGE LEFT FOR VALUES ( )),
CLUSTERED COLUMNSTORE INDEX
)
;
K. Tworzenie tabeli z partycjonowaniem dat
Poniższy przykład tworzy nową tabelę o nazwie myTable
z partycjonowaniem w kolumnie date
. Przy użyciu RANGE RIGHT
i dat dla wartości granic umieszcza miesiąc danych w każdej partycji.
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'
))
);
Powiązana zawartość
Dotyczy:Warehouse w usłudze Microsoft Fabric
CREATE TABLE (Magazyn danych sieci szkieletowej)
Tworzy nową tabelę w magazynie w usłudze Microsoft Fabric.
Aby uzyskać więcej informacji, zobacz Create tables on Warehouse in Microsoft Fabric (Tworzenie tabel w magazynie w usłudze Microsoft Fabric).
Nuta
Aby uzyskać informacje o bazie danych SQL w usłudze Microsoft Fabric, zobacz CREATE TABLE. W przypadku platform SQL Server i Azure SQL odwiedź CREATE TABLE i wybierz odpowiednią wersję produktu z listy rozwijanej wersja. Aby uzyskać informacje na temat usługi Azure Synapse Analytics and Analytics Platform System (PDW), odwiedź stronę CREATE TABLE (Azure Synapse Analytics).
Transact-SQL konwencje składni
Składnia
-- 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
Argumenty
database_name
Nazwa bazy danych, która będzie zawierać nową tabelę. Wartość domyślna to bieżąca baza danych.
schema_name
Schemat tabeli. Określanie schematu jest opcjonalne. Jeśli pole jest puste, zostanie użyty domyślny schemat.
table_name
Nazwa nowej tabeli.
column_name
Nazwa kolumny tabeli.
Opcje kolumn
NULL
| NOT NULL
Określa, czy wartości NULL
są dozwolone w kolumnie. Wartość domyślna to NULL
.
COLLATE
Windows_collation_name
Określa sortowanie wyrażenia.
Aby uzyskać więcej informacji na temat obsługiwanych sortowania, zobacz COLLATE.
Typ danych
Usługa Microsoft Fabric obsługuje najczęściej używane typy danych. Aby uzyskać więcej informacji, zobacz Typy danych w usłudze Microsoft Fabric.
Nuta
Podobnie jak w przypadku programu SQL Server, istnieje limit 8060 bajtów na wiersz. Może to stać się problemem blokującym w przypadku tabel z wieloma kolumnami lub kolumnami z dużymi typami danych, takimi jak varchar(8000)
lub varbinary(8000)
. Wstawia lub aktualizacje, które naruszają limit 8060 bajtów, powodują kody błędów 511 lub 611. Aby uzyskać więcej informacji, zobacz Pages and Extents Architecture Guide.
Aby uzyskać tabelę konwersji typów danych, zobacz sekcję Niejawne konwersje CAST i CONVERT (Transact-SQL). Aby uzyskać więcej informacji, zobacz Typy i funkcje danych daty i godziny (Transact-SQL).
Poniższa lista obsługiwanych typów danych zawiera ich szczegóły i bajty magazynu.
datetime2
( n )
Przechowuje datę i godzinę dnia z 19 do 26 znaków zgodnie z kalendarzem gregoriańskim. Data może zawierać rok, miesiąc i dzień. Czas zawiera godzinę, minuty, sekundy. Jako opcję można przechowywać i wyświetlać zero do sześciu cyfr dla sekund ułamkowych na podstawie parametru n. Rozmiar magazynu wynosi 8 bajtów.
n musi być wartością z 0
do 6
.
Nuta
Nie ma domyślnej precyzji, takiej jak inne platformy SQL. Należy podać wartość dokładności z 0
do 6
.
n wartości | Precyzja | Skala |
---|---|---|
0 |
19 | 0 |
1 |
21 | 1 |
2 |
22 | 2 |
3 |
23 | 3 |
4 |
24 | 4 |
5 |
25 | 5 |
6 |
26 | 6 |
date
Przechowuje datę, używając maksymalnie 10 znaków dla roku, miesiąca i dnia zgodnie z kalendarzem gregoriańskim. Rozmiar magazynu to 3 bajty. Data jest przechowywana jako liczba całkowita .
time
( n )
n musi być wartością z 0
do 6
.
float
[ ( n ) ]
Przybliżony typ danych liczbowych do użycia z danymi liczbowymi zmiennoprzecinkowych. Dane zmiennoprzecinkowe są przybliżone, co oznacza, że nie wszystkie wartości w zakresie typów danych mogą być reprezentowane dokładnie.
n określa liczbę bitów używanych do przechowywania mantissa float w notacji naukowej.
n określa dokładność i rozmiar magazynu. Jeśli określono n, musi to być wartość między 1
a 53
. Wartość domyślna n to 53
.
Nuta
Nie ma domyślnej precyzji, takiej jak inne platformy SQL. Należy podać wartość dokładności z 0
do 6
.
n wartości | Precyzja | Rozmiar magazynu |
---|---|---|
1-24 | 7 cyfr | 4 bajty |
25-53 | 15 cyfr | 8 bajtów |
Usługa Azure Synapse Analytics traktuje n jako jedną z dwóch możliwych wartości. Jeśli 1
<= n<= 24
, n jest traktowana jako 24
. Jeśli 25
<= n<= 53
, n jest traktowana jako 53
.
Typ danych zmiennoprzecinkowych usługi Azure Synapse Analytics jest zgodny ze standardem ISO dla wszystkich wartości n od 1
do 53
. Synonimem podwójnej dokładności jest float(53).
real
[ ( n ) ]
Definicja wartości rzeczywistej jest taka sama jak zmiennoprzecinkowa. Synonim ISO dla rzeczywistej jest float(24).
decimal
[ ( precyzja [ , skalowanie ] ] | numeric
[ ( precyzja [ , skalowanie ] ]
Przechowuje stałe precyzje i liczby skalowania.
precyzji
Maksymalna całkowita liczba cyfr dziesiętnych, które można przechowywać po obu stronach przecinka dziesiętnego. Precyzja musi być wartością z 1
przez maksymalną precyzję 38
. Domyślna precyzja to 18
.
skalowanie
Maksymalna liczba cyfr dziesiętnych, które mogą być przechowywane po prawej stronie przecinka dziesiętnego.
Skalowanie musi być wartością z 0
przez precyzji. Można określić skalowania tylko wtedy, gdy określono precyzji. Domyślna skala jest 0
, a więc 0
<= skalowanie<= precyzja. Maksymalne rozmiary magazynu różnią się w zależności od dokładności.
Precyzja | Bajty magazynu |
---|---|
1-9 | 5 |
10-19 | 9 |
20-28 | 13 |
29-38 | 17 |
bigint
| int
| smallint
Dokładne typy danych liczb, które używają danych całkowitych. Magazyn jest pokazany w poniższej tabeli.
Typ danych | Bajty magazynu |
---|---|
bigint |
8 |
int |
4 |
smallint |
2 |
bit
Typ danych całkowitych, który może przyjmować wartość 1
, 0
lub null. Usługa Azure Synapse Analytics optymalizuje magazyn kolumn bitowych. Jeśli w tabeli znajduje się co najmniej 8 kolumn bitowych, kolumny są przechowywane jako 1 bajt. Jeśli istnieją kolumny z zakresu od 9 do 16 bitów, kolumny są przechowywane jako 2 bajty itd.
varchar
[ ( n | MAX
) ] Zmienna długość, dane znaków Unicode o długości n bajtów.
n musi być wartością z 1
do 8000
. Rozmiar magazynu to rzeczywista długość danych wprowadzonych + 2 bajty. Wartość domyślna n to 1
. Kolumna varchar(MAX)
może przechowywać do 1 MB tekstu w magazynie.
Nuta
varchar(MAX)
jest dostępna w wersji zapoznawczej w magazynie. Aby uzyskać więcej informacji, zobacz Typy danych w usłudze Microsoft Fabric.
char
[ ( n ) ]
Dane znaków Unicode o stałej długości z długością n bajtów.
n musi być wartością z 1
do 8000
. Rozmiar magazynu to n bajtów. Wartość domyślna n to 1
.
varbinary
[ ( n | MAX
) ] Dane binarne o zmiennej długości.
n może być wartością z 1
do 8000
. Rozmiar magazynu to rzeczywista długość danych wprowadzonych + 2 bajty. Wartość domyślna n to 7.
Kolumna varbinary(MAX)
może przechowywać do 1 MB danych w magazynie.
Nuta
varbinary(MAX)
jest dostępna w wersji zapoznawczej w magazynie. Aby uzyskać więcej informacji, zobacz Typy danych w usłudze Microsoft Fabric.
uniqueidentifier
To 16-bajtowy identyfikator GUID.
Uprawnienia
Uprawnienia w usłudze Microsoft Fabric różnią się od uprawnień usługi Azure Synapse Analytics.
Użytkownik musi być członkiem ról Administrator, Członek lub Współautor w obszarze roboczym Sieć szkieletowa.
Ograniczenia
- Nazwy tabel nie mogą być większe niż 128 znaków.
- Nazwy tabel w magazynie w usłudze Microsoft Fabric nie mogą zawierać znaków
/
lub\
ani kończyć się.
. - Nazwy kolumn nie mogą być większe niż 128 znaków.
- Tabele mają maksymalnie 1024 kolumny na tabelę.
- Domyślne sortowanie obsługiwane w magazynie to
Latin1_General_100_BIN2_UTF8
. Można również tworzyć magazyny z sortowaniem bez uwzględniania wielkości liter — Latin1_General_100_CI_AS_KS_WS_SC_UTF8.
Uwagi
W magazynie istnieją ograniczone funkcje Transact-SQL. Aby uzyskać więcej informacji, zobacz T-SQL Surface Area in Microsoft Fabric.
Zachowanie blokujące
Pobiera blokadę Schema-Modification w tabeli, udostępnioną blokadę bazy danych i blokadę Schema-Stability schematu.