Udostępnij za pośrednictwem


CREATE TABLE

Dotyczy:Azure Synapse Analytics AnalyticsPlatform System (PDW)

Tworzy nową tabelę w systemie Azure Synapse Analytics lub Analytics Platform System (PDW).

Aby zrozumieć tabele i jak ich używać, zobacz Tabele w usłudze Azure Synapse Analytics.

Dyskusje na temat Azure Synapse Analytics w tym artykule dotyczą zarówno Azure Synapse Analytics, jak i Analytics Platform System (PDW), chyba że określono inaczej.

Uwaga

W przypadku platform SQL Server i Azure SQL odwiedź stronę CREATE TABLE i wybierz odpowiednią wersję produktu. Aby uzyskać informacje na temat magazynu w usłudze Microsoft Fabric, odwiedź stronę CREATE TABLE (Fabric).

Uwaga

Bezserwerowa pula SQL w usłudze Azure Synapse Analytics obsługuje tylko tabele zewnętrzne i tymczasowe.

Konwencje składni języka Transact-SQL

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

Nazwa_bazy_danych

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 jest ona pusta, zostanie użyty domyślny schemat.

Nazwa_tabeli

Nazwa nowej tabeli. Aby utworzyć lokalną tabelę tymczasową, przed nazwą tabeli za pomocą polecenia #. 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 SQL Server. Aby uzyskać listę sortowania systemu Windows obsługiwanych przez SQL Server, zobacz Nazwa sortowania systemu Windows (Transact-SQL)/).

NULL | NOT NULL
Określa, czy NULL wartości 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 Indeksowanie tabel 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 domyślne 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 w uwagach ogólnych.

LOCATION = USER_DB Ta opcja jest przestarzała. Jest on akceptowany składniowo, ale nie jest już wymagany i nie ma już wpływu na zachowanie.

Opcje dystrybucji tabel

Aby dowiedzieć się, jak wybrać najlepszą metodę dystrybucji i używać 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 umieszcza wartość skrótu tej samej wartości w 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 bardziej równomierny rozkład danych tabeli bazowej, zmniejszając niesymetryczność danych w czasie i zwiększając wydajność zapytań.

