SQLite 视图
视图仅仅是一个在数据库中存储的带有关联名称的SQLite语句。实际上,它是一个预定义SQLite查询形式的表的组合。
视图可以包含表中的所有行或来自一个或多个表的选定行。视图可以从一个或多个表创建,这取决于所编写的SQLite查询来创建视图。
虚拟表的视图允许用户:
- 以用户或用户组找到自然或直观的方式来组织数据。
-
限制用户访问数据,使其只能看到有限的数据量而不是完整表格。
-
从各种表格中进行数据总结,用于生成报表。
SQLite视图是只读的,因此不能在视图上执行DELETE、INSERT或UPDATE语句。但是,您可以在视图上创建一个触发器,该触发器在尝试删除、插入或更新视图时触发,并在触发器的主体中执行所需的操作。
创建视图
使用 CREATE VIEW 语句创建SQLite视图。SQLite视图可以创建单个表、多个表或另一个视图。
以下是基本的CREATE VIEW语法。
CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
您可以在SELECT语句中包含多个表,方式类似于在普通的SQL SELECT查询中使用它们。如果存在可选的TEMP或TEMPORARY关键字,该视图将在临时数据库中创建。
示例
假设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表创建视图的示例。此视图将仅包含COMPANY表中的少数列。
sqlite> CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM COMPANY;
您现在可以以与查询实际表相似的方式查询COMPANY_VIEW。以下是一个示例 –
sqlite> SELECT * FROM COMPANY_VIEW;
这将产生以下结果。
ID NAME AGE
---------- ---------- ----------
1 Paul 32
2 Allen 25
3 Teddy 23
4 Mark 25
5 David 27
6 Kim 22
7 James 24
删除视图
要删除一个视图,只需使用 DROP VIEW 语句和视图名称 view_name 。基本的 DROP VIEW 语法如下所示−
sqlite> DROP VIEW view_name;
以下命令将删除我们在上一节中创建的COMPANY_VIEW视图。
sqlite> DROP VIEW COMPANY_VIEW;