CREATE TABLE

Berlaku untuk:Azure Synapse Analytics AnalyticsPlatform System (PDW)

Membuat tabel baru di Azure Synapse Analytics atau Analytics Platform System (PDW).

Untuk memahami tabel dan cara menggunakannya, lihat Tabel di Azure Synapse Analytics.

Diskusi tentang Azure Synapse Analytics dalam artikel ini berlaku untuk Azure Synapse Analytics dan Analytics Platform System (PDW) kecuali dinyatakan lain.

Catatan

Untuk platform SQL Server dan Azure SQL, kunjungi CREATE TABLE dan pilih versi produk yang Anda inginkan. Untuk referensi ke Gudang di Microsoft Fabric, kunjungi CREATE TABLE (Fabric).

Catatan

Kumpulan SQL tanpa server di Azure Synapse Analytics hanya mendukung tabel eksternal dan sementara .

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

database_name

Nama database yang akan berisi tabel baru. Defaultnya adalah database saat ini.

schema_name

Skema untuk tabel. Menentukan skema bersifat opsional. Jika kosong, skema default digunakan.

table_name

Nama tabel baru. Untuk membuat tabel sementara lokal, awali nama tabel dengan #. Untuk penjelasan dan panduan tentang tabel sementara, lihat Tabel sementara di kumpulan SQL khusus di Azure Synapse Analytics.

column_name

Nama kolom tabel.

Opsi kolom

COLLATEWindows_collation_name
Menentukan kolatasi untuk ekspresi. Kolase harus menjadi salah satu kolase Windows yang didukung oleh SQL Server. Untuk daftar kolase Windows yang didukung oleh SQL Server, lihat Nama Kolase Windows (Transact-SQL)/).

NULL | NOT NULL
Menentukan apakah NULL nilai diizinkan dalam kolom. Default adalah NULL.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_expression
Menentukan nilai kolom default.

Argumen Penjelasan
constraint_name Nama opsional untuk batasan. Nama batasan unik dalam database. Nama dapat digunakan kembali di database lain.
constant_expression Nilai default untuk kolom. Ekspresi harus berupa nilai harfiah atau konstanta. Misalnya, ekspresi konstanta ini diizinkan: 'CA', 4. Ekspresi konstanta ini tidak diizinkan: 2+3, CURRENT_TIMESTAMP.

Opsi struktur tabel

Untuk panduan tentang memilih jenis tabel, lihat Mengindeks tabel di Azure Synapse Analytics.

CLUSTERED COLUMNSTORE INDEX

Menyimpan tabel sebagai indeks penyimpan kolom berkluster. Indeks penyimpan kolom berkluster berlaku untuk semua data tabel. Perilaku ini adalah default untuk Azure Synapse Analytics.

HEAP Menyimpan tabel sebagai tumpuk. Perilaku ini adalah default untuk Analytics Platform System (PDW).

CLUSTERED INDEX ( index_column_name [ ,...n ] )
Menyimpan tabel sebagai indeks berkluster dengan satu atau beberapa kolom kunci. Perilaku ini menyimpan data menurut baris. Gunakan index_column_name untuk menentukan nama satu atau beberapa kolom kunci dalam indeks. Untuk informasi selengkapnya, lihat Tabel Rowstore di Keterangan Umum.

LOCATION = USER_DB Opsi ini tidak digunakan lagi. Ini diterima secara sintis, tetapi tidak lagi diperlukan dan tidak lagi memengaruhi perilaku.

Opsi distribusi tabel

Untuk memahami cara memilih metode distribusi terbaik dan menggunakan tabel terdistribusi, lihat mendesain tabel terdistribusi menggunakan kumpulan SQL khusus di Azure Synapse Analytics.

Untuk rekomendasi tentang strategi distribusi terbaik untuk digunakan berdasarkan beban kerja Anda, lihat Synapse SQL Distribution Advisor (Pratinjau).

DISTRIBUTION = HASH ( distribution_column_name ) Menetapkan setiap baris ke satu distribusi dengan hash nilai yang disimpan dalam distribution_column_name. Algoritma adalah deterministik, yang berarti selalu hash nilai yang sama ke distribusi yang sama. Kolom distribusi harus didefinisikan sebagai NOT NULL karena semua baris yang memiliki NULL ditetapkan ke distribusi yang sama.

DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) Mendistribusikan baris berdasarkan nilai hash hingga delapan kolom, memungkinkan distribusi data tabel dasar yang lebih merata, mengurangi ke condong data dari waktu ke waktu dan meningkatkan performa kueri.

Catatan

  • Untuk mengaktifkan fitur distribusi multi-kolom (MCD), ubah tingkat kompatibilitas database menjadi 50 dengan perintah ini. Untuk informasi selengkapnya tentang mengatur tingkat kompatibilitas database, lihat MENGUBAH KONFIGURASI CAKUPAN DATABASE. Misalnya: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
  • Untuk menonaktifkan fitur Distribusi Multi-Kolom (MCD), jalankan perintah ini untuk mengubah tingkat kompatibilitas database menjadi AUTO. Misalnya: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO; Tabel MCD yang ada akan tetap ada tetapi menjadi tidak dapat dibaca. Kueri melalui tabel MCD akan mengembalikan kesalahan ini: 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.
    • Untuk mendapatkan kembali akses ke tabel MCD, aktifkan fitur lagi.
    • Untuk memuat data ke dalam tabel MCD, gunakan pernyataan CTAS dan sumber data harus berupa tabel Synapse SQL.
  • Membuat skrip untuk membuat tabel MCD saat ini didukung SSMS versi 19 dan versi yang lebih baru.

DISTRIBUTION = ROUND_ROBIN Mendistribusikan baris secara merata di semua distribusi dengan cara round-robin. Perilaku ini adalah default untuk Azure Synapse Analytics.

DISTRIBUTION = REPLICATE Menyimpan satu salinan tabel pada setiap simpul Komputasi. Untuk Azure Synapse Analytics, tabel disimpan pada database distribusi pada setiap simpul Komputasi. Untuk Analytics Platform System (PDW), tabel disimpan dalam grup file SQL Server yang mencakup simpul Komputasi. Perilaku ini adalah default untuk Analytics Platform System (PDW).

Opsi partisi tabel

Untuk panduan tentang menggunakan partisi tabel, lihat Tabel partisi di kumpulan SQL khusus.

PARTITION( partition_column_nameRANGE [ | LEFTRIGHT ] FOR VALUES ( [ boundary_value [ ,...n] ] ))
Membuat satu atau beberapa partisi tabel. Partisi ini adalah irisan tabel horizontal yang memungkinkan Anda menerapkan operasi ke subset baris terlepas dari apakah tabel disimpan sebagai tumpukan, indeks berkluster, atau indeks penyimpan kolom berkluster. Tidak seperti kolom distribusi, partisi tabel tidak menentukan distribusi tempat setiap baris disimpan. Sebagai gantinya, partisi tabel menentukan bagaimana baris dikelompokkan dan disimpan dalam setiap distribusi.

Argumen Penjelasan
partition_column_name Menentukan kolom yang akan digunakan Azure Synapse Analytics untuk mempartisi baris. Kolom ini bisa berupa tipe data apa pun. Azure Synapse Analytics mengurutkan nilai kolom partisi dalam urutan naik. Urutan rendah ke tinggi beralih dari LEFT ke RIGHTRANGE dalam spesifikasi.
RANGE LEFT Menentukan nilai batas milik partisi di sebelah kiri (nilai yang lebih rendah). Defaultnya adalah LEFT.
RANGE RIGHT Menentukan nilai batas milik partisi di sebelah kanan (nilai yang lebih tinggi).
FOR VALUES ( boundary_value [,...n] ) Menentukan nilai batas untuk partisi. boundary_value adalah ekspresi konstanta. Ini tidak boleh NULL. Ini harus cocok atau secara implisit dapat dikonversi ke jenis data partition_column_name. Ini tidak dapat dipotong selama konversi implisit sehingga ukuran dan skala nilai tidak cocok dengan jenis data partition_column_name



Jika Anda menentukan PARTITION klausa, tetapi tidak menentukan nilai batas, Azure Synapse Analytics membuat tabel yang dipartisi dengan satu partisi. Jika berlaku, Anda dapat membagi tabel menjadi dua partisi di lain waktu.