Uwaga

  • Aby włączyć funkcję dystrybucji wielokolumnachowej (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 (ALTER DATABASE SCOPED CONFIGURATION). Na przykład: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
  • Aby wyłączyć funkcję dystrybucji wielokolumnachowej (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ą następujący 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 CTAS, a źródło danych musi być tabelami SQL usługi Synapse.
  • Używanie programu SSMS do generowania skryptu do tworzenia tabel MCD jest obecnie obsługiwane poza wersją 19 programu SSMS.

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 SQL Server obejmującej węzeł obliczeniowy. To zachowanie jest domyślne dla systemu platformy analizy (PDW).

Opcje partycji tabeli

Aby uzyskać wskazówki dotyczące używania partycji tabeli, 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 podzbioró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 tabeli określają sposób grupowania i przechowywania wierszy w każdej dystrybucji.

Argument Wyjaśnienie
partition_column_name Określa kolumnę, która Azure Synapse Analytics będzie używana do partycjonowania wierszy. Ta kolumna może być dowolnym typem danych. Azure Synapse Analytics sortuje wartości kolumn partycji w kolejności rosnącej. Kolejność o niskim poziomie jest 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 klauzulęPARTITION, ale nie określisz wartości granic, Azure Synapse Analytics tworzy tabelę partycjonowaną z jedną partycją. Jeśli ma to zastosowanie, możesz podzielić tabelę na dwie partycje w późniejszym czasie.



Jeśli określisz jedną wartość granic, wynikowa tabela ma dwie partycje; jeden dla wartości niższych niż wartość granicy i jeden dla wartości wyższych niż wartość granic. Jeśli przeniesiesz partycję do tabeli bez partycji, tabela bez partycji otrzyma dane, ale nie będzie miała granic partycji w metadanych.

Zobacz Tworzenie tabeli partycjonowanej w sekcji Przykłady.

Opcja indeksu uporządkowanego klastrowanego magazynu kolumn

Indeks magazynu kolumn klastrowanych (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, a wydajność zapytań można poprawić. Aby uzyskać szczegółowe informacje, zobacz Dostrajanie wydajności za pomocą uporządkowanego klastrowanego indeksu magazynu kolumn .

Uporządkowany zestaw CCI można utworzyć na kolumnach dowolnego typu danych obsługiwanego w usłudze Azure Synapse Analytics z wyjątkiem kolumn ciągów.

Użytkownicy mogą wykonywać zapytania dotyczące column_store_order_ordinal kolumn w sys.index_columns dla kolumn, na których jest uporządkowana tabela, oraz sekwencja w kolejności.

Sprawdź dostrajanie wydajności za pomocą uporządkowanego indeksu magazynu kolumn klastrowanych , aby uzyskać szczegółowe informacje.

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.

Uwaga

Podobnie jak SQL Server, istnieje limit 8060 bajtów na wiersz. Może to stać się problemem z blokowaniem tabel z wieloma kolumnami lub kolumnami z dużymi typami danych, takimi jak nvarchar(max) lub varbinary(max). Wstawia lub aktualizacje, które naruszają limit bajtów 8060, spowoduje wyświetlenie kodów błędów 511 lub 611. Aby uzyskać więcej informacji, zobacz Podręcznik architektury stron i zakresów.

Aby uzyskać tabelę konwersji typów danych, zobacz sekcję Niejawne konwersje w temacie CAST and CONVERT (Transact-SQL). Aby uzyskać więcej informacji, zobacz Typy danych i funkcje 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ść Dokładność Skalowanie
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 od 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 opcja 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 notacji naukowej. n określa precyzję i rozmiar magazynu. Jeśli parametr n jest określony, musi być wartością między 1 i 53. Wartość domyślna n to 53.

n wartość Dokładność Rozmiar magazynu
1–24 7 cyfr 4 bajty
25-53 15 cyfr 8 bajtów

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 Azure Synapse Analytics float jest zgodny ze standardem ISO dla wszystkich wartości n od 1 do 53. Synonimem podwójnej precyzji jest float(53).

real [ ( n ) ]
Definicja wartości rzeczywistej jest taka sama jak zmiennoprzecinkowa. Synonim ISO dla real to float(24).

decimal [ ( precyzja [ , skala ] ) | numeric [ ( precyzja [ , skala ] ) ]
Przechowuje stałą precyzję i liczby skalowania.

Precyzji
Maksymalna całkowita liczba cyfr dziesiętnych, które można przechowywać, zarówno w lewo, jak i po prawej stronie punktu dziesiętnego. Precyzja musi być wartością z 1 maksymalnej dokładności .38 Domyślna precyzja to 18.

Skali
Maksymalna liczba cyfr dziesiętnych, które można przechowywać po prawej stronie punktu dziesiętnego. Skala musi być wartością od 0dokładności. Można określić skalę tylko wtedy, gdy zostanie określona precyzja . Domyślna skala to 0 i tak 0<= skala< = precyzja. Maksymalny rozmiar magazynu zależy od dokładności.

Dokładność 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 liczbowych, 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". 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ą 9-16-bitowe kolumny, kolumny są przechowywane jako 2 bajty itd.

nvarchar[ ( n | max ) ] — max dotyczy tylko Azure Synapse Analytics.
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 to dwa razy więcej znaków wprowadzonych + 2 bajty. Wprowadzone dane mogą mieć długość zero znaków.

nchar [ ( n ) ]
Dane znaków Unicode o stałej długości z długością n znaków. n musi być wartością od 1 do .4000 Rozmiar magazynu to dwa razy n bajtów.

varchar[ ( n | max ) ] — max dotyczy tylko Azure Synapse Analytics.
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.

char [ ( n ) ]
Dane znaków o stałej długości, inne 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 ) ] — max dotyczy tylko Azure Synapse Analytics.
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.

binary [ ( n ) ]
Dane binarne o stałej długości z 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

Tworzenie tabeli wymaga uprawnień w stałej db_ddladmin roli bazy danych lub:

  • CREATE TABLE uprawnienie do bazy danych
  • ALTER SCHEMA uprawnienie do schematu, który będzie zawierać tabelę

Tworzenie tabeli partycjonowanej wymaga uprawnień w stałej db_ddladmin roli bazy danych lub

  • ALTER ANY DATASPACE Uprawnienia

Identyfikator logowania tworzący lokalną tabelę tymczasową otrzymuje CONTROLuprawnienia , INSERT, SELECTi UPDATE w tabeli.

Uwagi

Aby uzyskać minimalne i maksymalne limity, 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 osobnych lokalizacjach nazywanych dystrybucjami. Azure Synapse Analytics używa 60 dystrybucji. W systemie platformy analizy (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, zobacz Partycjonowanie tabel w dedykowanej puli SQL i Indeksy w dedykowanych tabelach puli SQL w usłudze Azure Synapse Analytics.

Tabela magazynu wierszy (stertę lub indeks klastrowany)

Tabela magazynu wierszy to tabela przechowywana w kolejności wiersz po wierszu. Jest to stertę lub indeks klastrowany. 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 według kolumn. 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 to 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).

Więcej informacji można znaleźć w następujących artykułach:

Ograniczenia i ograniczenia

  • Nie można zdefiniować ograniczenia DOMYŚLNEgo w kolumnie dystrybucji.
  • Nazwa tabeli nie może być większa niż 100 znaków.

Partycje

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 Azure Synapse Analytics, ale przekonwertowana wartość jest używana na potrzeby operacji języka Transact-SQL.

Tabele tymczasowe

Globalne tabele tymczasowe rozpoczynające się od ## nie są obsługiwane.

Lokalne tabele tymczasowe mają następujące ograniczenia:

  • Są one widoczne tylko dla bieżącej sesji. Azure Synapse Analytics automatycznie odrzuca je na końcu sesji. Aby usunąć je jawnie, użyj instrukcji DROP TABLE.
  • Nie można ich zmienić.
  • Nie mogą mieć partycji ani widoków.
  • Nie można zmienić ich uprawnień. GRANTNie można używać instrukcji , DENYi REVOKE 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ą, 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. Przyjmuje 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 , mycolumn1ma domyślne sortowanie Latin1_General_100_CI_AS_KS_WS. mycolumn2 Kolumna zawiera 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 pokazano 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 przy użyciu 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 tabel

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 na 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 we wszystkich dystrybucjach. 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 i zipCode ).id 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  
  (   
    DISTRIBUTION = HASH (id, zipCode), 
    CLUSTERED COLUMNSTORE INDEX  
  );  

H. Tworzenie tabeli replikowanej

W poniższym przykładzie zostanie utworzona zreplikowana tabela podobna do poprzednich przykładów. Replikowane 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 przy użyciu klastrowanego indeksu, który zapewnia lepszą kompresję danych niż stertę. Stertę może nie zawierać wystarczającej liczby wierszy, aby osiągnąć dobrą kompresję INDEKSU KLASTROWANEGO MAGAZYNU KOLUMN.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = REPLICATE,
    CLUSTERED INDEX (lastName)  
  );  

