Aracılığıyla paylaş


CREATE TABLE

Şunlar için geçerlidir: Azure Synapse AnalyticsAnalytics Platform Sistemi (PDW)

CREATE TABLE (Azure Synapse Analytics)

Azure Synapse Analytics veya Analytics Platform Sistemi'nde (PDW) yeni bir tablo oluşturur.

Tabloları ve bunların nasıl kullanılacağını anlamak için bkz. Azure Synapse Analytics'teki tablolar.

Bu makaledeki Azure Synapse Analytics hakkındaki tartışmalar, aksi belirtilmedikçe hem Azure Synapse Analytics hem de Analiz Platformu Sistemi (PDW) için geçerlidir.

Note

SQL Server ve Azure SQL platformları için CREATE TABLE adresini ziyaret edin ve istediğiniz ürün sürümünü seçin. Microsoft Fabric'te SQL veritabanı için bkz. CREATE TABLE. Microsoft Fabric'te Ambar başvurusu için CREATE TABLE (Fabric) adresini ziyaret edin.

Note

Azure Synapse Analytics'teki sunucusuz SQL havuzu yalnızca dış ve geçici tabloları destekler.

Transact-SQL söz dizimi kuralları

Syntax

-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( 
      { column_name <data_type>  [ <column_options> ] } [ ,...n ]
    )  
    [ WITH ( <table_option> [ ,...n ] ) ]  
[;]  

<column_options> ::=
    [ COLLATE Windows_collation_name ]
    [ NULL | NOT NULL ] -- default is NULL
    [ IDENTITY [ ( seed, increment ) ]
    [ <column_constraint> ]

<column_constraint>::=
    {
        DEFAULT constant_expression
        | PRIMARY KEY NONCLUSTERED NOT ENFORCED -- Applies to Azure Synapse Analytics only
        | UNIQUE NOT ENFORCED -- Applies to Azure Synapse Analytics only
    }

<table_option> ::=
    {
       CLUSTERED COLUMNSTORE INDEX -- default for Azure Synapse Analytics 
      | CLUSTERED COLUMNSTORE INDEX ORDER (column [,...n])  
      | HEAP --default for Parallel Data Warehouse
      | CLUSTERED INDEX ( { index_column_name [ ASC | DESC ] } [ ,...n ] ) -- default is ASC
    }  
    {
        DISTRIBUTION = HASH ( distribution_column_name )
      | DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) 
      | DISTRIBUTION = ROUND_ROBIN -- default for Azure Synapse Analytics
      | DISTRIBUTION = REPLICATE -- default for Parallel Data Warehouse
    }
    | PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] -- default is LEFT  
        FOR VALUES ( [ boundary_value [,...n] ] ) )

<data type> ::=
      datetimeoffset [ ( n ) ]  
    | datetime2 [ ( n ) ]  
    | datetime  
    | smalldatetime  
    | date  
    | time [ ( n ) ]  
    | float [ ( n ) ]  
    | real [ ( n ) ]  
    | decimal [ ( precision [ , scale ] ) ]   
    | numeric [ ( precision [ , scale ] ) ]   
    | money  
    | smallmoney  
    | bigint  
    | int   
    | smallint  
    | tinyint  
    | bit  
    | nvarchar [ ( n | max ) ]  -- max applies only to Azure Synapse Analytics 
    | nchar [ ( n ) ]  
    | varchar [ ( n | max )  ] -- max applies only to Azure Synapse Analytics 
    | char [ ( n ) ]  
    | varbinary [ ( n | max ) ] -- max applies only to Azure Synapse Analytics 
    | binary [ ( n ) ]  
    | uniqueidentifier  

Arguments

database_name

Yeni tabloyu içerecek veritabanının adı. Varsayılan değer geçerli veritabanıdır.

schema_name

Tablonun şeması. Şemanın belirtilmesi isteğe bağlıdır. Boşsa, varsayılan şema kullanılır.

table_name

Yeni tablonun adı. Yerel geçici bir tablo oluşturmak için, tablo adının önüne ile geçin #. Geçici tablolar hakkında açıklamalar ve yönergeler için bkz. Azure Synapse Analytics'te ayrılmış SQL havuzundaki geçici tablolar.

column_name

Tablo sütununun adı.

Sütun Seçenekleri

COLLATE Windows_collation_name

İfadenin harmanlamasını belirtir. Harmanlama, SQL Server tarafından desteklenen Windows harmanlamalarından biri olmalıdır. SQL Server tarafından desteklenen Windows harmanlamalarının listesi için bkz. Windows harmanlama adı (Transact-SQL)).

NULL | NOT NULL

Sütunda değerlere izin verilip verilmeyeceğini NULL belirtir. Varsayılan değer: NULL.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_expression

Varsayılan sütun değerini belirtir.

Argument Explanation
constraint_name Kısıtlama için isteğe bağlı ad. Kısıtlama adı veritabanında benzersizdir. Ad diğer veritabanlarında yeniden kullanılabilir.
constant_expression Sütun için varsayılan değer. İfade değişmez değer veya sabit olmalıdır. Örneğin, bu sabit ifadelere izin verilir: 'CA', 4. Bu sabit ifadelere izin verilmez: 2+3, CURRENT_TIMESTAMP.

