视图(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 s left join my_class as c on s.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
外链接 不符合条件不放入
内链接 符合条件放入
--查看视图创建语句 show create view my_v3\G
查看视图
show tables[like] / desc 视图名/ show create table 视图名
show create view my_v3\G --查看视图创建语句
show views 不可以v查看所有视图
show * from my_v1
show * from my_v2
show * from my_v3
修改视图
alter view 视图名字 as 新的select语句
alter view my_ v1 as select id,name,age,sex,height,c_id from my_student
删除视图
drop view 视图名字
create view my_v4 as select * from my_student ---删除视图v4 drop table my_v4 --删除失败(不能删表) drop view my_v4 - -- 删除成功
新增数据
{ 1 }多表视图不能新增数据
---多表视图不能插入数据 insert into my_v3 value(null,'bc20200008','张山','男',15,180,3,'Python1910','A204') -----插入失败
--将学生表的学号字段设置成不允许为空 alter tabel my_student modify number char(10) not null unique
{ 2 } 可以向单表视图插入数据,但是视图中包含的字段必须有基表中所不能为空,或没默认值的字段
---单表视图插入数据 : 视图不包含所有不允许为空的字段 insert into my_v1 values(null,'张山','男',15,180,3)
--单表视图插入数据 insert into my_v2 values(2,'Python1903','A204')
{ 3 } 视图是可以向基表插入数据的
删除数据
多表视图不能删除数据
单表视图可以删除数据
更新数据
更新限制 with check option
---视图 age 字段限制更新
create view my_v4 as
select * from my_student where age>30 with cheak option
--表示视图的数据来源都是年龄大于30岁 是由where age 》30 的
--将视图可以查到数据改成年龄小与30 update my_v4 set age = 29 where id = 5
---可以修改数据源让视图可以查到 可以该 但是无效果
uodate my_v4 set age = 32 where id=3