Przykłady partycji tabeli

I. Tworzenie tabeli partycjonowanej

Poniższy przykład tworzy tę samą tabelę, jak pokazano na przykładzie A, z dodatkiem partycjonowania RANGE LEFT 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 zostaną posortowane na następujące partycje:

  • Partycja 1: kolumna <= 10
  • Partycja 2: 10 < kolumn <= 20
  • Partycja 3: 20 < kolumn <= 30
  • Partycja 4: 30 < kolumn <= 40
  • Partycja 5: 40 < kolumn

Jeśli ta sama tabela została podzielona na partycje RANGE RIGHT zamiast RANGE LEFT (ustawienie domyślne), dane zostaną posortowane na 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 . Używając wartości RANGE RIGHT i dates dla wartości granic, umieszcza on 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'  
      ))
  );  

Następne kroki

Dotyczy:Magazyn w usłudze Microsoft Fabric

Tworzy nową tabelę w magazynie w usłudze Microsoft Fabric.

Aby uzyskać więcej informacji, zobacz Tworzenie tabel w magazynie w usłudze Microsoft Fabric.

Uwaga

Aby uzyskać informacje na temat systemu Azure Synapse Analytics and Analytics Platform System (PDW), odwiedź stronę CREATE TABLE (Azure Synapse Analytics). W przypadku platform SQL Server i Azure SQL odwiedź stronę CREATE TABLE i wybierz odpowiednią wersję produktu z listy rozwijanej wersji.

Konwencje składni języka Transact-SQL

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
    [ <column_constraint> ]

<data type> ::=
      datetime2 [ ( n ) ]  
    | date  
    | time [ ( n ) ]  
    | float [ ( n ) ]  
    | real [ ( n ) ]  
    | decimal [ ( precision [ , scale ] ) ]   
    | numeric [ ( precision [ , scale ] ) ]   
    | bigint  
    | int   
    | smallint  
    | bit  
    | varchar [ ( n ) ] 
    | char [ ( n ) ]  
    | varbinary [ ( n ) ] 
    | binary [ ( n ) ]  
    | uniqueidentifier  

Argumenty

Nazwa_bazy_danych

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 jest ona pusta, zostanie użyty domyślny schemat.

Nazwa_tabeli

Nazwa nowej tabeli. Aby utworzyć lokalną tabelę tymczasową, przed nazwą tabeli za pomocą polecenia #.

Column_name

