Sintaks SQL

String kueri SQL untuk Pemasang Windows dibatasi untuk format berikut.

Tindakan Kueri
Pilih sekelompok rekaman SELECT [DISTINCT]{column-list} FROM {table-list} [WHERE {operation-list}] [ORDER BY {column-list}]
Menghapus rekaman dari tabel HAPUS DARI {table} [WHERE {operation-list}]
Mengubah rekaman yang sudah ada dalam tabel UPDATE {table-list} SET {column}= {constant} [, {column}= {constant}][, ...] [WHERE {operation-list}] Kueri UPDATE hanya berfungsi pada kolom kunci nonprimary.
Menambahkan rekaman ke tabel INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]Data biner tidak dapat disisipkan ke dalam tabel secara langsung menggunakan kueri INSERT INTO atau UPDATE SQL. Untuk informasi selengkapnya, lihat Menambahkan Data Biner ke Tabel Menggunakan SQL.
Tambahkan tabel CREATE TABLE {table} ( {column} {column type}) [HOLD]Tipe kolom harus ditentukan untuk setiap kolom saat menambahkan tabel. Setidaknya satu kolom kunci primer harus ditentukan untuk pembuatan tabel baru. Kemungkinan substitusi untuk {column type} di atas adalah: CHAR [( {size} )] | CHARACTER [( {size} )] | LONGCHAR | SHORT | INT | BILANGAN BULAT | LONG | OBJECT [NOT NULL] [TEMPORARY] [LOCALIZABLE] [, column...] [, ...] Kolom KUNCI PRIMER [, kolom][, ...].
Menghapus tabel DROP TABLE {table}
Menambahkan kolom ALTER TABLE {table} ADD {column} {column type}Tipe kolom harus ditentukan saat menambahkan kolom. Kemungkinan substitusi untuk {column type} di atas adalah: CHAR [( {size} )] | CHARACTER [( {size} )] | LONGCHAR | SHORT | INT | BILANGAN BULAT | LONG | OBJECT [NOT NULL] [TEMPORARY] [LOCALIZABLE] [HOLD].
Menahan dan membebaskan tabel sementara ALTER TABLE {table name} HOLDALTER TABLE {table name} FREE
Pengguna dapat menggunakan perintah HOLD dan FREE untuk mengontrol masa pakai tabel sementara atau kolom sementara. Jumlah penangguhan pada tabel bertambah untuk setiap operasi SQL HOLD pada tabel tersebut dan dikurangi untuk setiap operasi SQL FREE pada tabel. Saat jumlah penahanan terakhir dirilis pada tabel, semua kolom sementara menjadi tidak dapat diakses. Jika semua kolom bersifat sementara, tabel menjadi tidak dapat diakses.

 

Untuk informasi selengkapnya, lihat Contoh Kueri Database Menggunakan SQL dan Skrip.

Tata Bahasa SQL

Parameter opsional ditampilkan diapit dalam tanda kurung [ ]. Saat beberapa pilihan dicantumkan, parameter opsional dipisahkan oleh bilah vertikal.

{constant} adalah string atau bilangan bulat. String harus diapit dalam tanda kutip tunggal 'contoh'. {constant-list} adalah daftar yang dibatasi koma dari satu atau beberapa konstanta.

Opsi LOCALIZABLE mengatur atribut kolom yang menunjukkan kolom perlu dilokalkan.

{column} adalah referensi kolom ke nilai dalam bidang tabel.

{marker} adalah referensi parameter ke nilai yang disediakan oleh rekaman yang dikirimkan dengan kueri. Ini diwakili dalam pernyataan SQL dengan tanda tanya ?. Untuk informasi mengenai penggunaan parameter, lihat fungsi MsiViewExecute atau metode Execute .

Sintaks SQL Penginstal Windows tidak mendukung pelepasan tanda kutip tunggal (nilai ASCII 39) dalam string literal. Namun, Anda dapat mengambil atau membuat catatan, mengatur bidang dengan properti StringData atau IntegerData , lalu memanggil metode Modifikasi . Atau, Anda dapat membuat rekaman dan menggunakan penanda parameter (?) yang dijelaskan dalam metode Jalankan . Anda juga dapat melakukan ini menggunakan fungsi database MsiViewExecute, MsiRecordSetInteger, dan MsiRecordSetString.

Klausa WHERE {operation-list} bersifat opsional dan merupakan pengelompokan operasi yang akan digunakan untuk memfilter pilihan. Operasi harus dari jenis berikut:

  • {column} = {column}
  • {column} = | <> | > | < | > = | <= {constant}
  • {column} = | <> | > | < | > = | <= {penanda}
  • {column} null
  • {column} tidak null

