美文网首页全栈(二)MySQL
⑨MySQL(创建-查看-修改-删除视图、视图新增-删除-更新数

⑨MySQL(创建-查看-修改-删除视图、视图新增-删除-更新数

作者: Agony_锐 | 来源:发表于2020-02-17 22:06 被阅读0次

mysql.exe -h localhost -P 3306 -u root -p

use mydb;     ——     进入数据库

查看:show index from 表名\G

desc:查看表结构

select * from 表名:查询所有数据 

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

视图优点:对外提供友好型,不同的视图对应不同的数据

一、创建视图

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

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

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

-- 视图:单表+多表

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 视图名;

-- 查看视图创建语句

show create view my_v3\G    -- \G:横向查看


三、修改视图

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

-- 视图使用

select * from my_v1;

select * from my_v2;

select * from my_v3;

-- 修改视图

alter view my_v1 as

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


四、删除视图

drop view 视图名字;

-- 先创建v4

create view my_v4 as

select * from my_student;

-- 删除视图

drop view my_v4;


五、新增数据

1)多表视图不能新增数据

-- 多表视图不能插入数据

insert into my_v3 values(null,'bc20200008','张三丰','男',150,180,3,'Python1910','A204');

2)可以向单表视图插入数据,但是视图中包含的字段必须有基表中所有不能为空、或没有默认值的字段

-- 将学生表的学号字段设置成不允许为空

alter table my_student modify number char(10) not null unique;

-- 单表视图插入数据:视图不包含所有不允许为空的字段

insert into my_v1 values(null,'张三丰',150,'男',180,3);

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

-- 单视图插入数据

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


六、删除数据

1)多表视图不能删除数据

-- 多表示图不能删除数据

delete from my_v3 where id=1;

2)单表视图可以删除数据

-- 单表视图删除数据

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

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

update my_v4 set age=29 where id=5;

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

update my_v4 set age=32 where id=3;

相关文章

网友评论

    本文标题:⑨MySQL(创建-查看-修改-删除视图、视图新增-删除-更新数

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