视图

作者: 叶小溪 | 来源:发表于2020-03-20 04:28 被阅读0次

创建数据库

CREATE DATABASE chapter07;

选择数据库

USE chapter07;

创建数据表

CREATE TABLE student(
s_id INT(3),
name VARCHAR(20),
math FLOAT,
chinese FLOAT
);

插入数据

INSERT INTO student (s_id,name,math,chinese) VALUES
(1,'Tom',80,78),
(2,'Jack',70,80),
(3,'Lucy',97,95);

在单表上创建试图

1. 在student表上创建view_stu试图
CREATE VIEW view_stu AS SELECT math,chinese,math+chinese FROM student;
2. 在student表上创建一个名为view_stu2的视图,自定义字段名称
CREATE VIEW view_stu2(math,chin,sum) AS SELECT math,chinese,math+chinese FROM student;

创建数据表

CREATE TABLE stu_info(
s_id INT(3),
class VARCHAR(50),
addr VARCHAR(100)
);

插入数据

INSERT INTO stu_info (s_id,class,addr) VALUES
(1,'erban','anhui'),
(2,'sanban','chongqing'),
(3,'yiban','shandong');

在多表上创建视图

1. 创建stu_class视图
CREATE VIEW stu_class(id,name,glass) AS SELECT student.s_id,student.name,stu_info.class FROM student,stu_info WHERE student.s_id=stu_info.s_id;

查看视图

查看视图,是指查看数据库中已经存在的视图的定义。查看视图必须有SHOW VIEW的权限。
1. 使用DESC语句查看视图
使用DESC语句可以查看视图的字段信息,其中包括字段名、字段类型等信息。
DESC stu_class;
2. 使用SHOW TABLE STATUS语句查看视图
使用SHOW TABLE STATUS语句可以查看视图的基本信息。
SHOW TABLE STATUS LIKE 'stu_class' \G
3. 使用SHOW CREATE VIEW查看视图
使用SHOW CREATE VIEW语句不仅可以查看创建视图时的定义语句,还可以查看视图的字符编码。
SHOW CREATE VIEW stu_class \G

修改视图

所谓修改视图是指修改数据库中存在的视图的定义,比如,当基本表中的某些字段发生变化时,可以通过吸怪视图的方式来保持视图与基本表的一致性。

1.使用CREATE OR REPLACE VIEW语句修改视图
在使用CREATE OR REPLACE VIEW语句修改视图时,如果修改的视图存在,那么将使用修改语句对视图进行修改,如果视图不存在,那么将创建一个视图。
CREATE OR REPLACE VIEW view_stu AS SELECT * FROM student;
修改后的字段信息和student表中的字段信息完全相同。
2. 使用ALTER语句修改视图
ALTER VIEW view_stu AS SELECT chinese FROM student;
使用 ALTER语句修改后的view_stu视图中只剩下一个chinese字段。

更新视图

更新视图是指通过视图来更新、插入、删除基本表中的数据。因为视图是一个虚拟表,其中没有数据,当通过视图更新数据时其实实在更新基本表中的数据,如果对视图中的数据进行增加或者删除操作时,实际上就是在对其基本表中的数据进行增加或者删除操作。

1. 使用UPDATE语句更新视图
UPDATE view_stu SET chinese=100;

2. 使用INSERT语句更新视图
INSERT INTO student VALUES (4,'lILY',100,100);

3. 使用DELETE语句更新视图
DELETE FROM view_stu2 WHERE math=70;

4. 当视图中包含如下内容时,试图的更新操作将不能被执行
(1)视图中包含基本表中被定义为非空的列。
(2)在定义视图的SELECT语句后的字段列表中使用了数学表达式。
(3)在定义视图的SELECT语句后的字段列表中使用了聚合函数。
(4)在定义视图的SELECT语句中使用了DISTINCT,UNION,TOP,GROUP BY 或HAVING子句。

删除视图

当视图不再需要时,可以将其删除,删除视图时,只能删除视图的定义,不会删除数据。

1. 删除viwe_stu2视图
DROP VIEW IF EXISTS view_stu2;

相关文章

网友评论

      本文标题:视图

      本文链接:https://www.haomeiwen.com/subject/ookdyhtx.html