Membuat atau memperbarui view yang sudah ada berdasarkan pernyataan kueri.
Batasan
- View dapat mereferensikan view lain, tetapi tidak dapat mereferensikan dirinya sendiri. Referensi melingkar tidak didukung.
- Anda tidak dapat menulis data ke dalam view. Misalnya, pernyataan
INSERT INTOatauINSERT OVERWRITEtidak dapat dijalankan pada view.
Sintaksis
create [or replace] view [if not exists] <view_name>
[(<col_name> [comment <col_comment>], ...)]
[comment <view_comment>]
as <select_statement>;Parameter
| Parameter | Wajib | Deskripsi |
| or replace | Tidak | Parameter ini diperlukan ketika Anda ingin memperbarui view. |
| if not exists | Tidak | Jika Anda menjalankan pernyataan CREATE VIEW untuk membuat view yang sudah ada tanpa menentukan IF NOT EXISTS, maka akan dikembalikan pengecualian. Dalam kasus ini, Anda dapat menjalankan pernyataan CREATE OR REPLACE VIEW untuk membuat ulang view tersebut. Izin pada view tetap tidak berubah setelah view dibuat ulang. |
| view_name | Ya | Nama view yang ingin Anda buat atau perbarui. |
| col_name | Ya | Nama kolom dalam view yang ingin Anda buat. |
| col_comment | Tidak | Komentar untuk kolom dalam view yang ingin Anda buat. |
| view_comment | Tidak | Komentar untuk view yang ingin Anda buat. |
| select_statement | Ya | Klausa SELECT yang menyediakan sumber data untuk view. Anda harus memiliki izin baca pada tabel yang direferensikan oleh view tersebut. View hanya boleh berisi satu pernyataan SELECT yang valid. |
Catatan Setelah view dibuat atau diperbarui, view tersebut mungkin menjadi tidak dapat diakses jika tabel yang direferensikannya diubah—misalnya, jika tabel tersebut dihapus. Anda harus memastikan pemetaan antara tabel yang direferensikan dan view tetap terjaga.
Contoh
- Contoh 1: Membuat view sale_detail_view berdasarkan tabel sale_detail.
create view if not exists sale_detail_view (store_name, customer_id, price, sale_date, region) comment 'a view for table sale_detail' as select * from sale_detail; - Contoh 2: Memperbarui view sale_detail_view berdasarkan tabel sale_detail.
create or replace view if not exists sale_detail_view (store_name, customer_id, price) comment 'a view for table sale_detail' as select shop_name, customer_id, total_price from sale_detail;
Pernyataan terkait
- ALTER VIEW: Mengubah nama atau pemilik view yang sudah ada.
- DESC VIEW: Menampilkan informasi mengenai view yang sudah ada.
- DROP VIEW: Menghapus view yang sudah ada.