Tablo yapısı seçenekleri

Tablo türünü seçme konusunda rehberlik için bkz. Azure Synapse Analytics'te tabloları dizine ekleme.

CLUSTERED COLUMNSTORE INDEX

Tabloyu kümelenmiş columnstore dizini olarak depolar. Kümelenmiş columnstore dizini tüm tablo verilerine uygulanır. Bu davranış, Azure Synapse Analytics için varsayılandır.

HEAP Tabloyu yığın olarak depolar. Bu davranış Analiz Platformu Sistemi (PDW) için varsayılandır.

CLUSTERED INDEX ( index_column_name [ ,... n ] )
Tabloyu bir veya daha fazla anahtar sütunu olan kümelenmiş dizin olarak depolar. Bu davranış verileri satıra göre depolar. dizindeki bir veya daha fazla anahtar sütunun adını belirtmek için index_column_name kullanın. Daha fazla bilgi için bkz. Rowstore Tabloları.

LOCATION = USER_DB Bu seçenek kullanım dışıdır. Geçerli bir söz dizimidir, ancak artık gerekli değildir ve artık davranışı etkilemez.

Tablo dağıtım seçenekleri

En iyi dağıtım yöntemini seçmeyi ve dağıtılmış tabloları kullanmayı anlamak için bkz. Azure Synapse Analytics'te ayrılmış SQL havuzu kullanarak dağıtılmış tablolar tasarlama.

İş yüklerinize göre kullanılacak en iyi dağıtım stratejisine ilişkin öneriler için bkz. Synapse SQL Dağıtım Danışmanı (Önizleme).

DISTRIBUTION = HASH ( distribution_column_name ) distribution_column_name depolanan değeri karma olarak ekleyerek her satırı tek bir dağıtıma atar. Algoritma belirlenimcidir, yani her zaman aynı değeri aynı dağılımla karma olarak kullanır. NULL içeren tüm satırlar aynı dağıtıma atandığından dağıtım sütunu NOT NULL olarak tanımlanmalıdır.

DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) Satırları en fazla sekiz sütunun karma değerlerine göre dağıtarak temel tablo verilerinin daha eşit bir şekilde dağıtılmasını sağlar, zaman içinde veri dengesizliklerini azaltır ve sorgu performansını geliştirir.

Note

  • Çok sütunlu dağıtım (MCD) özelliğini etkinleştirmek için bu komutla veritabanının uyumluluk düzeyini 50 olarak değiştirin. Veritabanı uyumluluk düzeyini ayarlama hakkında daha fazla bilgi için bkz. ALTER DATABASE SCOPED CONFIGURATION. Örneğin: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
  • Çok sütunlu dağıtım (MCD) özelliğini devre dışı bırakmak için bu komutu çalıştırarak veritabanının uyumluluk düzeyini AUTO olarak değiştirin. Örneğin: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO; Mevcut MCD tabloları kalır ancak okunamaz hale gelir. MCD tabloları üzerindeki sorgular şu hatayı döndürür: 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.
    • MCD tablolarına yeniden erişim kazanmak için özelliği yeniden etkinleştirin.
    • Bir MCD tablosuna veri yüklemek için (CTAS) deyimini kullanın CREATE TABLE AS SELECT ve veri kaynağının Synapse SQL tabloları olması gerekir.
  • MCD tabloları oluşturmak için betik oluşturma şu anda SQL Server Management Studio (SSMS) sürüm 19 ve sonraki sürümleri desteklenmektedir.

DISTRIBUTION = ROUND_ROBIN Satırları hepsini bir kez deneme biçiminde tüm dağıtımlar arasında eşit olarak dağıtır. Bu davranış, Azure Synapse Analytics için varsayılandır.

DISTRIBUTION = REPLICATE Her İşlem düğümünde tablonun bir kopyasını depolar. Azure Synapse Analytics için tablo, her İşlem düğümündeki bir dağıtım veritabanında depolanır. Analiz Platformu Sistemi (PDW) için tablo, İşlem düğümüne yayılan bir SQL Server dosya grubunda depolanır. Bu davranış Analiz Platformu Sistemi (PDW) için varsayılandır.

Tablo bölümü seçenekleri

Tablo bölümlerini kullanma yönergeleri için bkz. Ayrılmış SQL havuzunda tabloları bölümleme.

PARTITION ( partition_column_nameRANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,... n] ] ))
Bir veya daha fazla tablo bölümü oluşturur. Bu bölümler, tablonun yığın, kümelenmiş dizin veya kümelenmiş columnstore dizini olarak depolanmasından bağımsız olarak satırların alt kümelerine işlem uygulamanıza olanak sağlayan yatay tablo dilimleridir. Dağıtım sütunundan farklı olarak, tablo bölümleri her satırın depolandığı dağıtımı belirlemez. Bunun yerine, tablo bölümleri satırların her dağıtımda nasıl gruplandırılıp depolandığını belirler.

