Udostępnij za pośrednictwem


CREATE TABLE

Dotyczy:azure Synapse AnalyticsAnalytics 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.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_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, 0lub 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, SELECTi 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:

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, DENYi REVOKE 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_ASsortowania .

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

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, 0lub 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

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.