基於查詢語句建立視圖或更新已存在的視圖。
使用限制
- 視圖可以引用其它視圖,但不能引用自己,也不能循環參考。
- 不允許向視圖寫入資料,例如使用
insert into
或者insert overwrite
操作視圖。
命令格式
create [or replace] view [if not exists] <view_name>
[(<col_name> [comment <col_comment>], ...)]
[comment <view_comment>]
as <select_statement>;
參數說明
參數 | 是否必選 | 說明 |
or replace | 否 | 更新視圖需要攜帶該欄位。 |
if not exists | 否 | 如果沒有指定if not exists,在視圖已經存在時用create view 會導致異常。這種情況可以用create or replace view 重建視圖,重建後視圖本身的許可權保持不變。 |
view_name | 是 | 待建立或更新的視圖的名稱。 |
col_name | 是 | 待建立視圖包含的列名稱。 |
col_comment | 否 | 待建立視圖的列的注釋。 |
view_comment | 否 | 待建立視圖的注釋。 |
select_statement | 是 | select 查詢語句,是視圖的資料來源,您必須有視圖所參考資料表的讀許可權。視圖只能包含一個有效select 語句。 |
說明 建立或更新好視圖後,如果視圖引用的表發生了變更,有可能導致視圖無法訪問,例如刪除了引用的表。您需要自我維護參考資料表及視圖之間的對應關係。
使用樣本
- 樣本1:基於表sale_detail建立視圖sale_detail_view。
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;
- 樣本2:基於表sale_detail更新視圖sale_detail_view。
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;
相關命令
- ALTER VIEW:修改已建立視圖的名稱或所有人。
- DESC VIEW:查看已建立的視圖的資訊。
- DROP VIEW:刪除已建立的視圖。