Argument Explanation
partition_column_name Azure Synapse Analytics'in satırları bölümleme için kullandığı sütunu belirtir. Bu sütun herhangi bir veri türü olabilir. Azure Synapse Analytics bölüm sütunu değerlerini artan düzende sıralar. Düşükten yükseke sıralama, belirtim içinde'den'e LEFTRIGHTRANGE gider.
RANGE LEFT Sınır değerinin soldaki bölüme ait olduğunu belirtir (düşük değerler). Varsayılan değer LEFT'tir.
RANGE RIGHT Sınır değerinin sağdaki bölüme ait olduğunu belirtir (daha yüksek değerler).
FOR VALUES ( boundary_value [,... n] ) Bölüm için sınır değerlerini belirtir. boundary_value sabit bir ifadedir. NULL olamaz. partition_column_name veri türüyle eşleşmeli veya örtük olarak dönüştürülebilir olmalıdır. Örtük dönüştürme sırasında kesilemiyor, böylece değerin boyutu ve ölçeği partition_column_name veri türüyle eşleşmiyor



Bir sınır değeri belirtirseniz, sonuçta elde edilen tabloda iki bölüm vardır; biri sınır değerinden daha düşük değerler için, diğeri de sınır değerinden yüksek değerler için. Bir bölümü bölümlenmemiş bir tabloya taşırsanız, bölümlenmemiş tablo verileri alır, ancak meta verilerinde bölüm sınırları olmaz.

Örnek için bkz. Bölümlenmiş tablo oluşturma.

Sıralı kümelenmiş columnstore dizin seçeneği

Kümelenmiş columnstore dizini (CCI), Azure Synapse Analytics'te tablo oluşturmak için varsayılan değerdir. CCI'deki veriler columnstore segmentlerine sıkıştırılmadan önce sıralanmaz. ORDER ile CCI oluşturulurken, veriler dizin segmentlerine eklenmeden önce sıralanır ve sorgu performansı geliştirilebilir. Azure Synapse Analytics'teki sıralı kümelenmiş columnstore dizinleri hakkında daha fazla bilgi için bkz. Sıralı Kümelenmiş Columnstore Dizini ile Performans Ayarlama.

Sıralı bir CCI, dize sütunları dışında Azure Synapse Analytics'te desteklenen tüm veri türlerinin sütunlarında oluşturulabilir.

Kullanıcılar, bir tablonun sıralı olduğu sütun veya sütunların sütununu ve sıralama sırasındaki sırayı sorgulayabilir column_store_order_ordinalsys.index_columns .

Ayrıntılar için sıralı kümelenmiş columnstore diziniyle Performans ayarlama'ya bakın.

Veri türü

Azure Synapse Analytics en yaygın kullanılan veri türlerini destekler. Veri türlerini ve bunların nasıl kullanılacağını daha iyi anlamak için bkz. Azure Synapse Analytics'te tablolar için veri türleri.

Note

SQL Server'a benzer şekilde, satır başına 8.060 bayt sınırı vardır. Bu, nvarchar(max) veya varbinary(max)gibi çok sayıda sütunu veya büyük veri türlerine sahip sütunları olan tablolar için engelleyici bir sorun haline gelebilir. 8.060 bayt sınırını ihlal eden eklemeler veya güncelleştirmeler 511 veya 611 hata kodlarıyla sonuçlanır. Daha fazla bilgi için bkz. Sayfalar ve Kapsamlar Mimarisi Kılavuzu.

Veri türü dönüştürmeleri tablosu için CAST ve CONVERT (Transact-SQL) öğesinin Örtük Dönüştürmeler bölümüne bakın. Daha fazla bilgi için bkz . Tarih ve saat veri türleri ve işlevleri (Transact-SQL).

Desteklenen veri türlerinin aşağıdaki listesi ayrıntılarını ve depolama baytlarını içerir:

datetimeoffset [ ( n ) ]
n için varsayılan değer 7'dir.

datetime2 [ ( n ) ]
datetimeile aynıdır, ancak kesirli saniye sayısını belirtebilirsiniz. n için varsayılan değer: 7.

n değeri Precision Scale
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6
7 27 7

datetime
Gregoryen takvime göre günün tarih ve saatini 19 ile 23 karakter arasında depolar. Tarih yıl, ay ve gün içerebilir. Saat, dakika, saniye içerir. Seçenek olarak, kesirli saniyeler için üç basamak görüntüleyebilirsiniz. Depolama boyutu 8 bayttır.

smalldatetime
Bir tarih ve saat depolar. Depolama boyutu 4 bayttır.

date
Gregoryen takvime göre yıl, ay ve gün için en fazla 10 karakter kullanarak tarihi depolar. Depolama boyutu 3 bayttır. Tarih tamsayı olarak depolanır.

time [ ( n ) ]
n için varsayılan değer: 7.

