SQL 知识量:22 - 44 - 129
视图是虚拟的表,它并不是真实存在于数据库的表,视图本质上是检索数据时动态构建的查询。
例如:查询学生信息及选课信息,按照学生姓名排序。
select student.*,lesson.name as lname from student,lesson,course where student.id=course.id_student and lesson.id=course.id_lesson order by student.name;
结果:
+----+-------+-----+--------+---------+ | id | name | age | sex | lname | +----+-------+-----+--------+---------+ | 3 | Bob | 11 | male | English | | 2 | Jame | 12 | male | Natural | | 2 | Jame | 12 | male | Maths | | 5 | Jen | 11 | female | English | | 5 | Jen | 11 | female | Natural | | 4 | Robot | 10 | male | Natural | | 4 | Robot | 10 | male | Maths | | 4 | Robot | 10 | male | English | | 1 | Susan | 11 | female | Maths | | 1 | Susan | 11 | female | English | | 6 | Toney | 10 | male | Natural | | 6 | Toney | 10 | male | Maths | +----+-------+-----+--------+---------+
如果将以上查询包装成对一个虚拟表(例如:取名为A)的查询,一切就简单了。
select * from A;
A实际替换的是一个复杂的联结查询,视图就是查询,这就是视图的本质。
注意:Microsoft Access不支持视图。
视图的作用,即优点主要有以下几点:
可以重用SQL语句。
可以简化复杂的SQL操作,可以方便的使用,而不需要关心实现的细节。
可以使用表的一部分而不是全部。
可以保护数据。
可以更改数据格式和表示,即可以返回与底层表的格式和表示不同的数据。
创建视图后,就可以像使用其他数据表一样使用视图。重要的一点是,视图只是用来查看存储在别处数据的一种工具,它本身不包含数据,只是一些查询语句,返回的是其他表中检索的数据。因此,如果改变了那些表的数据,视图返回的数据也会改变。
视图的常见规则和限制如下:
视图的名称必须唯一(与表的名称也不能重复)。
创建视图的数量没有限制。
要创建视图,必须要有足够的权限。视图包含的SQL操作必须全部获得授权。
视图可以嵌套。
许多DBMS禁止在视图查询中使用order by子句。
有些DBMS要求对返回的所有列进行命名,如果是计算字段,则需要使用别名。
视图不能索引,也不能有关联的触发器或默认值。
有些DBMS规定,视图是只读的。
有些DBMS要求,不能做出导致行不再属于视图的操作。
每种DBMS对于视图的规定存在差异,使用时还需参阅具体文档。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6