9月22日我的学习心得与个人理解
外键
用来记录表与表之间关系的
一对多关系判断及sql语句定义
判断表与表之间的关系要学会换位思考
1.先站在表1
表1数据是否可以对应多个表2数据关系
2.再站在表2
表2数据是否可以对应多个表1数据关系
表1单个数据对应多个表2数据关系且或表2单个数据对应多个表1数据关系
得出结论:一对多关系
在用sql语句创建一对多表关系的时候
步骤1:先创建两张基础表(无关系字段)
步骤2:再将关系字段填写到对应的表中
创建一对多关系表emp,dep,代码如下
create table emp(
id int primary key auto_increment,
username varchar(32),
age int,
gender enum('男','女','其他'),
dep_id int,
foreign key(dep_id) references dep(id)
);
create table dep(
id int primary key auto_increment,
name varchar(64),
addr varchar(255)
);

创建外键时有以下几个约束
1.在创建表的时候需要先创建被关联表 然后创建关联表
2.在插入数据时也应该先插入被关联表的数据然后插入关联表的数据
3.不能直接修改被关联表里面的字段,也不能轻易的删除被关联表里面的数据
4.针对上述情况,涉及到数据的修改和删除时应该做到同步更新同步删除。修改被关联表的数据,关联表数据自动修改。
创建具有同步删除功能的一对多表dep1,emp1
create table dep1(
id int primary key auto_increment,
dep_name char(10),
dep_comment char(60)
);
create table emp1(
id int primary key auto_increment,
name char(16),
gender enum('male','female') not null default 'male',
dep_id int,
foreign key(dep_id) references dep1(id)
on update cascade #同步更新(级联更新)
on delete cascade #同步删除(级联删除)
);

多对多关系
表1数据对应多个表2数据
针对多对多表关系创建表的解决方法是
创建第三张关系表专门用来记录关系
单独的两张表之间不需要创建任何的外键字段
创建多对多表book,author,代码如下
create table book(
id int primary key auto_increment,
title varchar(32),
price float(8,2)
);
create table author(
id int primary key auto_increment,
name varchar(32),
addr varchar(64)
);
create table book2author(
id int primary key auto_increment,
author_id int,
book_id int,
foreign key(author_id) references author(id)
on update cascade #同步更新(级联更新)
on delete cascade, #同步删除(级联删除)
foreign key(book_id) references book(id)
on update cascade #同步更新(级联更新)
on delete cascade #同步删除(级联删除)
);

多对多关系表在录入数据的时候
双方均可随意录入
但是操作第三张表时需要注意对应

浙公网安备 33010602011771号