使用Navicat多对多关系SQL语句在MySQL中实现

Posted blovedr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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语句使用NavicatMySQL运行报错)

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;

 

以上是关于使用Navicat多对多关系SQL语句在MySQL中实现的主要内容,如果未能解决你的问题,请参考以下文章

sql 一对多的查询

如何编写通过关系表获取结果的 SQL 语句? (多对多)

mysql 多对多映射关系的筛选SQL怎么写

SQL映射文件-----MySQL关系映射1对1,1对多,多对多

mysql 语法错误 1064 在第 194 行为多对多关系添加外键

Mysql数据库多对多关系未建新表