视图
简单理解视图就是一张虚拟表,可以简化一些复杂查询语句 举个简单的例子来理解视图
视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;
视图创建后,可以使用与表相同的方式利用它们。
视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次order by将被覆盖。
创建视图:create view XXX as XXXXXXXXXXXXXX;
对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基表进行更新;
但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。
当前我有两张表
学生表 s_student
分数表 s_scroll
现在我想获得学生所有信息,sql语句
SELECT a.id,name,age,math,chinese from `s_student` as a LEFT JOIN `s_scroll` as b ON a.id = b.id order by b.science limit 3;
使用视图
创建视图
CREATE OR REPLACE VIEW get_student_scroll (id,name,age,math,chinese,english,science) //视图名字,前缀应该与普通表保持一致 (字段)
as SELECT
a.id,a.name,a.age,
b.math,b.chinese,b.english,b.science
FROM
(`s_student` as a LEFT JOIN `s_scroll` as b ON a.id = b.id)
order by b.science
limit 3;
使用视图
select * from `get_student_scroll`; //使用时把视图当做一般的表即可