使用Navicat多对多关系SQL语句在MySQL中实现
/**
*@author blovedr
*功能:模拟两张表关系及添加两个主键和外键详细过程
*日期: 2018年7月26日 18:45
*注释: 学习数据库MySQL的点点记录, 谢谢网上各位大神分享经验与资料, 欢迎各位大神批评指导与交流。
*/
在Navicat 新建一个数据库cc, 在cc新建“查询中”输入下列sql语句:
第一张表---班级表 (ok)
create table banji
(
banji_id int primary key,
banji_num int not null,
banji_name nvarchar(150)
)
第二张表---教师表 (ok)
create table jiaoshi
(
jiaoshi_id int primary key,
jiaoshi_name nvarchar(150)
)
第三张表---用来模拟班级和教师的关系1 mapping---映射 ---(ok,此时没有外键)
create table banji_jiaoshi_mapping
(
banji_id int,
jiaoshi_id int,
kecheng nvarchar(60),
constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id)
)
drop table banji_jiaoshi_mapping;
第三张表---用来模拟班级和教师的关系2 mapping---映射 ---(error,此时sql语句使用Navicat在MySQL运行报错)
create table banji_jiaoshi_mapping2
(
banji_id int constraint fk_banji_id foreign key references banji (banji_id),
jiaoshi_id int foreign key references jiaoshi (jiaoshi_id),
kecheng nvarchar(60),
constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id)
)
第三张表---用来模拟班级和教师的关系3 mapping---映射 ---(ok,此时有两个主键和外键)
create table banji_jiaoshi_mapping3
(
banji_id int,
jiaoshi_id int,
constraint fk_banji_id foreign key (banji_id) references banji (banji_id),
constraint fk_jiaoshi_id foreign key (jiaoshi_id) references jiaoshi (jiaoshi_id),
kecheng nvarchar(60),
constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id, kecheng)
)
---删除表banji_jiaoshi_mapping3的sql语句
drop table banji_jiaoshi_mapping3;