USE - Amazon Redshift

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

USE

Mengubah database tempat kueri berjalan. SHOW USE menunjuk ke database yang terakhir digunakan dengan perintah USE. RESET USE me-reset database yang digunakan. Ini berarti bahwa jika database tidak ditentukan dalam SQL, objek dicari dalam database saat ini.

Sintaksis

USE database

Contoh

Misalkan ada tiga database, dev danpdb, danpdb2. Biarkan ada dua tabel t dalam skema publik dari masing-masing database. Pertama, masukkan data ke dalam tabel di berbagai database:

dev=# insert into dev.public.t values (1); INSERT 0 1 dev=# insert into pdb.public.t values (2); INSERT 0 1

Tanpa secara eksplisit mengatur database, sistem menggunakan database Anda yang terhubung. Periksa konteks database Anda saat ini:

dev=# show use; Use Database (1 row) dev=> show search_path; search_path $user, public (1 row)

Saat menanyakan tabel t tanpa menentukan database, sistem menggunakan tabel dalam database Anda saat ini:

dev=# select * from t; c ---- 1 (1 row)

Gunakan use perintah untuk beralih database tanpa mengubah koneksi Anda:

dev=# use pdb; USE dev=# show use; Use Database -------------- pdb (1 row) dev=# select * from t; id ---- 2 (1 row)

Anda juga dapat secara eksplisit menentukan skema:

dev=# select * from public.t; id ---- 2 (1 row)

Anda sekarang dapat membuat tabel dalam skema yang berbeda dalam database Anda saat ini:

dev=# create table s1.t(id int); CREATE TABLE dev=# insert into pdb.s1.t values (3); INSERT 0 1

Jalur pencarian menentukan objek skema mana yang diakses saat Anda tidak menentukan skema:

dev=# set search_path to public, s1; SET dev=# select * from t; id ---- 2 (1 row)

Ubah urutan skema untuk mengakses tabel yang berbeda:

dev=# set search_path to s1, public; SET dev=# show search_path; search_path ------------- s1, public (1 row) dev=# select * from t; id ---- 3 (1 row)

Beralih ke database lain sambil mempertahankan koneksi asli Anda:

dev=# show use; Use Database -------------- pdb (1 row) dev=# use pdb2; USE dev=# show use; Use Database -------------- pdb2 (1 row)

Saat beralih database, jalur pencarian disetel ulang ke default:

dev=# show search_path; search_path --------------- $user, public (1 row)

Buat tabel dan masukkan data dalam database Anda saat ini:

dev=# create table pdb2.public.t(id int); CREATE TABLE dev=# insert into pdb2.public.t values (4); INSERT 0 1 dev=# select * from t; id ---- 4 (1 row)

Dalam transaksi, Anda dapat menulis ke database saat ini dan membaca dari database apa pun menggunakan notasi tiga bagian. Ini juga termasuk database yang terhubung:

dev=# show use; Use Database -------------- pdb2 (1 row) dev=# BEGIN; BEGIN dev=# select * from t; id ---- 4 (1 row) dev=# insert into t values (5); INSERT 0 1 dev=# select * from t; id ---- 4 5 (2 rows) dev=# select * from pdb.public.t; id ---- 2 (1 row) dev=# select * from dev.public.t; id ---- 1 (1 row)

Setel ulang ke database Anda yang terhubung. Perhatikan bahwa ini tidak hanya kembali ke database yang digunakan sebelumnyapdb, tetapi mengatur ulang ke database yang terhubung. Jalur pencarian juga berubah ke jalur default:

dev=# RESET USE; RESET dev=# select * from t; c ---- 1 (1 row) dev=# show use; Use Database -------------- (1 row) dev=# show search_path; search_path --------------- $user, public (1 row)

Anda dapat mengubah database pada awal transaksi, tetapi tidak setelah menjalankan kueri:

