admin 管理员组

文章数量: 887021

mysql 视图

视图

1、形象:视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
例如:
在实际工作中,企业的员工信息表存放了企业所以员工的详细信息,不同职位的人员对表中查询的数据可能不同。

2、具体:视图是从一个或几个基本表(或视图)导出的表。
区别:它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。

3、如何创建和使用视图:

(1)使用SQL语句创建视图
使用SQL语句创建视图的语法格式:

Create view [if exists] 视图名(vi_名字,view_名字)
As
<select语句>;

例1:创建成绩>90的视图 vi_degree,再在该视图中查询>95的成绩信息(sc)

create view view_成绩大于90 as select * from sc where degree>90;

例2:创建女生视图vi_girls,再在该视图中查询张姓的同学(student)

create view view_girls as select * from student where ssex="女”;

注意点:
1、视图中查询不到数据,可能创建视图的条件中使用的字段的字符集为utf8.将utf8字符集改为gbk或直接删掉;
如:用alter 命令更改某列的字符集
alter table student modify ssex varchar(2) charset gbk not null;
2、视图名:一般以view_xxx或v_xxx的样式来命名;
3、如果有同名的视图,需要先删除,再创建。

(2)使用SQL语句删除视图

Drop view [IF EXISTS] 视图名;
Drop view if exists view_student;

(3)使用SQL语句查看视图数据
使用SQL语句查看视图的语法格式如下:

Select字段1,字段2,……字段n from view_name;

查看数据库中已存在的视图:

SELECT * FROM information_schema.views;select table_name,table_schema from information_schema.views;
show create view 视图名#

题型综合:
(1)创建成绩不及格的学生的视图,并在该视图中查找学生的系别;

create view view_成绩不及格 as select * from sc where degree<60;

(2)创建一个选修了”高等数学”的学生的学号,名字,系别的视图;
修改字符集:alter table 表名 modify 字段名 数据类型 charset 字符集;

create view view_选修了高等数学 as select sno,sname,sdept from sc where cno="高等数学";

(3)视图和表的关系
a、对原表的修改肯定会影响到视图
例1:创建的女生视图vi_girls,将”李静”改为”李静静”,然后查看视图

b、对视图的修改也可以影响到原表
例2:创建的女生视图vi_girls,向view_girls插入新的记录
(sno,sname,ssex)值为(”2019010101”,”小红”,”女”);
(sno,sname)值为(“2019010101”,”小芳”);

c、并不是所有的视图都可以修改
例:创建一个包含学号、姓名、课程名、成绩,取成绩的前10名的视图vi_student_2.
删除上述视图中的最后一条记录,查看能否成功?

本文标签: mysql 视图