float [ ( n ) ]
Kayan nokta sayısal verileriyle kullanılmak üzere yaklaşık sayı veri türü. Kayan nokta verileri yaklaşıktır, yani veri türü aralığındaki tüm değerler tam olarak temsil edilemez. n , bilimsel gösteriminde mantisleri float depolamak için kullanılan bit sayısını belirtir. n duyarlık ve depolama boyutunu belirler. n belirtilirse, ve 1arasında 53 bir değer olmalıdır. Varsayılan n değeridir53.

n değeri Precision Depolama boyutu
1-24 7 hane 4 bayt
25-53 15 hane 8 bayt

Azure Synapse Analytics , n değerini iki olası değerden biri olarak değerlendirir. = 1<= ise<24, n olarak 24değerlendirilir. = 25<= ise<53, n olarak 53değerlendirilir.

Azure Synapse Analytics kayan veri türü, ile arasında 153 değerleri için ISO standardına uyar. Çift duyarlık için eş anlamlı float(53)'dir.

real [ ( n ) ]
gerçek tanımı float ile aynıdır. Gerçek için ISO eş anlamlısı float(24) şeklindedir.

decimal [ ( duyarlık [ , ölçek ] ) ] | numeric [ ( duyarlık [ , ölçek ] ) ]
Sabit duyarlık ve ölçek numaralarını depolar.

precision
Ondalık ayırıcının her iki tarafında depolanabilecek en fazla ondalık basamak sayısı. Duyarlık, en yüksek duyarlığından 1itibaren 38 bir değer olmalıdır. Varsayılan duyarlık şeklindedir 18.

scale
Ondalık ayırıcının sağındaki depolanabilecek en fazla ondalık basamak sayısı. Ölçek0 aracılığıyla bir değer olmalıdır. Ölçek belirtebilmeniz için duyarlık belirtilmesi gerekir. Varsayılan ölçek şu şekildedir 00<: = ölçek<= duyarlık. Maksimum depolama boyutları duyarlık temelinde farklılık gösterir.

Precision Depolama baytları
1-9 5
10-19 9
20-28 13
29-38 17

money | smallmoney
Para birimi değerlerini temsil eden veri türleri.

Veri Türü Depolama baytları
money 8
smallmoney 4

bigint | int | smallint | tinyint
Tamsayı verisi kullanan tam sayı veri türleri. Depolama aşağıdaki tabloda gösterilmiştir.

Veri Türü Depolama baytları
bigint 8
int 4
smallint 2
tinyint 1

bit
, veya '1NULL değerini 0alabilen bir tamsayı veri türü. Azure Synapse Analytics, bit sütunlarının depolama alanını iyileştirir. Tabloda 8 veya daha az bit sütun varsa, sütunlar 1 bayt olarak depolanır. 9-16 bit arası sütunlar varsa, sütunlar 2 bayt olarak depolanır ve bu şekilde devam eder.

nvarchar [ ( n | max ) ] Değişken uzunlukta Unicode karakter verileri. n , 1 ile 4000 arasında bir değer olabilir. max maksimum depolama boyutunun 2^31-1 bayt (2 GB) olduğunu gösterir. Bayt cinsinden depolama boyutu, girilen karakter sayısının iki katı + 2 bayttır. Girilen veriler sıfır karakter uzunluğunda olabilir. Uzunluk max yalnızca Azure Synapse Analytics için geçerlidir.

nchar [ ( n ) ]
N karakter uzunluğunda sabit uzunlukta Unicode karakter verileri. n, içinden 1gelen 4000 bir değer olmalıdır. Depolama boyutu iki kat n bayttır.

varchar [ ( n | max ) ] Değişken uzunluklu, Unicode olmayan ve n bayt uzunluğunda karakter verileri. n , ile arasında 18000bir değer olmalıdır. max maksimum depolama boyutunun 2^31-1 bayt (2 GB) olduğunu gösterir. Depolama boyutu, girilen verilerin gerçek uzunluğu + 2 bayttır. Uzunluk max yalnızca Azure Synapse Analytics için geçerlidir.

char [ ( n ) ]
N bayt uzunluğunda sabit uzunlukta, Unicode olmayan karakter verileri. n , ile arasında 18000bir değer olmalıdır. Depolama boyutu n bayttır. n için varsayılan değerdir1.

varbinary [ ( n | max ) ] Değişken uzunlukta ikili veriler. n , ile arasında 18000bir değer olabilir. max maksimum depolama boyutunun 2^31-1 bayt (2 GB) olduğunu gösterir. Depolama boyutu, girilen verilerin gerçek uzunluğu + 2 bayttır. n için varsayılan değer 7'dir. Uzunluk max yalnızca Azure Synapse Analytics için geçerlidir.

binary [ ( n ) ]
N bayt uzunluğunda sabit uzunlukta ikili veriler. n , ile arasında 18000bir değer olabilir. Depolama boyutu n bayttır. n için varsayılan değer: 7.

uniqueidentifier
16 baytlık BIR GUID'dir.

Permissions