Jika Anda menentukan satu nilai batas, tabel yang dihasilkan memiliki dua partisi; satu untuk nilai yang lebih rendah dari nilai batas dan satu untuk nilai yang lebih tinggi dari nilai batas. Jika Anda memindahkan partisi ke dalam tabel non-partisi, tabel yang tidak dipartisi menerima data, tetapi tidak akan memiliki batas partisi dalam metadatanya.

Lihat Membuat tabel yang dipartisi di bagian Contoh.

Opsi indeks penyimpan kolom Berkluster Yang Diurutkan

Indeks penyimpan kolom terkluster (CCI) adalah default untuk membuat tabel di Azure Synapse Analytics. Data dalam CCI tidak diurutkan sebelum dikompresi ke dalam segmen penyimpan kolom. Saat membuat CCI dengan ORDER, data diurutkan sebelum ditambahkan ke segmen indeks dan performa kueri dapat ditingkatkan. Lihat Penyetelan Performa dengan Indeks Penyimpan Kolom Berkluster Terurut untuk detailnya.

CCI yang diurutkan dapat dibuat pada kolom jenis data apa pun yang didukung di Azure Synapse Analytics kecuali untuk kolom string.

Pengguna dapat mengkueri kolom column_store_order_ordinal di sys.index_columns untuk kolom yang diurutkan pada tabel dan urutan dalam urutan.

Periksa Penyetelan performa dengan indeks penyimpan kolom berkluster yang diurutkan untuk detailnya.

Jenis data

Azure Synapse Analytics mendukung jenis data yang paling umum digunakan. Untuk lebih memahami jenis data dan cara menggunakannya, lihat Jenis data untuk tabel di Azure Synapse Analytics.

Catatan

Mirip dengan SQL Server, ada batas 8060 byte per baris. Ini mungkin menjadi masalah pemblokiran untuk tabel yang memiliki banyak kolom, atau kolom dengan jenis data besar, seperti nvarchar(max) atau varbinary(max). Menyisipkan atau memperbarui yang melanggar batas 8060 byte akan menghasilkan kode kesalahan 511 atau 611. Untuk informasi selengkapnya, lihat Panduan Arsitektur Halaman dan Tingkat.

Untuk tabel konversi jenis data, lihat bagian Konversi Implisit dari CAST dan CONVERT (Transact-SQL). Untuk informasi selengkapnya, lihat Jenis dan Fungsi Data Tanggal dan Waktu (Transact-SQL).

Daftar jenis data yang didukung berikut ini mencakup detail dan byte penyimpanannya:

