視圖只不過是數(shù)據(jù)庫中存儲的帶有相關(guān)名稱的 SQLite 語句。它實(shí)際上是一個(gè)預(yù)定義 SQLite 查詢形式的表的組合。
一個(gè)視圖可以包含一個(gè)表的所有行或一個(gè)或多個(gè)表中的選定行??梢詮囊粋€(gè)或多個(gè)表創(chuàng)建視圖,這取決于編寫的SQLite查詢來創(chuàng)建視圖。
作為虛擬表的視圖允許用戶-
以用戶或用戶類別自然或直觀的方式來構(gòu)造數(shù)據(jù)。
限制對數(shù)據(jù)的訪問,以便用戶只能看到有限的數(shù)據(jù),而不是完整的表。
匯總各種表中的數(shù)據(jù),這些數(shù)據(jù)可用于生成報(bào)告。
SQLite視圖是只讀的,因此您可能無法在視圖上執(zhí)行DELETE,INSERT或UPDATE語句。但是,您可以在視圖上創(chuàng)建觸發(fā)器,該觸發(fā)器將在嘗試刪除,插入或更新視圖時(shí)觸發(fā),并在觸發(fā)器主體中執(zhí)行所需的操作。
使用CREATE VIEW語句創(chuàng)建SQLite視圖??梢詮囊粋€(gè)表,多個(gè)表或另一個(gè)視圖創(chuàng)建SQLite視圖。
以下是基本的CREATE VIEW語法。
CREATE [TEMP | TEMPORARY] VIEW view_name ASSELECT column1, column2.....FROM table_nameWHERE [condition];
您可以像在普通SQL SELECT查詢中使用多個(gè)表一樣,在SELECT語句中包括多個(gè)表。如果存在可選的TEMP或TEMPORARY關(guān)鍵字,則將在temp數(shù)據(jù)庫中創(chuàng)建該視圖。
帶有以下記錄的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
以下是從COMPANY表創(chuàng)建視圖的示例。該視圖將僅用于COMPANY表中的幾列。
sqlite> CREATE VIEW COMPANY_VIEW AS SELECT ID, NAME, AGE FROM COMPANY;
現(xiàn)在,您可以通過查詢實(shí)際表的類似方式查詢COMPANY_VIEW。以下是一個(gè)實(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
要?jiǎng)h除視圖,只需將DROP VIEW語句與一起使用view_name?;镜腄ROP VIEW語法如下-
sqlite> DROP VIEW view_name;
以下命令將刪除我們在上一節(jié)中創(chuàng)建的COMPANY_VIEW視圖。
sqlite> DROP VIEW COMPANY_VIEW;