Tablo oluşturmak için sabit veritabanı rolünde db_ddladmin izin gerekir veya:

  • CREATE TABLE veritabanında izin
  • ALTER SCHEMA tablonun şeması üzerinde izin

Bölümlenmiş tablo oluşturmak için sabit veritabanı rolünde db_ddladmin izin gerekir veya

  • ALTER ANY DATASPACE izin

Yerel geçici tablo oluşturan oturum açma bilgileri tabloda , CONTROL, INSERTve SELECT izinlerini alırUPDATE.

Remarks

Azure Synapse Analytics'te en düşük ve en yüksek sınırlar için bkz. Azure Synapse Analytics kapasite sınırları.

Tablo bölümlerinin sayısını belirleme

Kullanıcı tanımlı her tablo, dağıtım olarak adlandırılan ayrı konumlarda depolanan birden çok küçük tabloya ayrılır. Azure Synapse Analytics 60 dağıtım kullanır. Analiz Platformu Sistemi'nde (PDW), dağıtım sayısı İşlem düğümlerinin sayısına bağlıdır.

Her dağıtım tüm tablo bölümlerini içerir. Örneğin, 60 dağıtım ve dört tablo bölümü ve bir boş bölüm varsa, 300 bölüm (5 x 60= 300) olur. Tablo kümelenmiş bir columnstore diziniyse bölüm başına bir columnstore dizini olacaktır ve bu da 300 columnstore dizininiz olacağı anlamına gelir.

Her columnstore dizininin columnstore dizinlerinin avantajlarından yararlanmak için yeterli satıra sahip olduğundan emin olmak için daha az tablo bölümü kullanmanızı öneririz. Azure Synapse Analytics hakkında daha fazla bilgi için bkz. Ayrılmış SQL havuzundaki tabloları bölümleme ve Azure Synapse Analytics'teki ayrılmış SQL havuzu tablolarında dizinler.

Rowstore tablosu (yığın veya kümelenmiş dizin)

Satır deposu tablosu, satır satır sırada depolanan bir tablodur. Yığın veya kümelenmiş dizindir. Azure Synapse Analytics, sayfa sıkıştırma ile tüm satır deposu tablolarını oluşturur; bu davranış kullanıcı tarafından yapılandırılamaz.

Columnstore tablosu (columnstore dizini)

Columnstore tablosu, sütuna göre sıralanmış bir tablodur. columnstore dizini, bir columnstore tablosunda depolanan verileri yöneten teknolojidir. Kümelenmiş columnstore dizini, verilerin nasıl dağıtıldığını etkilemez. Bunun yerine, verilerin her dağıtımda nasıl depolandığını etkiler.

Satır deposu tablosunu columnstore tablosuna dönüştürmek için, tablodaki tüm mevcut dizinleri bırakın ve kümelenmiş bir columnstore dizini oluşturun. Örnek için bkz. CREATE COLUMNSTORE INDEX (Transact-SQL).

Daha fazla bilgi için şu makalelere bakın:

Limitations

  • Dağıtım sütununda kısıtlama tanımlayamazsınız DEFAULT .
  • Tablo adı 128 karakterden büyük olamaz.
  • Sütun adı 128 karakterden büyük olamaz.

Partitions

Bölüm sütununda yalnızca Unicode harmanlaması olamaz. Örneğin, aşağıdaki deyim başarısız olur:

CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))

boundary_value, partition_column_name'daki veri türüne örtük olarak dönüştürülmesi gereken bir değişmez değerse, bir tutarsızlık oluşur. Değişmez değer Azure Synapse Analytics sistem görünümleri aracılığıyla görüntülenir, ancak dönüştürülen değer Transact-SQL işlemler için kullanılır.

Geçici tablolar

ile ## başlayan genel geçici tablolar desteklenmez.

Yerel geçici tablolar aşağıdaki sınırlamalara ve kısıtlamalara sahiptir:

  • Bunlar yalnızca geçerli oturumda görünür. Azure Synapse Analytics bunları oturumun sonunda otomatik olarak bırakır. Bunları açıkça bırakmak için deyimini DROP TABLE kullanın.
  • Bunlar yeniden adlandırılamaz.
  • Bölümleri veya görünümleri olamaz.
  • İzinleri değiştirilemez. GRANT, DENYve REVOKE deyimleri yerel geçici tablolarla kullanılamaz.
  • Veritabanı konsol komutları geçici tablolar için engellenir.
  • Bir toplu işlem içinde birden fazla yerel geçici tablo kullanılıyorsa, her birinin benzersiz bir adı olmalıdır. Birden çok oturum aynı toplu işlemi çalıştırıyor ve aynı yerel geçici tabloyu oluşturuyorsa, Azure Synapse Analytics her yerel geçici tablo için benzersiz bir ad tutmak için yerel geçici tablo adına dahili olarak sayısal bir sonek ekler.

Kilitleme davranışı

Masada özel bir kilit alır. DATABASE, SCHEMA ve SCHEMARESOLUTION nesnelerinde paylaşılan bir kilit alır.