Untuk nilai string, hanya operasi = atau <> yang dimungkinkan. Perbandingan nilai objek terbatas pada IS NULL dan IS NOT NULL.

Operasi individual dapat dikelompokkan menurut operator AND atau OR. Pemesanan dapat diberlakukan dengan menggunakan tanda kurung ( ).

Klausa ORDER BY bersifat opsional dan menyebabkan penundaan awal selama pengurutan. Mengurutkan menurut string akan mengelompokkan string yang identik bersama-sama, tetapi tidak akan membuat abjad string.

Klausa DISTINCT bersifat opsional dan tidak mengulangi rekaman yang identik dalam tataan hasil yang dikembalikan.

{table-list} adalah daftar yang dibatasi koma dari satu atau beberapa nama tabel yang disebut sebagai {table} dalam gabungan.

{column-list} adalah daftar yang dibatasi koma dari satu atau beberapa kolom tabel yang disebut sebagai {column} dipilih. Kolom ambigu mungkin lebih memenuhi syarat sebagai {tablename.column}. Tanda bintang dapat digunakan sebagai daftar kolom dalam kueri SELECT untuk mewakili semua kolom dalam tabel yang dirujuk. Saat mereferensikan bidang menurut posisi kolom, pilih kolom menurut nama alih-alih menggunakan tanda bintang. Tanda bintang tidak dapat digunakan sebagai daftar kolom dalam kueri INSERT INTO.

Untuk menghindari nama tabel dan nama kolom yang berbenturan dengan kata kunci SQL, sertakan nama di antara dua tanda aksen kuburan '' (nilai ASCII 96). Jika nama kolom harus diloloskan dan memenuhi syarat sebagai {tablename.column}, maka tabel dan kolom harus diloloskan satu per satu sebagai {'tablename'.'column'}. Disarankan agar semua nama tabel dan nama kolom lolos dengan cara ini untuk menghindari bentrokan dengan kata-kata khusus dan mendapatkan performa yang signifikan.

Nama tabel dibatasi hingga 31 karakter. Untuk informasi selengkapnya, lihat Nama Tabel. Nama tabel dan kolom peka huruf besar/kecil. Kata kunci SQL tidak peka huruf besar/kecil.

Jumlah maksimum ekspresi dalam klausa WHERE dari kueri SQL dibatasi hingga 32.

Hanya gabungan dalam yang didukung dan ditentukan oleh perbandingan kolom dari tabel yang berbeda. Gabungan melingkar tidak didukung. Gabungan melingkar adalah kueri SQL yang menautkan tiga tabel atau lebih bersama-sama ke dalam sirkuit. Misalnya, berikut ini adalah gabungan melingkar:

WHERE Table1.Field1=Table2.Field1 AND Table2.Field2=Table3.Field1 AND Table3.Field2=Table1.Field2.

Kolom yang merupakan bagian dari kunci primer untuk tabel harus ditentukan terlebih dahulu dalam urutan prioritas, diikuti oleh kolom kunci nonprimary apa pun. Kolom persisten harus ditentukan sebelum kolom sementara. Urutan pengurutan kolom teks tidak ditentukan; namun, nilai teks yang identik selalu dikelompokkan bersama.

Perhatikan bahwa saat menambahkan atau membuat kolom, Anda harus menentukan jenis kolom.

Tabel tidak boleh berisi lebih dari satu kolom jenis 'objek'.

Ukuran maksimum yang dapat ditentukan secara eksplisit untuk kolom string dalam kueri SQL adalah 255. Kolom string dengan panjang tak terbatas direpresentasikan sebagai memiliki ukuran 0. Untuk informasi selengkapnya, lihat Format Definisi Kolom.

Untuk menjalankan pernyataan SQL apa pun, tampilan harus dibuat. Namun, tampilan yang tidak membuat kumpulan hasil, seperti CREATE TABLE, atau INSERT INTO, tidak dapat digunakan dengan MsiViewModify atau metode Modifikasi untuk memperbarui tabel melalui tampilan.

Perhatikan bahwa Anda tidak dapat mengambil rekaman yang berisi data biner dari satu database lalu menggunakan rekaman tersebut untuk menyisipkan data ke dalam database yang sama sekali berbeda. Untuk memindahkan data biner dari satu database ke database lain, Anda harus mengekspor data ke file lalu mengimpornya ke database baru melalui kueri dan fungsi MsiRecordSetStream . Ini memastikan bahwa setiap database memiliki salinan data biner sendiri.