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 视图名字;
-- 先创建v4create 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的
-- 将视图可以查到的数据改成年龄小于30update my_v4 set age=29 where id=5;
-- 可以将修改数据让视图可以查到:可以改,但是无效果update my_v4 set age=32 where id=3;