dev=# BEGIN; BEGIN dev=# use pdb; USE dev=# use pdb2; USE dev=# use pdb; USE dev=# select * from t; id ---- 2 (1 row) dev=# use pdb2; ERROR: USEd Database cannot be set or reset inside a transaction after another command. dev=# rollback; ROLLBACK (1 row)

Contoh Katalog Data

Pertama, buat tabel dalam skema dan katalog yang berbeda untuk mendemonstrasikan kueri lintas katalog. Mulailah dengan membuat tabel di database yang terhubung.

dev=# CREATE TABLE dev.public.t (col INT); dev=# INSERT INTO dev.public.t VALUES (1); dev=# CREATE SCHEMA write_schema; dev=# CREATE TABLE dev.write_schema.t (state char (2)); dev=# INSERT INTO dev.write_schema.t VALUES ('WA');

Sekarang, buat tabel serupa di katalog yang berbeda. Ini menunjukkan cara bekerja dengan database lintas katalog.

dev=# CREATE TABLE my_db@my_catalog.public.t (col INT); dev=# INSERT INTO my_db@my_catalog.public.t VALUES (100); dev=# CREATE SCHEMA my_db@my_catalog.write_schema; dev=# CREATE TABLE my_db@my_catalog.write_schema.t (state char (2)); dev=# INSERT INTO my_db@my_catalog.write_schema.t VALUES ('CA');

Periksa konteks database saat ini. Tanpa secara eksplisit mengatur database, sistem menggunakan database yang terhubung.

dev=# SHOW USE; Use Database -------------- (1 row) dev=# SHOW search_path; search_path --------------- $user, public (1 row) dev=# SELECT * FROM t; col ----- 1 (1 row)

Mengatur USEd database untuk query tabel dalam katalog yang berbeda.

dev=# USE my_db@my_catalog; dev=# SHOW USE; Use Database ------------------------------------- my_db@my_catalog (1 row) dev=# SHOW search_path; search_path --------------- $user, public (1 row)

Saat menanyakan tabel t, hasil berasal dari database lintas katalog.

dev=# SELECT * FROM t; col ----- 100 (1 row) dev=# SELECT * FROM public.t; col ----- 100 (1 row) dev=# SELECT * FROM my_db@my_catalog.public.t; col ----- 100 (1 row)

Ubah jalur pencarian untuk mengakses tabel dalam skema yang berbeda dalam USEd database.

dev=# SET search_path to write_schema; dev=# SHOW search_path; search_path -------------- write_schema (1 row) dev=# SELECT * FROM t; state ------- CA (1 row) dev=# SELECT * FROM write_schema.t; state ------- CA (1 row) dev=# SELECT * FROM my_db@my_catalog.write_schema.t; state ------- CA (1 row)

Meskipun USE diatur ke database lintas katalog, masih mungkin untuk secara eksplisit menanyakan database asli.

dev=# SELECT * FROM dev.write_schema.t; state ------- WA (1 row)

Setel ulang USEd database untuk kembali merujuk ke objek dalam database yang terhubung.

dev=# RESET USE; dev=# SHOW USE; Use Database -------------- (1 row)

Perhatikan bahwa search_path disetel ulang saat USE disetel ulang.

dev=# SHOW search_path; search_path --------------- $user, public (1 row)

Setelah mengatur ulang, kueri sekarang merujuk ke database terhubung asli.

dev=# SELECT * FROM t; col ----- 1 (1 row) dev=# SELECT * FROM public.t; col ----- 1 (1 row) dev=# SELECT * FROM dev.public.t; col ----- 1 (1 row)

Anda dapat memodifikasi jalur pencarian di database asli untuk mengakses skema yang berbeda.

dev=# SET search_path to write_schema; dev=# SHOW search_path; search_path -------------- write_schema (1 row) dev=# SELECT * FROM t; state ------- WA (1 row) dev=# SELECT * FROM write_schema.t; state ------- WA (1 row) dev=# SELECT * FROM dev.write_schema.t; state ------- WA (1 row)