外键约束、视图:单表+多表

外键约束

有三种约束模式:         

district:严格模式(默认的)—— 都是针对父表的         

cascade:级联模式         

set null:置空模式

视图:单表+多表

create view my_v1as select *  from my_student;

create view my_v2as select *  from my_class;

create view my_v3as select *  from my_studentas sleft join my_classas con s.c_id=c.id;-- 错误:id重复

-- 多表视图

create view my_v3as select s.*,c.name as c_name,c.room from my_studentas sjoin my_classas con s.c_id=c.id;

show tables;

-- 查看视图创建语句

show create view my_v3\G

-- 视图的使用

select *  from my_v1;

select *  from my_v2;

select *  from my_v3;

-- 修改视图

alter view my_v1as select id,name,age,sex,height,c_idfrom my_student;

-- 删除视图

create view my_v4as select * from my_student;

drop view my_v4;

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

insert into my_v3values (null,'bc20200008','张三丰','男',150,180,3,'python1910','a204');

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

alter table my_studentmodify number char(10)not null unique ;

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

insert into my_v1values (null,'bc20200008','张三丰',150,'男',180,3);

-- 单表视图插入数据

insert into my_v2values (2,'python1903','a204');

-- 多表视图删除数据: 不能删除数据

delete from mydb.my_v3where id=1;

-- 单表视图删除数据

delete from my_v2where id=4;

-- 多表视图更新数据

update my_v3set c_id=4 where id=6;

-- 视图: age 字段限制更新

create view my_v4as select * from my_studentwhere age>30 with check option;

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

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

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

update my_v4set age=29 where id=5;

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

update my_v4set age=32 where id=3;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容