MySQL学习笔记.视图的使用

视图概念

视图是从一个或者多个表中导出的,视图的行为与表非常类似,但视图是一个虚表。在视图中也可像表一样,可以使用INSERT,UPDATE,DELETE。
虚表,是从一个或几个基本表(或视图)导出的表。
数据库中只存放视图的定义,不存放视图对应的数据。
基表中的数据发生变化,从视图中查询出的数据也随之改变。

视图作用

1.简单化
视图不仅可以简化使用者对数据的理解,还可以简化对数据的操作
2.安全性
通过视图用户只能查询和修改他们所能见到的数据,数据库中其他的数据则是无法看到的,所以也无法修改,数据库授权命令可以使每个用户对数据库检索限制到特定的数据库对象上。通过视图,用户可以被限制在数据的不同子集上,这也就大大增强了数据库的安全性。
3.逻辑数据独立性
视图可以帮助用户屏蔽真实表结构变化带来的影响。

创建视图

语法格式

create view 视图名
AS
select 
from 
where 

准备数据
这里创建三张表,且已经添加过数据
在这里插入图片描述
创建一个性别为male的视图

create view view_male
AS
select *
from student
where sex='male';

在这里插入图片描述
这里会发现已经创建好了一个只有男性数据的视图,这就有效的保证了数据的安全性

查看视图

方法和查看表类似。SELECT * FROM 视图名;

更新视图

更新视图是指通过视图来插入,更新,删除表中的数据,因为视图是一个虚拟表,其中没有数据,通过视图更新的时候都是转到基本表中进行更新操作的,所以如果对视图进行增加删除记录的操作,实际上也对基本表进行了同样的操作。
1.修改操作
这里修改姓名为“zhangsan”的记录为“张三”

update view_male
set sname='张三'
where sname='zhangsan';
select * from view_male;

在这里插入图片描述
会发现“zhangsan”已经变为“张三”
在查询一下基本表
在这里插入图片描述
发现数据已经更新。
2.插入操作
这里以插入这样一条数据为例:'2017001001','刘备','male',30,'IS'

insert into view_male values('2017001001','刘备','male',30,'IS');

在这里插入图片描述
已经添加一条记录。
3.删除操作

DELETE from view_male where sno="2017001001";

在这里插入图片描述
OK,已经删除成功。

多表视图

1.两表视图
建立选修了1号课程的学生视图(包括学号,姓名,成绩)

create view view_c001(sno,sname,grade)
AS
select student.sno,sname,grade
from student,sc
where student.sno=sc.sno and cno='c001';
SELECT * from view_c001;

在这里插入图片描述
2.三表视图
建立一个视图,选修了数据结构的学生视图(学号,姓名,课程名称,成绩)

create view view_sg
as
select student.sno,sname,cname,grade
from student,course,sc
where student.sno=sc.sno and course.cno=sc.cno and cname='数据结构';

在这里插入图片描述
当然还可以在视图中创建视图。
例:在视图:view_sg中创建view_003,即创建学号小于2018001003的学号的视图。

create view view_003
as
select *
from view_sg
where sno<'2018001003';
SELECT * from view_003;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44862120/article/details/109579803