当前位置:Gxlcms > 数据库问题 > mysql复习篇及一对多和多对多的总结(17.6.26 )

mysql复习篇及一对多和多对多的总结(17.6.26 )

时间:2021-07-01 10:21:17 帮助过:24人阅读

可以与副表中的某一项有关系(一夫一妻制);

  2.1、 Navicat for MySQL 实现一对多;

    答:实现成功,注意事项,最好在新建立表的时候就把外键一块给创建了,要不然后面很麻烦

      表设计==> 外键==>栏位(自己要借鉴的列)==>参考表==>参考的栏位==>ctrl+s

  2.2、  代码实现;  

技术分享
CREATE TABLE person1(
nid INT (11) AUTO_INCREMENT,
NAME VARCHAR (32),
email VARCHAR (32),
part_nid INT,
PRIMARY KEY (nid),
-- KEY fk_xxx (part_nit),
CONSTRAINT fk_xxx FOREIGN KEY (part_nid) REFERENCES part1 (nid)
)
代码实现外键

  2.3、  代码删除和添加一对多;

    删除:alter table person1 drop foreign key fk_xxx

    添加:alter table person1 add constraint fk_xxx foreign key(part_nid) references part1(nid)

  3、实现一对一及一对多的查询:

    要求:分别用 left join、inner join 灵活实现;未能实现 

    普通条件查询   SELECT person.name,part1.nidd from person,part1 where person.nid = part1.nidd

    一张表的关联查询:

    select * from 主表 left join 副表 on 主表关联列 = 副表关联列   where ...

    与多张表的关联查询:

    select * from 主表

       left join 副表 on 主表关联列 = 副表关联列  

       left join 副表 on 主表关联列 = 副表关联列  

      where ...

    还有 inner join  与 right join   功能 都差不多。

  b.多对多

  1、你是如何理解多对多的;

    多对多 是指:主表中的一项可以与副表中的多项有关系(一夫多妻制);

  2、Navicat for MySQL 实现多对多,提示:创建表一,表二、表三、  利用表三建立表一与表二的关系;

   答:完成

  3、实现灵活查找 提示 利用join

    select * from 主表

       left join 副表1 on 主表关联列 = 副表1关联列  

       left join 副表2 on 主表关联列 = 副表2关联列  

      where ...

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

    

mysql复习篇及一对多和多对多的总结(17.6.26 )

标签:cat   如何排序   利用   arc   table   closed   and   排列   如何   

人气教程排行