CREATE TABLE

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

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

Tabloları ve bunların nasıl kullanılacağını anlamak için bkz. Azure Synapse Analytics'te 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.

Not

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 Ambar'a başvurmak için CREATE TABLE (Fabric) adresini ziyaret edin.

Not

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

Transact-SQL söz dizimi kuralları

Söz dizimi

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

Bağımsız değişkenler

Veritabanı_adı

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

Schema_name

Tablonun şeması. Şema belirtme 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

COLLATEWindows_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.

Bağımsız Değişken Açıklama
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

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

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 Genel Açıklamalar'daki Rowstore Tabloları'na bakın.

LOCATION = USER_DB Bu seçenek kullanım dışıdır. Söz dizimsel olarak kabul edilir, 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 stratejisi hakkında öneriler için bkz. Synapse SQL Dağıtım Danışmanı (Önizleme).

DISTRIBUTION = HASH ( distribution_column_name ) distribution_column_name'de depolanan değeri karma olarak ekleyerek her satırı tek bir dağıtıma atar. Algoritma belirlenimcidir, başka bir deyişle aynı değeri her zaman aynı dağıtıma karma yapar. 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ı sekiz sütuna kadar 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.

Not

  • Ç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. Örnek: 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.
    • McD tablosuna veri yüklemek için CTAS deyimini kullanın ve veri kaynağı Synapse SQL tabloları olmalıdır.
  • MCD tabloları oluşturmak için betik oluşturmak için SSMS'nin kullanılması şu anda SSMS sürüm 19'un ötesinde desteklenmektedir.

DISTRIBUTION = ROUND_ROBIN Satırları tüm dağıtımlar arasında hepsini bir kez deneme şeklinde 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 depolanıp depolanmadığına bakılmaksızın 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ğılımı belirlemez. Bunun yerine, tablo bölümleri satırların her dağıtımda nasıl gruplandırılıp depolandığını belirler.

Bağımsız Değişken Açıklama
partition_column_name Azure Synapse Analytics'in satırları bölümleme için kullanacağı 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ükseğe sıralama, belirtim içinde RANGE 'den'e LEFTRIGHT gider.
RANGE LEFT Sınır değerinin soldaki bölüme ait olduğunu belirtir (daha 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



Yan tümcesini PARTITION belirtirseniz ancak sınır değeri belirtmezseniz Azure Synapse Analytics tek bölümlü bölümlenmiş bir tablo oluşturur. Uygunsa, tabloyu daha sonra iki bölüme bölebilirsiniz.



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. 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.

Örnekler bölümündeki Bölümlenmiş tablo oluşturma bölümüne bakın.

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 içindeki 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. Ayrıntılar için bkz . Sıralı Kümelenmiş Columnstore Dizini ile Performans Ayarlama .

Dize sütunları dışında Azure Synapse Analytics'te desteklenen herhangi bir veri türünün sütunlarında sıralı bir CCI oluşturulabilir.

Kullanıcılar bir tablonun sıralı olduğu sütunları ve sıralamadaki sırayı sys.index_columns column_store_order_ordinal sütunu sorgulayabilir.

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

Veri türü

Azure Synapse Analytics en sık 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.

Not

SQL Server benzer şekilde, satır başına 8060 bayt sınırı vardır. Bu, çok sayıda sütunu olan tablolar veya veya gibi nvarchar(max)varbinary(max)büyük veri türlerine sahip sütunlar için engelleyici bir sorun haline gelebilir. 8060 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) öğelerinin Ö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 İş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 Duyarlık Ölçek
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 tarihini 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
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 bir 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 , mantis float değerinin bilimsel gösteriminde depolanması için kullanılan bit sayısını belirtir. n duyarlığı ve depolama boyutunu belirler. n belirtilirse, ve 53arasında 1 bir değer olmalıdır. n varsayılan değeridir53.

n değeri Duyarlık Depolama boyutu
1-24 7 basamak 4 bayt
25-53 15 basamak 8 bayt

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

Azure Synapse Analytics float veri türü, ile arasında 53n'nin1 tüm değerleri için ISO standardına uygundur. Çift duyarlık için eş anlamlıdır float(53).

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

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

Hassas
Ondalık ayırıcının hem solunda hem de sağ tarafında depolanabilecek maksimum ondalık basamak sayısı. Duyarlık, değerinin en yüksek duyarlığından 38itibaren 1 bir değer olmalıdır. Varsayılan duyarlık şeklindedir 18.

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

Duyarlık 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ı verileri 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 '0NULL değerini 1alabilen 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 ) ] -- max yalnızca Azure Synapse Analytics için geçerlidir.
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.

nchar [ ( n ) ]
N karakter uzunluğunda sabit uzunlukta Unicode karakter verileri. n, ile 4000arasında 1 bir değer olmalıdır. Depolama boyutu iki kez n bayttır.

varchar[ ( n | max ) ] -- max yalnızca Azure Synapse Analytics için geçerlidir.
Değişken uzunlukta, 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.

char [ ( n ) ]
N bayt uzunluğunda sabit uzunluklu, 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ğer: 1.

