视图

视图(view):是一种有结构,但是没结果的虚拟表

创建视图

基本语法:create view 视图名字 as select 语句;

创建单表视图:基表只有一个

创建多表视图:基表来源至少两个

视图:单表和多表

create view my_v1 as

select * from my_student;

create view my_v2 as

select * from my_class;

create view my_v3 as

select * from my_student as a left join my_class as

c on s.c_id=c.id;-- 错误,id重复

多表

create view my_v3 as

select s.*,c.c_name,c.room from my_student as s

join my_class as c on s.c_id=c.id;

查看视图

show tables [like] / desc 视图名 / show create table 视图名;

-- c查看视图创建语句

show create view my_v3\G(\G横向查看)

修改视图

alter view 视图名字 as 新的select语句;

alter view my_v1 as

select id,name,age,sex,height,c_id from my_student;

删除视图

drop view 视图名字;

drop view my_v4;

视图数据操作

新增数据

多表视图不能新增数据

可以向单表视图插入数据

insert into my_v2 values(3,'Python1910','A204');

视图中包含的字段必须有基表中所有不能为空、或没有默认值的字段

insert into my_v1 values(null,'陈立农',130,'男',183,3);

视图是可以向基表插入数据的

删除数据

多表视图不能删除数据

delete from my_v3 where id=1;

单表视图可以删除数据

delete from my_v2 where id=4;

更新数据

更新限制:with check option;

多表视图更新数据

update my_v3 set c_id=4 where id=6;

视图:age字段限制更新

create view my_v4 as

select * from my_student where age>30 with check option;

-- 表示视图的数据来源都是年龄大于30的,是由where age>30决定的

-- with chhheck

-- option决定通过视力更新的时候,不能将已经得到的数据age>30的改成<30的

-- 将视图可以查到的数据改成年龄小于30

update my_v4 set age=29 where id=5;

-- 可以修改数据让视图可以查到:可以改,但是无效果

update my_v4 set age=32 where id=3;

视图算法

视图算法:系统对视图以及外部查询视图的select语句的一种解析方式

视图算法分三种

undefined:未定义(默认的)

temptable:临时表算法

merge:合并算法

算法指定:在创建视图的时候create algorithm=指定算法 view 视图名字 as select语句;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容