Nama dan pengidentifikasi - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Nama dan pengidentifikasi

Nama mengidentifikasi objek database, termasuk tabel dan kolom, serta pengguna dan kata sandi. Istilah nama dan pengenal dapat digunakan secara bergantian. Ada dua jenis pengidentifikasi, pengidentifikasi standar dan pengidentifikasi yang dikutip atau dibatasi. Pengidentifikasi harus terdiri dari hanya karakter UTF-8 yang dapat dicetak. Huruf ASCII dalam pengidentifikasi standar dan terbatas tidak peka huruf besar/kecil dan dilipat menjadi huruf kecil dalam database. Dalam hasil kueri, nama kolom dikembalikan sebagai huruf kecil secara default. Untuk mengembalikan nama kolom dalam huruf besar, atur parameter describe_field_name_in_uppercase konfigurasi ke. true

Pengidentifikasi standar

Pengidentifikasi SQL standar mematuhi seperangkat aturan dan harus:

  • Mulailah dengan karakter alfabet satu byte ASCII atau karakter garis bawah, atau karakter multibyte UTF-8 dengan panjang dua hingga empat byte.

  • Karakter berikutnya dapat berupa karakter alfanumerik byte tunggal ASCII, garis bawah, atau tanda dolar, atau karakter multibyte UTF-8 dengan panjang dua hingga empat byte.

  • Panjangnya antara 1 dan 127 byte, tidak termasuk tanda kutip untuk pengidentifikasi yang dibatasi.

  • Tidak mengandung tanda kutip dan tidak ada spasi.

  • Tidak menjadi kata kunci SQL yang dicadangkan.

Pengidentifikasi yang dibatasi

Pengidentifikasi yang dibatasi (juga dikenal sebagai pengidentifikasi yang dikutip) dimulai dan diakhiri dengan tanda kutip ganda (“). Jika Anda menggunakan pengidentifikasi terbatas, Anda harus menggunakan tanda kutip ganda untuk setiap referensi ke objek itu. Pengidentifikasi dapat berisi karakter standar UTF-8 yang dapat dicetak selain tanda kutip ganda itu sendiri. Oleh karena itu, Anda dapat membuat nama kolom atau tabel yang menyertakan karakter ilegal, seperti spasi atau simbol persen.

Huruf ASCII dalam pengidentifikasi yang dibatasi tidak peka huruf besar/kecil dan dilipat menjadi huruf kecil. Untuk menggunakan tanda kutip ganda dalam string, Anda harus mendahuluinya dengan karakter tanda kutip ganda lainnya.

Pengidentifikasi peka huruf besar/kecil

Pengidentifikasi case-sensitive (juga dikenal sebagai pengidentifikasi huruf campuran) dapat berisi huruf besar dan kecil. Untuk menggunakan pengidentifikasi peka huruf besar/kecil, Anda dapat mengatur konfigurasi ke. enable_case_sensitive_identifier true Anda dapat mengatur konfigurasi ini untuk cluster atau untuk sesi. Untuk informasi selengkapnya, lihat Nilai parameter default di Panduan Manajemen Amazon Redshift dan. enable_case_sensitive_identifier

Nama kolom sistem

Nama kolom sistem PostgreSQL berikut tidak dapat digunakan sebagai nama kolom di kolom yang ditentukan pengguna. Untuk informasi lebih lanjut, lihat https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html.

  • oid

  • tableoid

  • xmin

  • cmin

  • xmax

  • cmax

  • ctid

Contoh

Tabel ini menunjukkan contoh pengidentifikasi yang dibatasi, output yang dihasilkan, dan diskusi:

Sintaks Hasil Diskusi
“kelompok” grup GROUP adalah kata yang dicadangkan, jadi penggunaannya dalam pengenal memerlukan tanda kutip ganda.
“" "DIMANA" "” “di mana” WHERE juga merupakan kata yang dicadangkan. Untuk menyertakan tanda kutip dalam string, lepaskan setiap karakter tanda kutip ganda dengan karakter tanda kutip ganda tambahan.
“Nama ini” nama ini Tanda kutip ganda diperlukan untuk melestarikan ruang.
“Ini “" ADALAH ITU" "” ini “apakah itu” Tanda kutip di sekitar IS IT masing-masing harus didahului dengan tanda kutip tambahan untuk menjadi bagian dari nama.

Untuk membuat tabel bernama grup dengan kolom bernama ini “is it”:

create table "group" ( "This ""IS IT""" char(10));

Kueri berikut mengembalikan hasil yang sama:

select "This ""IS IT""" from "group"; this "is it" -------------- (0 rows)
select "this ""is it""" from "group"; this "is it" -------------- (0 rows)

table.columnSintaks yang sepenuhnya memenuhi syarat berikut juga mengembalikan hasil yang sama:

select "group"."this ""is it""" from "group"; this "is it" -------------- (0 rows)

Perintah CREATE TABLE berikut membuat tabel dengan garis miring dalam nama kolom:

create table if not exists city_slash_id( "city/id" integer not null, state char(2) not null);