varbinary[ ( n | max ) ] -- max yalnızca Azure Synapse Analytics için geçerlidir.
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.

binary [ ( n ) ]
Uzunluğu n bayt olan 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 bayt guid değeridir.

İzinler

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

  • CREATE TABLE veritabanında izin
  • ALTER SCHEMA tabloyu içerecek şema üzerindeki izin

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

  • ALTER ANY DATASPACE Izni

Yerel geçici tablo oluşturan oturum açma bilgileri, tabloda , INSERT, SELECTve UPDATE izinlerini alırCONTROL.

Açıklamalar

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. Daha fazla bilgi için bkz. Ayrılmış SQL havuzundaki tabloları bölümleme ve Azure Synapse Analytics'te 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.

Bir 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:

Sınırlamalar ve Kısıtlamalar

  • Dağıtım sütununda DEFAULT kısıtlaması tanımlayamazsınız.
  • Tablo Adı 100 karakterden büyük olamaz.

Bölümler

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'da örtük olarak veri türüne 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şlemleri için kullanılır.

Geçici tablolar

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

Yerel geçici tablolarda aşağıdaki sınırlamalar ve kısıtlamalar vardır:

  • 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 DROP TABLE deyimini 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.
  • 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 üzere 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, mycolumn1sütunu varsayılan harmanlama Latin1_General_100_CI_AS_KS_WS. sütununun mycolumn2 harmanlama Frisian_100_CS_AS.

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. colA sütununun constraint_colA adlı bir varsayılan kısıtlaması ve varsayılan değeri 0'dır.

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 üç parçalı 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 SHIPDATE üzerinde sı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, yığın veya satır deposu kümelenmiş dizinine göre daha iyi performans ve veri sıkıştırma 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 dağıtılır (ve zipCode sütunları üzerindeid). 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 kümelenmiş İnDİS ile oluşturulur ve yığından daha iyi veri sıkıştırması sağlar. Yığın, iyi kümelenmiş COLUMNSTORE İNDİS sıkıştırması elde etmek için 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ümleminin id eklenmesiyle 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 göre sıralanacaktı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 RANGE LEFT (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 sonuç olarak bir bölüm elde eder.

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

Kahraman. 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 RANGE RIGHT ve tarihler kullanıldığında her bölüme bir aylık veri eklenir.

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

Sonraki adımlar

Şunlar için geçerlidir:Microsoft Fabric'te Ambar

Microsoft Fabric'te bir Ambar'da yeni bir tablo oluşturur.

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

Not

Azure Synapse Analytics ve Analytics Platform Sistemi'ne (PDW) başvurmak için CREATE TABLE (Azure Synapse Analytics) adresini ziyaret edin. 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.

Transact-SQL söz dizimi kuralları

Söz dizimi

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

Bağımsız değişkenler

Veritabanı_adı

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 #.

Column_name

Tablo sütununun adı.

Sütun seçenekleri

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.

Bağımsız Değişken Açıklama
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.

Veri türü

Microsoft Fabric en yaygın kullanılan veri türlerini destekler.

Not

SQL Server benzer şekilde, satır başına 8060 bayt sınırı vardır. Bu, çok sayıda sütunu olan tablolar veya veya gibi varchar(8000)varbinary(8000)büyük veri türlerine sahip sütunlar için engelleyici bir sorun haline gelebilir. 8060 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) öğelerinin Ö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 İş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 günün tarihini ve saatini 19 ile 26 karakter arasında depolar. Tarih yıl, ay ve gün içerebilir. Saat, dakika, saniye içerir. 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 , değerinden 0 değerine 6olmalıdır.

Not

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

n değeri Duyarlık Ölçek
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 bir tamsayı olarak depolanır.

time ( n )
n , değerinden 0 değerine 6olmalı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 , mantis float değerinin bilimsel gösteriminde depolanması için kullanılan bit sayısını belirtir. n duyarlığı ve depolama boyutunu belirler. n belirtilirse, ve 53arasında 1 bir değer olmalıdır. n varsayılan değeridir53.

Not

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

n değeri Duyarlık Depolama boyutu
1-24 7 basamak 4 bayt
25-53 15 basamak 8 bayt

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

Azure Synapse Analytics float veri türü, ile arasında 53n'nin1 tüm değerleri için ISO standardına uygundur. Çift duyarlık için eş anlamlıdır float(53).

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

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

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

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

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

bigint | int | smallint
Tamsayı verileri 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 '0NULL değerini 1alabilen 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 ) ] Değişken uzunlukta, 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ğer: 1.

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ğer: 1.

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

uniqueidentifier
16 bayt guid değeridir.

İzinler

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

Sınırlamalar ve kısıtlamalar

  • Tablo adı 100 karakterden büyük olamaz.
  • Microsoft Fabric'teki Warehouse'daki tablo adları veya \karakterlerini / içeremez.
  • Ambarda desteklenen varsayılan ve yalnızca harmanlama Latin1_General_100_BIN2_UTF8.

Açıklamalar

Warehouse'da sınırlı TSQL işlevi vardır. Daha fazla bilgi için bkz. Microsoft Fabric'te TSQL Surface Alanı.

Kilitleme davranışı

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

Sonraki adımlar