View是一種虛擬的表,並沒有真的存在於資料庫中,表的內容來自於查詢其他的表(table),對使用者來說,不需要再擔心篩選條件,因為在建立View時都已經篩選好了,對於管理者來說也十分方便,只要利用View將使用者需要查看的資料選好,富有更多的安全性。
若在建立view時,使用以下語法將會無法更新或新增內容。
View有一個check的選項,可以選擇casaded或是Local,預設是casaded,那這是甚麼功用呢,如果選擇casaded,要更新資料時,必須要滿足from中所有view的條件才可以更新,local則是只要滿足自己的條件。
我們直接來測試看看有哪裡不一樣呢?
查看原始資料
mysql> select * from t1;
建立第一層view
Show tables會顯示view名稱
mysql> create view t1_view as
-> select * from t1 where id<5;
mysql> show tables;
查看t1_view
mysql> select * from t1_view;
建立第二層view使用check option local
mysql> create view t1_viewlocal as select * from t1_view where id>2 with local check option;
mysql> select * from t1_viewlocal;
建立第二層view使用check option cascade
mysql> create view t1_viewcascaded as select * from t1_view where idd>2 with cascaded check option;
mysql> select * from t1_viewcascaded;
再來我們在view(t1_viewlocal& t1_viewcascaded)新增一個id> 5的人員(不滿足t1_view條件)。
t1_viewlocal
mysql> insert into t1_viewlocal values(6,'john','msi');
能夠新增資料但在view無法查看,因為篩選條件id<5
t1_viewlcascaded
mysql> insert into t1_viewcascaded values(6,'john','msi');
因為不滿足t1_view條件,所以無法新增資料。
這樣大家對View有沒有稍微了解一點了呢!