mysql視圖

視圖概念:

視圖是指計算機數據庫中的虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在數據庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。詳見 視圖 百度百科,其對視圖的分類和優點有詳細的解釋此處不再贅述。

視圖創建:

create view view_name as select 列1,列2, ...... from 表名
我們可以把視圖理解爲一個預先定義好的子查詢,比如上面的語句中,如果我們把create 換成select那就相當好理解了。
select * from select col_1,col_2 from tbl_1 as temp
而事實上,視圖的工作原理與這種子查詢產生的臨時表是一樣的,只有在用到視圖的時候,纔會根據原表去動態生成虛擬表。所以視圖的數據會根據原表的數據變動而變動。

舉例

`create table employee (
id int primary key auto_increment,
name varchar(20) not null,
salary decimal(10,2) not null default 1000
);

create view v_emp as select id,name from employee;`
mysql> desc v_emp;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | 0 | |
| name | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
可以看到我們創建的視圖v_emp,成功的隱藏了員工的工資字段salary

視圖管理

刪除視圖

drop view [if exists] view_name

修改視圖

alter view v_view_name as select * from tbl_1

修改視圖結構

alter view v_view_name (col_1,col_2...) as select a,b from tbl_1
這樣不但可以對外隱藏表名還可以隱藏字段名。

注意

視圖對查詢操作支持的最好,對增刪改有一定的限制,比如多表聯合組成的視圖,而由單個表創建出的視圖在插入數據時,視圖中未包含的原表中的字段或者有默認值,或者允許爲空。這樣纔可以保證操作成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章