电脑连不上网怎么回事
mysql学习六之实体类型的⼀对⼀,多对多,⼀对多关系详解,定义外键后记录的增加删除操作,。。。
⼀、实体与实体之间的⼀对⼀关系
山楂蜂蜜水字段⽐较多时可以通过垂直分隔的⽅法形成两个表,即形成1:1的关系。
⼆、实体之间⼀对多的关系
注意:是在多的⼀端增加⼀个字段⽤于指向所属的另外实体情况。
三、多对多的关系
鹅毛扇
多对多的实现关系需要在中间建⽴⼀个对应关系表。这个对应关系表⾄少包含两个原先表的各⾃主键。
胡须对于多对多关系还有⼀个问题。
其实多对多的关系是将多对多转换成两个⼀对多,那么在visio设计数据库时如何画箭头指向呢?
其实这个问题可以这样思考,
1、多的指向⼀,加⼊学⽣和班级关系,是多对⼀,如果班级指向学⽣那么班级表就要为每个学⽣建⽴⼀个字段,⼤⼤浪费了空间。
2、要分清那个是多,那个是⼀。上图所⽰:⼀个讲师可以有多个关系,⼀个关系只能有⼀个讲师。因此讲师表是⼀,关系表是多。因此关系表指向讲师。
四、外键 foreign key
1、定义外键
注意:外键的作⽤很重要。
2、外键的sql语句
注意:此处有个comment列属性,意思是注释,相当于在列的旁边有个注释。
其实在创建表时还应该写⼀句:如果表存在就删除此表。然后再创建。奶粉销量排名
drop table if exists tbl_name;
外键的书写:先增加⼀个外键字段,⽤foreign key 指定该字段,reference 关联 表的字段。
3、定义外键后,如果想增加记录,⾸先看⽗表记录中有没有外键的记录。
张晓梵
问题2:那么还有⼀个问题,在⼀对多中,外键加在⼀中,还是多中?
很明显,外键⼀般存在多的表中,因为如果在⼀中,恐怕需要加⽆数个外键。
五、含有外键的删除操作
由于定义了外键,各表之间产⽣了关联,随意增加删除,都牵动着各表,删除操作更是复杂。这就需要表的级联操作。
级联操作包含主表更新和主表删除。步骤:
1、⾸先你所创建的表要设置成运⾏级联操作。
修改外键设置:⽅法是,先删除外键,再添加外键。通过修改表完成
下周星座运势
对于删除外键:
⾸先要知道外键名:通过语句查看
show create table tbl_name\G;
删除外键:
alter table tbl_name drop foreign key 外键名;
增加级联动作:
alter table tbl_name add foreign key (本表外键字段) references tbl2_name (外键字段) on delete t null;on delete t null;删除主表时,将从表的外键设置为null.
上图可见在删除主表的记录时,从表外键被设置为null了。
on delete cascade;是级联删除,即:如果删除了主表记录内容,那么从表记录也被删除。陈述
on update restrict; 表⽰更新时严禁操作。其中restrict 是默认值。
这是个默认值,不写也有。⽽我们的⽬标是在更新主表主键时,从表的外键值也跟着更改。只能⽤ on update cascade;