龙空技术网

MySql学习笔记27——视图view

包家三少 157

前言:

当前我们对“mysql视图能增删改吗”大致比较关心,我们都想要学习一些“mysql视图能增删改吗”的相关知识。那么小编在网络上网罗了一些关于“mysql视图能增删改吗””的相关文章,希望咱们能喜欢,兄弟们一起来学习一下吧!

视图: MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sq|逻辑,不保存查询结果

应用场景

多个地方用到同样的查询结果该查询结果使用的sql语句较复杂

视图的优点

重用sql语句简化复杂的sql操作,不必知道它的查询细节保护数据,提高安全性

视图与表的对比

创建语法关键字

是否实际占用物理空间

使用

视图

create view

只是保存了sql逻辑

增删改查,一般不使用增删改

create table

保存了数据

增删改查

创建视图

语法:

create view视图名

as

查询语句;

student表

id

name

sex

age

subject

score

teacher_id

1

张三

15

语文

80

1

2

李四

15

语文

85

1

3

王二

16

语文

65

2

4

张三

15

英语

86

3

5

李四

15

英语

77

3

6

王二

16

英语

56

4

7

张三

15

数学

98

5

8

李四

15

数学

76

6

9

王二

16

数学

54

6

teacher表

id

name

sex

age

1

张行

45

2

柳青青

35

3

杨逍遥

27

4

胡月华

55

5

李丽

38

6

王志杰

41

案例:查询每个学生对应科目的教师名

#创建视图

create view v1

as

select s.name s_name ,s.subject,t.name t_name from student s

inner join teacher t

on s.teacher_id = t.id

#使用视图:查询张三的语文老师姓名

select teacher_name from v1

where name ='张三' and subject ='语文'

视图的修改

方式一:(SQL SERVER 不支持)

create or replace view 视图名

as

查询语句; .

案例:

#修改视图

create or replace view v1

as

select s.id s_id ,s.name s_name ,s.subject,t.id t_id,t.name t_name from student s

inner join teacher t

on s.teacher_id = t.id

#方式二:

alter view 视图名

as

查询语句;

案例:

#修改视图

alter view v1

as

select s.id s_id ,s.name s_name ,s.subject,t.id t_id,t.name t_name from student s

inner join teacher t

on s.teacher_id = t.id

删除视图

drop view视图名,视图名,...;

视图的更新

视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的。

包含以下关键字的sql语句:分组函数、distinct、 group by、having、 union或者union all

常量视图

Select中包含子查询

join

from一个不能更新的视图

where子句的子查询引用了from子句中的表

标签: #mysql视图能增删改吗