Nazwa kolumny tabeli.

Opcje kolumn

NULL | NOT NULL
Określa, czy NULL wartości 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.

Typ danych

Usługa Microsoft Fabric obsługuje najczęściej używane typy danych.

Uwaga

Podobnie jak SQL Server, istnieje limit 8060 bajtów na wiersz. Może to stać się problemem z blokowaniem 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 bajtów 8060, spowoduje wyświetlenie kodów błędów 511 lub 611. Aby uzyskać więcej informacji, zobacz Podręcznik architektury stron i zakresów.

Aby uzyskać tabelę konwersji typów danych, zobacz sekcję Niejawne konwersje w temacie CAST and CONVERT (Transact-SQL). Aby uzyskać więcej informacji, zobacz Typy danych i funkcje 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 od 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 opcja można przechowywać i wyświetlać zero do sześciu cyfr dla sekund ułamkowych na podstawie n parametru. Rozmiar magazynu wynosi 8 bajtów. n musi być wartością z 0 do 6.

Uwaga

Nie ma domyślnej precyzji, takiej jak inne platformy SQL. Musisz podać wartość dokładności od 0 do 6.

n wartość Dokładność Skalowanie
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 notacji naukowej. n określa precyzję i rozmiar magazynu. Jeśli parametr n jest określony, musi być wartością między 1 i 53. Wartość domyślna n to 53.

Uwaga

Nie ma domyślnej precyzji, takiej jak inne platformy SQL. Musisz podać wartość dokładności od 0 do 6.

n wartość Dokładność Rozmiar magazynu
1–24 7 cyfr 4 bajty
25-53 15 cyfr 8 bajtów

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 Azure Synapse Analytics float jest zgodny ze standardem ISO dla wszystkich wartości n od 1 do 53. Synonimem podwójnej precyzji jest float(53).

real [ ( n ) ]
Definicja wartości rzeczywistej jest taka sama jak zmiennoprzecinkowa. Synonim ISO dla real to float(24).

decimal [ ( precyzja [ , skala ] ) ] | numeric [ ( precyzja [ , skala ] ) ]
Przechowuje stałą precyzję i liczby skalowania.

Precyzji
Maksymalna całkowita liczba cyfr dziesiętnych, które mogą być przechowywane, zarówno po lewej, jak i po prawej stronie separatora dziesiętnego. Precyzja musi być wartością z zakresu od 1 maksymalnej precyzji .38 Domyślna precyzja to 18.

Skali
Maksymalna liczba cyfr dziesiętnych, które mogą być przechowywane po prawej stronie separatora dziesiętnego. Skala musi być wartością z 0dokładności. Można określić skalę tylko wtedy, gdy zostanie określona precyzja . Domyślna skala to 0 i tak 0<= skala< = precyzja. Maksymalne rozmiary magazynu różnią się w zależności od dokładności.

Dokładność Bajty magazynu
1-9 5
10-19 9
20-28 13
29-38 17

bigint | int | smallint
Dokładna liczba typów danych korzystających z danych całkowitych. Magazyn jest przedstawiony 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 wartość NULL. Azure Synapse Analytics optymalizuje przechowywanie kolumn bitowych. Jeśli w tabeli znajduje się co najmniej 8 kolumn bitowych, kolumny są przechowywane jako 1 bajt. Jeśli istnieją 9–16-bitowe kolumny, kolumny są przechowywane jako 2 bajty itd.

varchar [ ( n ) ] 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 to1.

char [ ( n ) ]
Dane znaków Unicode o stałej długości i 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 to1.

varbinary [ ( n ) ] 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.

uniqueidentifier
Jest 16-bajtowym identyfikatorem GUID.

Uprawnienia

Uprawnienia w usłudze Microsoft Fabric różnią się od uprawnień Azure Synapse Analytics.

Limity i ograniczenia

  • Nazwa tabeli nie może być większa niż 100 znaków.
  • Nazwy tabel w magazynie w usłudze Microsoft Fabric nie mogą zawierać znaków / ani \.
  • Domyślne i tylko sortowanie obsługiwane w magazynie jest Latin1_General_100_BIN2_UTF8.

Uwagi

W magazynie jest ograniczona funkcjonalność TSQL. Aby uzyskać więcej informacji, zobacz TSQL Surface Area in Microsoft Fabric (Obszar powierzchni TSQL w usłudze Microsoft Fabric).

Zachowanie blokujące

Pobiera blokadę Schema-Modification w tabeli, udostępnioną blokadę bazy danych i blokadę Schema-Stability w schemacie.

Następne kroki