生态农业网站建设方案,深圳保障性住房房价一般是多少,以做网站为毕设,小程序注册开发流程一、什么是视图
视图是⼀个虚拟的表#xff0c;它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据#xff0c;⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间#xff0c;它仅…一、什么是视图
视图是⼀个虚拟的表它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间它仅仅是⼀个查询的逻辑表⽰物理上它依赖于基础表中的数 据。
二、创建视图
# 语法
CREATE VIEW view_name [(column_list)] AS select_statemen
三、使用视图
查询⽤⼾的所有信息和考试成绩
学生ID学生姓名所有班级名课程和对用的成绩
select s.student_id,s.name,cls.class_id,cls.name,c.course_id,c.name,sc.score
from student as s,class as cls,course as c,score as sc
where s.class_id cls.class_idand sc.student_id s.student_idand sc.course_id c.course_id
order by s.student_id;
1、定义视图
# 定义视图
create view v_student_score as
(
select s.student_id,s.name as student_name,cls.class_id,cls.name as class_name,c.course_id,c.name as course_name,sc.score
from student as s,class as cls,course as c,score as sc
where s.class_id cls.class_idand sc.student_id s.student_idand sc.course_id c.course_id
order by s.student_id); 执行代码时会出现异常 解决方法
分别对s.name、cls.name、c.name 起别名 # 定义视图
create view v_student_score as
(
select s.student_id,s.name as student_name,cls.class_id,cls.name as class_name,c.course_id,c.name as course_name,sc.score
from student as s,class as cls,course as c,score as sc
where s.class_id cls.class_idand sc.student_id s.student_idand sc.course_id c.course_id
order by s.student_id);
2、查看视图
show tables;
使用视图
show create view v_student_score;select * from v_student_score;
创建视图指定别名
create view v_student_score_v1(id, name, class_id, class_name, course_id, course_name, score)
as
(
select s.student_id,s.name,cls.class_id,cls.name,c.course_id,c.name,sc.score
from student as s,class as cls,course as c,score as sc
where s.class_id cls.class_idand sc.student_id s.student_id); 通过更新视图将分数改为80分
update v_student_score
set score80
where student_id 1and course_id 1; 注意事项
修改真实表会影响视图修改视图同样也会影响真实表 •
以下视图不可更新
1、创建视图时使⽤聚合函数的视图 ◦
2、创建视图时使⽤ DISTINCT ◦
3、创建视图时使⽤ GROUP BY 以及 HAVING ⼦句 ◦
4、创建视图时使⽤ UNION 或 UNION ALL ◦
5、查询列表中使⽤⼦查询 ◦
6、在FROM⼦句中引⽤不可更新视图
update v_student_score_v1 set score80 where id 1;select *from v_student_score_v1 order by id asc;select *from score where student_id 1; 不论是更新了视图还是基础表相互都会被影响查询出来的数据都是最新结果!
3、删除视图
# 语法
drop view view_name;
四、视图的优点
1. 简单性视图可以将复杂的查询封装成⼀个简单的查询。例如针对⼀个复杂的多表连接查询可 以创建⼀个视图⽤⼾只需查询视图⽽⽆需了解底层的复杂逻辑。
2. 安全性通过视图可以隐藏表中的敏感数据。例如⼀个系统的⽤⼾表中可以创建⼀个不包含 密码列视图普通⽤⼾只能访问这个视图⽽不能访问原始表。
3. 逻辑数据独⽴性视图提供了⼀种逻辑数据独⽴性即使底层表结构发⽣变化只需修改视图定 义⽽⽆需修改依赖视图的应⽤程序。使⽤到应⽤程序与数据库的解耦
4. 重命名列视图允许⽤⼾重命名列名以增强数据可读性。