CREATE TABLE
Berlaku untuk: Azure Synapse Analytics Analytics Platform 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 .
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
COLLATE
Windows_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
.
[ CONSTRAINT
constraint_name ] DEFAULT
constant_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.
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.
- Hasilkan 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_name RANGE
[ | LEFT
RIGHT
] 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 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 RIGHT RANGE 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. |
Misalnya, lihat Membuat tabel yang dipartisi.
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. Untuk infomrasi selengkapnya tentang indeks penyimpan kolom berkluster yang diurutkan di Azure Synapse Analytics, lihat Penyetelan Performa dengan Indeks Penyimpan Kolom Berkluster Yang Diurutkan.
CCI yang diurutkan dapat dibuat pada kolom jenis data apa pun yang didukung di Azure Synapse Analytics kecuali untuk kolom string.
Pengguna dapat mengkueri column_store_order_ordinal
kolom di sys.index_columns
untuk kolom atau kolom tempat tabel diurutkan, 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 float Azure Synapse Analytics 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 nyata adalah float(24).
decimal
[ ( presisi [ , skala ] ] ] | numeric
[ ( presisi [ , skala ] ]
Menyimpan presisi tetap dan angka skala.
presisi
Jumlah total maksimum digit desimal yang dapat disimpan, di salah satu sisi titik desimal. Presisi harus berupa nilai dari 1
melalui presisi 38
maksimum . Presisi defaultnya adalah 18
.
sisik
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 1
bulat yang dapat mengambil nilai , , 0
atau '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
) ] Data karakter Unicode 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. Panjangnya max
hanya berlaku untuk Azure Synapse Analytics.
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
) ] 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. Panjangnya max
hanya berlaku untuk Azure Synapse Analytics.
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
) ] 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. Panjangnya max
hanya berlaku untuk Azure Synapse Analytics.
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 databaseALTER SCHEMA
izin pada skema 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 CONTROL
izin , , INSERT
SELECT
, dan UPDATE
pada tabel .
Keterangan
Untuk batas minimum dan maksimum di Azure Synapse Analytics, 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 di Azure Synapse Analytics, lihat Tabel partisi 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:
- Apa yang baru dalam indeks penyimpan kolom
- Mengindeks tabel di Azure Synapse Analytics
- Indeks Penyimpan Kolom: Ringkasan
Batasan
- 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.
Partitions
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
, danREVOKE
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 , mycolumn1
memiliki 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. Timbunan 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 RANGE LEFT
partisi 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'
))
);
Konten terkait
Berlaku untuk: Gudang 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 dropdown versi.
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 | MAX ) ]
| char [ ( n ) ]
| varbinary [ ( n | MAX ) ]
| 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. Untuk informasi selengkapnya, lihat Jenis data di Microsoft Fabric.
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 float Azure Synapse Analytics 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 nyata adalah float(24).
decimal
[ ( presisi [ , skala ] ] ] | numeric
[ ( presisi [ , skala ] ]
Menyimpan presisi tetap dan angka skala.
presisi
Jumlah total maksimum digit desimal yang dapat disimpan, di salah satu sisi titik desimal. Presisi harus berupa nilai dari 1
melalui presisi 38
maksimum . Presisi defaultnya adalah 18
.
sisik
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 1
bulat yang dapat mengambil nilai , , 0
atau '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 | MAX
) ] 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
. Kolom varchar(MAX)
dapat menyimpan hingga 1 MB teks di Gudang.
Catatan
varchar(MAX)
sedang dalam pratinjau di Gudang. Untuk informasi selengkapnya, lihat Jenis data di Microsoft Fabric.
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 | MAX
) ] 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.
Kolom varbinary(MAX)
dapat menyimpan hingga 1 MB data di Gudang.
Catatan
varbinary(MAX)
sedang dalam pratinjau di Gudang. Untuk informasi selengkapnya, lihat Jenis data di Microsoft Fabric.
uniqueidentifier
Adalah GUID 16 byte.
Izin
Izin di Microsoft Fabric berbeda dari izin Azure Synapse Analytics.
Pengguna harus menjadi anggota peran Admin, Anggota, atau Kontributor di ruang kerja Fabric.
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 1.024 kolom per tabel.
- Kolatasi default yang didukung di Gudang adalah
Latin1_General_100_BIN2_UTF8
. Anda juga dapat membuat gudang dengan kolater peka huruf besar/kecil (CI) - Latin1_General_100_CI_AS_KS_WS_SC_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.