Bir sorgu ifadesine dayalı olarak view oluşturur veya mevcut bir view'ı günceller.
Sınırlamalar
View, diğer view'lara referans verebilir ancak kendisine referans veremez. Döngüsel referans desteklenmez.
View'a veri yazamazsınız. Örneğin, view üzerinde
INSERT INTOveyaINSERT OVERWRITEçalıştıramazsınız.
Söz Dizimi
create [or replace] view [if not exists] <view_name>
[(<col_name> [comment <col_comment>], ...)]
[comment <view_comment>]
as <select_statement>;
Parametreler
| Parametre | Zorunlu | Açıklama |
| or replace | Hayır | View'ı güncellemek istediğinizde bu parametre gereklidir. |
| if not exists | Hayır | Mevcut bir view'ı oluşturmak için CREATE VIEW ifadesini IF NOT EXISTS belirtmeden çalıştırırsanız özel durum döner. Bu durumda, view'ı yeniden oluşturmak için CREATE OR REPLACE VIEW ifadesini kullanabilirsiniz. View yeniden oluşturulduktan sonra view üzerindeki izinler değişmez. |
| view_name | Evet | Oluşturmak veya güncellemek istediğiniz view'ın adı. |
| col_name | Evet | Oluşturmak istediğiniz view'daki sütunların adları. |
| col_comment | Hayır | Oluşturmak istediğiniz view'daki sütunların açıklamaları. |
| view_comment | Hayır | Oluşturmak istediğiniz view'ın açıklaması. |
| select_statement | Evet | View'ın veri kaynağını sağlayan SELECT yan tümcesi. View'ın referans verdiği tablo üzerinde okuma iznine sahip olmanız gerekir. Bir view yalnızca tek bir geçerli SELECT ifadesi içerebilir. |
View oluşturulduktan veya güncellendikten sonra, referans aldığı tablo değiştirilirse (örneğin silinirse) view erişilemez hale gelebilir. Referans alınan tablolar ile view'lar arasındaki eşlemeleri korumanız gerekir.
Örnekler
-
Örnek 1: sale_detail tablosuna dayalı olarak sale_detail_view view'ını oluşturun.
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; -
Örnek 2: sale_detail tablosuna dayalı olarak sale_detail_view view'ını güncelleyin.
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;
İlgili ifadeler
ALTER VIEW: Mevcut bir view'ın adını veya sahibini değiştirir.
DESC VIEW: Mevcut bir view hakkında bilgileri görüntüler.
DROP VIEW: Mevcut bir view'ı siler.