Sütunlar için örnekler

A. Sütun harmanlaması belirtme

Aşağıdaki örnekte tablo MyTable iki farklı sütun harmanlamasıyla oluşturulmuştur. Varsayılan olarak, sütun mycolumn1 varsayılan harmanlamaya Latin1_General_100_CI_AS_KS_WSsahiptir. sütununun mycolumn2 harmanlaması Frisian_100_CS_ASvardır.

CREATE TABLE MyTable   
  (  
    mycolumnnn1 nvarchar,  
    mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

B. Sütun için DEFAULT kısıtlaması belirtme

Aşağıdaki örnekte, bir sütun için varsayılan değer belirtme söz dizimi gösterilmektedir. Sütunun colA adlı constraint_colA varsayılan kısıtlaması ve varsayılan değeri vardır 0.

CREATE TABLE MyTable
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

Geçici tablolar için örnekler

C. Yerel geçici tablo oluşturma

Aşağıdaki örnek, #myTable adlı yerel bir geçici tablo oluşturur. Tablo, #ile başlayan üç bölümlü bir adla belirtilir.

CREATE TABLE AdventureWorks.dbo.#myTable
  (  
   id int NOT NULL,  
   lastName varchar(20),  
   zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),  
    CLUSTERED COLUMNSTORE INDEX
  )  
;  

Tablo yapısı örnekleri

D. Kümelenmiş columnstore diziniyle tablo oluşturma

Aşağıdaki örnek, kümelenmiş columnstore diziniyle dağıtılmış bir tablo oluşturur. Her dağıtım bir columnstore olarak depolanır.

Kümelenmiş columnstore dizini verilerin nasıl dağıtıldığını etkilemez; veriler her zaman satıra göre dağıtılır. Kümelenmiş columnstore dizini, verilerin her dağıtımda nasıl depolandığını etkiler.

  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. Sıralı kümelenmiş columnstore dizini oluşturma

Aşağıdaki örnekte, sıralı kümelenmiş columnstore dizininin nasıl oluşturulacağı gösterilmektedir. Dizin üzerinde SHIPDATEsıralanır.

CREATE TABLE Lineitem  
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))  
AS  
SELECT * FROM ext_Lineitem

Tablo dağıtımı örnekleri

F. ROUND_ROBIN tablosu oluşturma

Aşağıdaki örnek, üç sütunlu ve bölümleri olmayan bir ROUND_ROBIN tablosu oluşturur. Veriler tüm dağıtımlara yayılır. Tablo, kümelenmiş bir yığın veya rowstore dizinine göre daha iyi performans ve veri sıkıştırması sağlayan KÜMELENMİ COLUMNSTORE İnDİSİ ile oluşturulur.

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

G. Birden çok sütunda karma olarak dağıtılmış bir tablo oluşturma (önizleme)

Aşağıdaki örnek, önceki örnekle aynı tabloyu oluşturur. Ancak, bu tablo için satırlar (ve id sütunları) zipCode dağıtılır. Tablo kümelenmiş columnstore diziniyle oluşturulur ve bu dizin yığın veya rowstore kümelenmiş dizinine göre daha iyi performans ve veri sıkıştırma sağlar.

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

H. Çoğaltılmış tablo oluşturma

Aşağıdaki örnek, önceki örneklere benzer bir çoğaltılmış tablo oluşturur. Çoğaltılan tablolar her İşlem düğümüne tam olarak kopyalanır. Bu kopya her İşlem düğümünde olduğunda sorgular için veri taşıma azaltılır. Bu örnek, yığından daha iyi veri sıkıştırması sağlayan KÜMELENMİ İNDİS ile oluşturulur. Kümelenmiş COLUMNSTORE İNDİS sıkıştırması elde etmek için yığın yeterli satır içermeyebilir.

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

Tablo bölümleri için örnekler

I. Bölümlenmiş tablo oluşturma

Aşağıdaki örnek, A örneğinde gösterildiği gibi sütuna RANGE LEFT bölümleme eklenerek id aynı tabloyu oluşturur. Dört bölüm sınırı değeri belirtir ve bu da beş bölüme neden olur.

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

Bu örnekte veriler aşağıdaki bölümlere sıralanır:

  • Bölüm 1: col <= 10
  • Bölüm 2: 10 < sütun <= 20
  • Bölüm 3: 20 < col <= 30
  • Bölüm 4: 30 < col <= 40
  • Bölüm 5: 40 < sütun

Aynı tablo, ARALIK SOL (varsayılan) yerine RANGE RIGHT bölümlenmişse, veriler aşağıdaki bölümlere sıralanır:

  • Bölüm 1: sütun < 10
  • Bölüm 2: 10 <= sütun < 20
  • Bölüm 3: 20 <= sütun < 30
  • Bölüm 4: 30 <= sütun < 40
  • Bölüm 5: 40 <= sütun

J. Tek bölümlü bölümlenmiş tablo oluşturma

Aşağıdaki örnek, tek bölümlü bölümlenmiş bir tablo oluşturur. Herhangi bir sınır değeri belirtmez ve bu da bir bölüme neden olur.

