sqlite 視圖
視圖(view)只不過是通過相關(guān)的名稱存儲(chǔ)在數(shù)據(jù)庫中的一個(gè) sqlite 語句。視圖(view)實(shí)際上是一個(gè)以預(yù)定義的 sqlite 查詢形式存在的表的組合。
視圖(view)可以包含一個(gè)表的所有行或從一個(gè)或多個(gè)表選定行。視圖(view)可以從一個(gè)或多個(gè)表創(chuàng)建,這取決于要?jiǎng)?chuàng)建視圖的 sqlite 查詢。、
視圖(view)是一種虛表,允許用戶實(shí)現(xiàn)以下幾點(diǎn):
- 用戶或用戶組查找結(jié)構(gòu)數(shù)據(jù)的方式更自然或直觀。
- 限制數(shù)據(jù)訪問,用戶只能看到有限的數(shù)據(jù),而不是完整的表。
- 匯總各種表中的數(shù)據(jù),用于生成報(bào)告。
sqlite 視圖是只讀的,因此可能無法在視圖上執(zhí)行 delete、insert 或 update 語句。但是可以在視圖上創(chuàng)建一個(gè)觸發(fā)器,當(dāng)嘗試 delete、insert 或 update 視圖時(shí)觸發(fā),需要做的動(dòng)作在觸發(fā)器內(nèi)容中定義。
1. 創(chuàng)建視圖
sqlite 的視圖是使用 create view 語句創(chuàng)建的。sqlite 視圖可以從一個(gè)單一的表、多個(gè)表或其他視圖創(chuàng)建。
create view 的基本語法如下:
create [temp | temporary] view view_name as select column1, column2..... from table_name where [condition];
您可以在 select 語句中包含多個(gè)表,這與在正常的 sql select 查詢中的方式非常相似。如果使用了可選的 temp 或 temporary 關(guān)鍵字,則將在臨時(shí)數(shù)據(jù)庫中創(chuàng)建視圖。
假設(shè) company 表有以下記錄:
id name age address salary ---------- ---------- ---------- ---------- ---------- 1 paul 32 california 20000.0 2 allen 25 texas 15000.0 3 teddy 23 norway 20000.0 4 mark 25 rich-mond 65000.0 5 david 27 texas 85000.0 6 kim 22 south-hall 45000.0 7 james 24 houston 10000.0
現(xiàn)在,下面是一個(gè)從 company 表創(chuàng)建視圖的范例。視圖只從 company 表中選取幾列:
sqlite> create view company_view as select id, name, age from company;
現(xiàn)在,可以查詢 company_view,與查詢實(shí)際表的方式類似。下面是范例:
sqlite> select * from company_view;
這將產(chǎn)生以下結(jié)果:
id name age ---------- ---------- ---------- 1 paul 32 2 allen 25 3 teddy 23 4 mark 25 5 david 27 6 kim 22 7 james 24
2. 刪除視圖
要?jiǎng)h除視圖,只需使用帶有 view_name 的 drop view 語句。drop view 的基本語法如下:
sqlite> drop view view_name;
下面的命令將刪除我們在前面創(chuàng)建的 company_view 視圖:
sqlite> drop view company_view;