datetimeoffset [ [ [ n ]
Nilai default untuk n adalah 7.

datetime2 [ [ [ n ]
Sama seperti datetime, kecuali Anda dapat menentukan jumlah detik pecahan. Nilai default untuk n adalah 7.

n nilai Presisi Sisik
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
Menyimpan tanggal dan waktu hari dengan 19 hingga 23 karakter sesuai dengan kalender Gregorian. Tanggal dapat berisi tahun, bulan, dan hari. Waktu berisi jam, menit, detik. Sebagai opsi, Anda dapat menampilkan tiga digit untuk detik pecahan. Ukuran penyimpanannya adalah 8 byte.

smalldatetime
Menyimpan tanggal dan waktu. Ukuran penyimpanan adalah 4 byte.

date
Menyimpan tanggal menggunakan maksimum 10 karakter untuk tahun, bulan, dan hari sesuai dengan kalender Gregorian. Ukuran penyimpanan adalah 3 byte. Tanggal disimpan sebagai bilangan bulat.

time [ [ [ n ]
Nilai default untuk n adalah 7.

float [ [ [ n ]
Perkiraan jenis data angka untuk digunakan dengan data numerik titik mengambang. Data titik mengambang adalah perkiraan, yang berarti bahwa tidak semua nilai dalam rentang jenis data dapat diwakili dengan tepat. n menentukan jumlah bit yang digunakan untuk menyimpan mantissa float dalam notasi ilmiah. n menentukan presisi dan ukuran penyimpanan. Jika n ditentukan, nilainya harus antara 1 dan 53. Nilai default n adalah 53.

n nilai Presisi Ukuran penyimpanan
1-24 7 digit 4 byte
25-53 15 digit 8 byte

Azure Synapse Analytics memperlakukan n sebagai salah satu dari dua nilai yang mungkin. Jika 1<= n<= 24, n diperlakukan sebagai 24. Jika 25<= n<= 53, n diperlakukan sebagai 53.

Jenis data Azure Synapse Analytics float mematuhi standar ISO untuk semua nilai n dari 1 hingga 53. Sinonim untuk presisi ganda adalah float(53).

real [ [ [ n ]
Definisi real sama dengan float. Sinonim ISO untuk real adalah float(24).

decimal [ ( presisi [ , skala ] ] ] | numeric [ ( presisi [ , skala ] ]
Menyimpan presisi tetap dan angka skala.

Presisi
Jumlah total maksimum digit desimal yang dapat disimpan, baik di sebelah kiri maupun di sebelah kanan titik desimal. Presisi harus berupa nilai dari 1 melalui presisi 38maksimum . Presisi defaultnya adalah 18.

Skala
Jumlah maksimum digit desimal yang dapat disimpan di sebelah kanan titik desimal. Skala harus berupa nilai dari 0 melalui presisi. Anda hanya dapat menentukan skala jika presisi ditentukan. Skala defaultnya adalah 0 dan begitu 0<= skala<= presisi. Ukuran penyimpanan maksimum bervariasi, berdasarkan presisinya.

Presisi Byte penyimpanan
1-9 5
10-19 9
20-28 13
29-38 17

money | smallmoney
Jenis data yang mewakili nilai mata uang.

Jenis Data Byte penyimpanan
money 8
smallmoney 4

bigint | int | smallint | tinyint
Jenis data angka yang tepat yang menggunakan data bilangan bulat. Penyimpanan ditampilkan dalam tabel berikut.

Jenis Data Byte penyimpanan
bigint 8
int 4
smallint 2
tinyint 1

bit
Jenis data bilangan 1bulat yang dapat mengambil nilai , , 0atau 'NULL. Azure Synapse Analytics mengoptimalkan penyimpanan kolom bit. Jika ada 8 kolom bit atau lebih sedikit dalam tabel, kolom disimpan sebagai 1 byte. Jika ada dari kolom 9-16 bit, kolom disimpan sebagai 2 byte, dan sebagainya.

nvarchar [ ( n | max ) ] -- max hanya berlaku untuk Azure Synapse Analytics.
Data karakter Unicode dengan panjang variabel. n bisa menjadi nilai dari 1 hingga 4000. max menunjukkan bahwa ukuran penyimpanan maksimum adalah 2^31-1 byte (2 GB). Ukuran penyimpanan dalam byte adalah dua kali jumlah karakter yang dimasukkan + 2 byte. Panjang data yang dimasukkan bisa nol karakter.

nchar [ [ [ n ]
Data karakter Unicode panjang tetap dengan panjang karakter n . n harus berupa nilai dari 1 melalui 4000. Ukuran penyimpanan adalah dua kali n byte.

varchar [ ( n | max ) ] -- max hanya berlaku untuk Azure Synapse Analytics.
Panjang variabel, data karakter non-Unicode dengan panjang n byte. n harus berupa nilai dari 1 ke 8000. max menunjukkan bahwa ukuran penyimpanan maksimum adalah 2^31-1 byte (2 GB). Ukuran penyimpanan adalah panjang aktual data yang dimasukkan + 2 byte.

char [ [ [ n ]
Panjang tetap, data karakter non-Unicode dengan panjang n byte. n harus berupa nilai dari 1 ke 8000. Ukuran penyimpanan adalah n byte. Default untuk n adalah 1.

varbinary [ ( n | max ) ] -- max hanya berlaku untuk Azure Synapse Analytics.
Data biner panjang variabel. n bisa menjadi nilai dari 1 ke 8000. max menunjukkan bahwa ukuran penyimpanan maksimum adalah 2^31-1 byte (2 GB). Ukuran penyimpanan adalah panjang aktual data yang dimasukkan + 2 byte. Nilai default untuk n adalah 7.

binary [ [ [ n ]
Data biner panjang tetap dengan panjang n byte. n bisa menjadi nilai dari 1 ke 8000. Ukuran penyimpanan adalah n byte. Nilai default untuk n adalah 7.

uniqueidentifier
Adalah GUID 16 byte.

Izin

Membuat tabel memerlukan izin dalam db_ddladmin peran database tetap, atau:

  • CREATE TABLE izin pada database
  • ALTER SCHEMA izin pada skema yang akan berisi tabel

Membuat tabel yang dipartisi memerlukan izin dalam db_ddladmin peran database tetap, atau

  • ALTER ANY DATASPACE Izin

Login yang membuat tabel sementara lokal menerima CONTROLizin , , INSERTSELECT, dan UPDATE pada tabel .

Keterangan

Untuk batas minimum dan maksimum, lihat Batas kapasitas Azure Synapse Analytics.

Menentukan jumlah partisi tabel

Setiap tabel yang ditentukan pengguna dibagi menjadi beberapa tabel yang lebih kecil yang disimpan di lokasi terpisah yang disebut distribusi. Azure Synapse Analytics menggunakan 60 distribusi. Di Analytics Platform System (PDW), jumlah distribusi tergantung pada jumlah simpul Komputasi.

Setiap distribusi berisi semua partisi tabel. Misalnya, jika ada 60 distribusi dan empat partisi tabel ditambah satu partisi kosong, akan ada 300 partisi (5 x 60= 300). Jika tabel adalah indeks penyimpan kolom berkluster, akan ada satu indeks penyimpan kolom per partisi, yang berarti Anda akan memiliki 300 indeks penyimpan kolom.

Sebaiknya gunakan lebih sedikit partisi tabel untuk memastikan setiap indeks penyimpan kolom memiliki baris yang cukup untuk memanfaatkan manfaat indeks penyimpan kolom. Untuk informasi selengkapnya, lihat Mempartisi tabel di kumpulan SQL khusus dan Indeks pada tabel kumpulan SQL khusus di Azure Synapse Analytics.

Tabel rowstore (timbunan atau indeks berkluster)

Tabel rowstore adalah tabel yang disimpan dalam urutan baris demi baris. Ini adalah indeks timbunan atau berkluster. Azure Synapse Analytics membuat semua tabel rowstore dengan pemadatan halaman; perilaku ini tidak dapat dikonfigurasi pengguna.

Tabel penyimpan kolom (indeks penyimpan kolom)

Tabel penyimpan kolom adalah tabel yang disimpan dalam urutan kolom demi kolom. Indeks penyimpan kolom adalah teknologi yang mengelola data yang disimpan dalam tabel penyimpan kolom. Indeks penyimpan kolom berkluster tidak memengaruhi cara data didistribusikan. Sebaliknya, ini memengaruhi bagaimana data disimpan dalam setiap distribusi.

Untuk mengubah tabel rowstore menjadi tabel penyimpan kolom, letakkan semua indeks yang ada pada tabel dan buat indeks penyimpan kolom berkluster. Misalnya, lihat MEMBUAT INDEKS PENYIMPAN KOLOM (Transact-SQL).

Untuk informasi selengkapnya, lihat artikel berikut ini:

Batasan dan Pembatasan

  • Anda tidak dapat menentukan batasan DEFAULT pada kolom distribusi.
  • Nama Tabel tidak boleh lebih besar dari 128 karakter.
  • Nama Kolom tidak boleh lebih besar dari 128 karakter.

Partisi

Kolom partisi tidak dapat memiliki kolamen khusus Unicode. Misalnya, pernyataan berikut gagal:

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

Jika boundary_value adalah nilai harfiah yang harus dikonversi secara implisit ke jenis data dalam partition_column_name, perbedaan terjadi. Nilai harfiah ditampilkan melalui tampilan sistem Azure Synapse Analytics, tetapi nilai yang dikonversi digunakan untuk operasi Transact-SQL.

Tabel sementara

Tabel sementara global yang dimulai dengan ## tidak didukung.

Tabel sementara lokal memiliki batasan dan batasan berikut:

  • Mereka hanya terlihat oleh sesi saat ini. Azure Synapse Analytics menghilangkannya secara otomatis di akhir sesi. Untuk menghilangkannya secara eksplisit, gunakan pernyataan DROP TABLE.
  • Mereka tidak dapat diganti namanya.
  • Mereka tidak dapat memiliki partisi atau tampilan.
  • Izin mereka tidak dapat diubah. GRANT, DENY, dan REVOKE pernyataan tidak dapat digunakan dengan tabel sementara lokal.
  • Perintah konsol database diblokir untuk tabel sementara.
  • Jika lebih dari satu tabel sementara lokal digunakan dalam batch, masing-masing harus memiliki nama yang unik. Jika beberapa sesi menjalankan batch yang sama dan membuat tabel sementara lokal yang sama, Azure Synapse Analytics secara internal menambahkan akhiran numerik ke nama tabel sementara lokal untuk mempertahankan nama unik untuk setiap tabel sementara lokal.

Perilaku penguncian

Mengambil kunci eksklusif di atas meja. Mengambil kunci bersama pada objek DATABASE, SKEMA, dan SCHEMARESOLUTION.

Contoh untuk kolom

J. Tentukan kolab kolom

Dalam contoh berikut, tabel MyTable dibuat dengan dua kolatasi kolom yang berbeda. Secara default, kolom , mycolumn1memiliki kolab default Latin1_General_100_CI_AS_KS_WS. Kolom , mycolumn2 memiliki kolae Frisian_100_CS_AS.

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

B. Tentukan batasan DEFAULT untuk kolom

Contoh berikut menunjukkan sintaks untuk menentukan nilai default untuk kolom. Kolom colA memiliki batasan default bernama constraint_colA dan nilai default 0.

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

Contoh untuk tabel sementara

C. Membuat tabel sementara lokal

Contoh berikut membuat tabel sementara lokal bernama #myTable. Tabel ditentukan dengan nama tiga bagian, yang dimulai dengan #.

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

Contoh untuk struktur tabel

D. Membuat tabel dengan indeks penyimpan kolom berkluster

Contoh berikut membuat tabel terdistribusi dengan indeks penyimpan kolom berkluster. Setiap distribusi disimpan sebagai penyimpan kolom.

Indeks penyimpan kolom berkluster tidak memengaruhi cara data didistribusikan; data selalu didistribusikan menurut baris. Indeks penyimpan kolom berkluster memengaruhi bagaimana data disimpan dalam setiap distribusi.

  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. Membuat indeks penyimpan kolom berkluster yang diurutkan

Contoh berikut menunjukkan cara membuat indeks penyimpan kolom berkluster yang diurutkan. Indeks diurutkan pada SHIPDATE.

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

Contoh untuk distribusi tabel

F. Membuat tabel ROUND_ROBIN

Contoh berikut membuat tabel ROUND_ROBIN dengan tiga kolom dan tanpa partisi. Data tersebar di semua distribusi. Tabel dibuat dengan INDEKS PENYIMPAN KOLOM BERKLUSTER, yang memberikan performa dan kompresi data yang lebih baik daripada indeks berkluster heap atau rowstore.

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

G. Membuat tabel yang didistribusikan hash pada beberapa kolom (pratinjau)

Contoh berikut membuat tabel yang sama dengan contoh sebelumnya. Namun, untuk tabel ini, baris didistribusikan (pada id kolom dan zipCode ). Tabel dibuat dengan indeks penyimpan kolom berkluster, yang memberikan performa dan kompresi data yang lebih baik daripada indeks berkluster heap atau rowstore.

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

H. Membuat tabel yang direplikasi

Contoh berikut membuat tabel yang direplikasi mirip dengan contoh sebelumnya. Tabel yang direplikasi disalin secara penuh ke setiap simpul Komputasi. Dengan salinan ini pada setiap simpul Komputasi, pergerakan data dikurangi untuk kueri. Contoh ini dibuat dengan INDEKS BERKLUSTER, yang memberikan kompresi data yang lebih baik daripada tumpukan. Tumpukan mungkin tidak berisi cukup baris untuk mencapai kompresi INDEKS COLUMNSTORE BERKLUSTER yang baik.

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

Contoh untuk partisi tabel

I. Membuat tabel yang dipartisi

Contoh berikut membuat tabel yang sama seperti yang diperlihatkan dalam contoh A, dengan penambahan partisi RANGE LEFT pada id kolom. Ini menentukan empat nilai batas partisi, yang menghasilkan lima partisi.

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

Dalam contoh ini, data akan diurutkan ke dalam partisi berikut:

  • Partisi 1: kol <= 10
  • Partisi 2: 10 < kol <= 20
  • Partisi 3: 20 < kol <= 30
  • Partisi 4: 30 < kol <= 40
  • Partisi 5: 40 < col

Jika tabel yang sama ini dipartisi RENTANG KANAN alih-alih RENTANG KIRI (default), data akan diurutkan ke dalam partisi berikut:

  • Partisi 1: kol < 10
  • Partisi 2: 10 <= col < 20
  • Partisi 3: 20 <= col < 30
  • Partisi 4: 30 <= col < 40
  • Partisi 5: 40 <= col

j. Membuat tabel yang dipartisi dengan satu partisi

Contoh berikut membuat tabel yang dipartisi dengan satu partisi. Ini tidak menentukan nilai batas apa pun, yang menghasilkan satu partisi.

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

K. Membuat tabel dengan pemartisian tanggal

Contoh berikut membuat tabel baru bernama myTable, dengan pemartisian pada date kolom. Dengan menggunakan RENTANG KANAN dan tanggal untuk nilai batas, nilai tersebut menempatkan sebulan data di setiap partisi.

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

Langkah berikutnya

Berlaku untuk:Warehouse di Microsoft Fabric

Membuat tabel baru di Gudang di Microsoft Fabric.

Untuk informasi selengkapnya, lihat Membuat tabel di Gudang di Microsoft Fabric.

Catatan

Untuk referensi ke Azure Synapse Analytics and Analytics Platform System (PDW), kunjungi CREATE TABLE (Azure Synapse Analytics). Untuk platform SQL Server dan Azure SQL, kunjungi CREATE TABLE dan pilih versi produk yang Anda inginkan dari daftar drop-down versi.

Konvensi sintaks transact-SQL

Sintaks

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

<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 ) ] 
    | uniqueidentifier  

Argumen

database_name

Nama database yang akan berisi tabel baru. Defaultnya adalah database saat ini.

schema_name

Skema untuk tabel. Menentukan skema bersifat opsional. Jika kosong, skema default digunakan.

table_name

Nama tabel baru.

column_name

Nama kolom tabel.

Opsi kolom

NULL | NOT NULL
Menentukan apakah NULL nilai diizinkan dalam kolom. Default adalah NULL.

Jenis data

Microsoft Fabric mendukung jenis data yang paling umum digunakan.

Catatan

Mirip dengan SQL Server, ada batas 8060 byte per baris. Ini mungkin menjadi masalah pemblokiran untuk tabel yang memiliki banyak kolom, atau kolom dengan jenis data besar, seperti varchar(8000) atau varbinary(8000). Menyisipkan atau memperbarui yang melanggar batas 8060 byte akan menghasilkan kode kesalahan 511 atau 611. Untuk informasi selengkapnya, lihat Panduan Arsitektur Halaman dan Tingkat.

Untuk tabel konversi jenis data, lihat bagian Konversi Implisit dari CAST dan CONVERT (Transact-SQL). Untuk informasi selengkapnya, lihat Jenis dan Fungsi Data Tanggal dan Waktu (Transact-SQL).

Daftar jenis data yang didukung berikut ini mencakup detail dan byte penyimpanannya.

datetime2 ( n )
Menyimpan tanggal dan waktu hari dengan 19 hingga 26 karakter sesuai dengan kalender Gregorian. Tanggal dapat berisi tahun, bulan, dan hari. Waktu berisi jam, menit, detik. Sebagai opsi, Anda dapat menyimpan dan menampilkan nol hingga enam digit untuk detik pecahan berdasarkan parameter n . Ukuran penyimpanannya adalah 8 byte. n harus berupa nilai dari 0 ke 6.

Catatan

Tidak ada presisi default seperti platform SQL lainnya. Anda harus memberikan nilai untuk presisi dari 0 ke 6.

n nilai Presisi Sisik
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6

date
Menyimpan tanggal menggunakan maksimum 10 karakter untuk tahun, bulan, dan hari sesuai dengan kalender Gregorian. Ukuran penyimpanan adalah 3 byte. Tanggal disimpan sebagai bilangan bulat.

time ( n )
n harus berupa nilai dari 0 ke 6.

float [ [ [ n ]
Perkiraan jenis data angka untuk digunakan dengan data numerik titik mengambang. Data titik mengambang adalah perkiraan, yang berarti bahwa tidak semua nilai dalam rentang jenis data dapat diwakili dengan tepat. n menentukan jumlah bit yang digunakan untuk menyimpan mantissa float dalam notasi ilmiah. n menentukan presisi dan ukuran penyimpanan. Jika n ditentukan, nilainya harus antara 1 dan 53. Nilai default n adalah 53.

Catatan

Tidak ada presisi default seperti platform SQL lainnya. Anda harus memberikan nilai untuk presisi dari 0 ke 6.

n nilai Presisi Ukuran penyimpanan
1-24 7 digit 4 byte
25-53 15 digit 8 byte

Azure Synapse Analytics memperlakukan n sebagai salah satu dari dua nilai yang mungkin. Jika 1<= n<= 24, n diperlakukan sebagai 24. Jika 25<= n<= 53, n diperlakukan sebagai 53.

Jenis data Azure Synapse Analytics float mematuhi standar ISO untuk semua nilai n dari 1 hingga 53. Sinonim untuk presisi ganda adalah float(53).

real [ [ [ n ]
Definisi real sama dengan float. Sinonim ISO untuk real adalah float(24).

decimal [ ( presisi [ , skala ] ] ] | numeric [ ( presisi [ , skala ] ]
Menyimpan presisi tetap dan angka skala.

Presisi
Jumlah total maksimum digit desimal yang dapat disimpan, baik di sebelah kiri maupun di sebelah kanan titik desimal. Presisi harus berupa nilai dari 1 melalui presisi 38maksimum . Presisi defaultnya adalah 18.

Skala
Jumlah maksimum digit desimal yang dapat disimpan di sebelah kanan titik desimal. Skala harus berupa nilai dari 0 melalui presisi. Anda hanya dapat menentukan skala jika presisi ditentukan. Skala defaultnya adalah 0 dan begitu 0<= skala<= presisi. Ukuran penyimpanan maksimum bervariasi, berdasarkan presisinya.

Presisi Byte penyimpanan
1-9 5
10-19 9
20-28 13
29-38 17

bigint | int | smallint
Jenis data angka yang tepat yang menggunakan data bilangan bulat. Penyimpanan ditampilkan dalam tabel berikut.

Jenis Data Byte penyimpanan
bigint 8
int 4
smallint 2

bit
Jenis data bilangan 1bulat yang dapat mengambil nilai , , 0atau 'NULL. Azure Synapse Analytics mengoptimalkan penyimpanan kolom bit. Jika ada 8 kolom bit atau lebih sedikit dalam tabel, kolom disimpan sebagai 1 byte. Jika ada dari kolom 9-16 bit, kolom disimpan sebagai 2 byte, dan sebagainya.

varchar [ ( n ) ] Panjang variabel, data karakter Unicode dengan panjang n byte. n harus berupa nilai dari 1 ke 8000. Ukuran penyimpanan adalah panjang aktual data yang dimasukkan + 2 byte. Default untuk n adalah 1.

char [ [ [ n ]
Panjang tetap, data karakter Unicode dengan panjang n byte. n harus berupa nilai dari 1 ke 8000. Ukuran penyimpanan adalah n byte. Default untuk n adalah 1.

varbinary [ ( n ) ] Data biner panjang variabel. n bisa menjadi nilai dari 1 ke 8000. Ukuran penyimpanan adalah panjang aktual data yang dimasukkan + 2 byte. Nilai default untuk n adalah 7.

uniqueidentifier
Adalah GUID 16 byte.

Izin

Izin di Microsoft Fabric berbeda dari izin Azure Synapse Analytics.

Pembatasan dan batasan

  • Nama tabel tidak boleh lebih besar dari 128 karakter.
  • Nama tabel di Gudang di Microsoft Fabric tidak dapat menyertakan karakter / atau \ diakhir .dengan .
  • Nama kolom tidak boleh lebih besar dari 128 karakter.
  • Tabel memiliki maksimum 1024 kolom per tabel.
  • Koladasi default dan satu-satunya yang didukung di Warehouse adalah Latin1_General_100_BIN2_UTF8.

Keterangan

Ada fungsionalitas Transact-SQL terbatas di Gudang. Untuk informasi selengkapnya, lihat Area Permukaan TSQL di Microsoft Fabric.

Perilaku penguncian

Mengambil kunci Skema-Modifikasi pada tabel, kunci bersama pada DATABASE, dan kunci Skema-Stabilitas pada SKEMA.

Langkah berikutnya