CREATE TABLE myTable (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH
    (
      PARTITION ( id RANGE LEFT FOR VALUES ( )),  
      CLUSTERED COLUMNSTORE INDEX  
    )  
;  

K. Tarih bölümleme ile tablo oluşturma

Aşağıdaki örnek, bir sütunda bölümleme ile adlı myTableyeni bir date tablo oluşturur. Sınır değerleri için ve tarihlerini kullanarak RANGE RIGHT her bölüme bir ay veri yerleştirir.

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

Şunlar için geçerlidir: Microsoft FabricAmbarı

CREATE TABLE (Doku Veri Ambarı)

Microsoft Fabric'teki bir Ambarda yeni bir tablo oluşturur.

Daha fazla bilgi için bkz. Microsoft Fabric'te Ambar'da tablo oluşturma.

Note

Microsoft Fabric'te SQL veritabanı için bkz. CREATE TABLE. SQL Server ve Azure SQL platformları için CREATE TABLE adresini ziyaret edin ve sürüm açılan listesinden istediğiniz ürün sürümünü seçin. Azure Synapse Analytics ve Analytics Platform Sistemi'ne (PDW) başvurmak için CREATE TABLE (Azure Synapse Analytics) adresini ziyaret edin.

Transact-SQL söz dizimi kuralları

Syntax

-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( 
      { column_name <data_type>  [ <column_options> ] } [ ,...n ]
    )  WITH (CLUSTER BY [ ,... n ])
[;]  

<column_options> ::=
    [ NULL | NOT NULL ] -- default is NULL
    [ COLLATE Windows_collation_name ]

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

Arguments

database_name

Yeni tabloyu içerecek veritabanının adı. Varsayılan değer geçerli veritabanıdır.

schema_name

Tablonun şeması. Şemanın belirtilmesi isteğe bağlıdır. Boşsa, varsayılan şema kullanılır.

table_name

Yeni tablonun adı.

column_name

Tablo sütununun adı.

ILE ([ ,... n])

Fabric Data Warehouse'daki veri kümeleme maddesi, CLUSTER BY veri kümeleme için en az bir sütunun ve en fazla dört sütunun belirtilmesini gerektirir.

Daha fazla bilgi için, Fabric Data Warehouse'da Veri kümeleme bölümünü inceleyebilirsiniz.

Sütun Seçenekleri

NULL | NOT NULL

Sütunda değerlere izin verilip verilmeyeceğini NULL belirtir. Varsayılan değer: NULL.

COLLATE Windows_collation_name

İfadenin harmanlamasını belirtir.

Desteklenen harmanlamalar hakkında daha fazla bilgi için bkz. COLLATE .

Veri türü

Microsoft Fabric en yaygın kullanılan veri türlerini destekler. Daha fazla bilgi için bkz . Microsoft Fabric'te veri türleri.

Note

SQL Server'a benzer şekilde, satır başına 8.060 bayt sınırı vardır. Bu, çok sayıda sütunu olan tablolar veya veya varchar(8000)gibi varbinary(8000) büyük veri türlerine sahip sütunlar için engelleyici bir sorun haline gelebilir. 8.060 bayt sınırını ihlal eden ekler veya güncelleştirmeler 511 veya 611 hata kodlarıyla sonuçlanır. Daha fazla bilgi için bkz. Sayfalar ve Kapsamlar Mimarisi Kılavuzu.

Veri türü dönüştürmeleri tablosu için CAST ve CONVERT (Transact-SQL) öğesinin Örtük Dönüştürmeler bölümüne bakın. Daha fazla bilgi için bkz . Tarih ve saat veri türleri ve işlevleri (Transact-SQL).

Desteklenen veri türlerinin aşağıdaki listesi ayrıntılarını ve depolama baytlarını içerir.

datetime2 ( n )
Gregoryen takvime göre 19 ile 26 karakter arasında bir tarih ve saat depolar. Tarih yıl, ay ve gün içerebilir. Saat, dakika, saniye içerir. Bir seçenek olarak, n parametresine göre kesirli saniyeler için sıfırdan altıya kadar basamak depolayabilir ve görüntüleyebilirsiniz. Depolama boyutu 8 bayttır. n , ile arasında 06bir değer olmalıdır.

Note

Diğer SQL platformları gibi varsayılan duyarlık yoktur. için duyarlık 06değerini sağlamanız gerekir.

n değeri Precision Scale
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6

date
Gregoryen takvime göre yıl, ay ve gün için en fazla 10 karakter kullanarak tarihi depolar. Depolama boyutu 3 bayttır. Tarih tamsayı olarak depolanır.

time ( n )
n , ile arasında 06bir değer olmalıdır.

float [ ( n ) ]
Kayan nokta sayısal verileriyle kullanılmak üzere yaklaşık sayı veri türü. Kayan nokta verileri yaklaşıktır, yani veri türü aralığındaki tüm değerler tam olarak temsil edilemez. n , float'ın mantisini bilimsel gösteriminde depolamak için kullanılan bit sayısını belirtir. n duyarlık ve depolama boyutunu belirler. n belirtilirse, ve 1arasında 53 bir değer olmalıdır. Varsayılan n değeridir53.

Note

Diğer SQL platformları gibi varsayılan duyarlık yoktur. için duyarlık 06değerini sağlamanız gerekir.

n değeri Precision Depolama boyutu
1-24 7 hane 4 bayt
25-53 15 hane 8 bayt

Azure Synapse Analytics , n değerini iki olası değerden biri olarak değerlendirir. = 1<= ise<24, n olarak 24değerlendirilir. = 25<= ise<53, n olarak 53değerlendirilir.

Azure Synapse Analytics kayan veri türü, ile arasında 153 değerleri için ISO standardına uyar. Çift duyarlık için eş anlamlı float(53)'dir.

real [ ( n ) ]
gerçek tanımı float ile aynıdır. Gerçek için ISO eş anlamlısı float(24) şeklindedir.

decimal [ ( duyarlık [ , ölçek ] ) ] | numeric [ ( duyarlık [ , ölçek ] ) ]
Sabit duyarlık ve ölçek numaralarını depolar.

precision
Ondalık ayırıcının her iki tarafında depolanabilecek en fazla ondalık basamak sayısı. Duyarlık, en yüksek duyarlığından 1itibaren 38 bir değer olmalıdır. Varsayılan duyarlık şeklindedir 18.

scale
Ondalık ayırıcının sağındaki depolanabilecek en fazla ondalık basamak sayısı. Ölçek0 aracılığıyla bir değer olmalıdır. Ölçek belirtebilmeniz için duyarlık belirtilmesi gerekir. Varsayılan ölçek şu şekildedir 00<: = ölçek<= duyarlık. Maksimum depolama boyutları duyarlık temelinde farklılık gösterir.

Precision Depolama baytları
1-9 5
10-19 9
20-28 13
29-38 17

bigint | int | smallint
Tamsayı verisi kullanan tam sayı veri türleri. Depolama aşağıdaki tabloda gösterilmiştir.

Veri Türü Depolama baytları
bigint 8
int 4
smallint 2

bit
, veya '1NULL değerini 0alabilen bir tamsayı veri türü. Azure Synapse Analytics, bit sütunlarının depolama alanını iyileştirir. Tabloda 8 veya daha az bit sütun varsa, sütunlar 1 bayt olarak depolanır. 9-16 bit arası sütunlar varsa, sütunlar 2 bayt olarak depolanır ve bu şekilde devam eder.

varchar [ ( n | MAX ) ] Değişken uzunluklu, n bayt uzunluğunda Unicode karakter verileri. n , ile arasında 18000bir değer olmalıdır. Depolama boyutu, girilen verilerin gerçek uzunluğu + 2 bayttır. n için varsayılan değerdir1. Sütun, varchar(MAX) Ambar'da en fazla 1 MB metin depolayabilir.

Note

varchar(MAX) Ambar'da önizleme aşamasındadır. Daha fazla bilgi için bkz . Microsoft Fabric'te veri türleri.

char [ ( n ) ]
Sabit uzunlukta, n bayt uzunluğunda Unicode karakter verileri. n , ile arasında 18000bir değer olmalıdır. Depolama boyutu n bayttır. n için varsayılan değerdir1.

varbinary [ ( n | MAX ) ] Değişken uzunlukta ikili veriler. n , ile arasında 18000bir değer olabilir. Depolama boyutu, girilen verilerin gerçek uzunluğu + 2 bayttır. n için varsayılan değer 7'dir. Sütun, Ambar'da varbinary(MAX) en fazla 1 MB veri depolayabilir.

Note

varbinary(MAX) Ambar'da önizleme aşamasındadır. Daha fazla bilgi için bkz . Microsoft Fabric'te veri türleri.

uniqueidentifier
16 baytlık BIR GUID'dir.

Permissions

Microsoft Fabric'teki izinler, Azure Synapse Analytics izinlerinden farklıdır.

Kullanıcının Doku çalışma alanında Yönetici, Üye veya Katkıda Bulunan rollerinin üyesi olması gerekir.

Limitations

Remarks

Ambar'da sınırlı Transact-SQL işlevselliği vardır. Daha fazla bilgi için bkz. Microsoft Fabric'te T-SQL Surface Alanı.

Kilitleme davranışı

Tabloda bir Schema-Modification kilidi, DATABASE'de paylaşılan bir kilit ve SCHEMA üzerinde bir Schema-Stability kilidi alır.

Örnekler

A. Satış verileri için kümelenmiş bir tablo oluşturun

Bu örnek basit Sales bir tablo oluşturur ve CustomerID için ve SaleDate sütunlarını kullanır.

CREATE TABLE Sales (
    SaleID INT,
    CustomerID INT,
    SaleDate DATE,
    Amount DECIMAL(10,2)
) WITH (CLUSTER BY (CustomerID, SaleDate))