登录
首页 >  数据库 >  MySQL

MySQL表的关联关系

来源:SegmentFault

时间:2023-01-14 10:35:16 353浏览 收藏

怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《MySQL表的关联关系》,涉及到MySQL,有需要的可以收藏一下

  在实际开发中数据表之间存在着各种关联关系。在此,介绍MySQL中数据表的三种关联关系。
  
  多对一
  
  多对一(亦称为一对多)是数据表中最常见的一种关系。例如:员工与部门之间的关系,一个部门可以有多个员工;而一个员工不能属于多个部门只属于某个部门。在多对一的表关系 中,应将外键建在多的一方否则会造成数据的冗余。
  
  多对多
  
  多对多是数据表中常见的一种关系。例如:学生与老师之间的关系,一个学生可以有多个老师而且一个老师有多个学生。通常情况下,为了实现这种关系需要定义一张中间表(亦称为连接表)该表会存在两个外键分别参照老师表和学生表。
  
  一对一
  
  在开发过程中,一对一的关联关系在数据库中并不常见;因为以这种方式存储的信息通常会放在同一张表中。
  mysql安装:http://install.cuohei.com/
  接下来,我们来学习在一对多的关联关系中如果添加和删除数据。先准备一些测试数据,代码如下:
  
  DROP TABLE IF EXISTS student;
  
  DROP TABLE IF EXISTS class;
  
  -- 创建班级表
  
  CREATE TABLE class(
  
  cid int(4) NOT NULL PRIMARY KEY,
  
  cname varchar(30)
  
  );
  
  -- 创建学生表
  
  CREATE TABLE student(
  
  sid int(8) NOT NULL PRIMARY KEY,
  
  sname varchar(30),
  
  classid int(8) NOT NULL
  
  );
  
  -- 为学生表添加外键约束
  
  ALTER TABLE student ADD CONSTRAINT fk_student_classid FOREIGN KEY(classid) REFERENCES class(cid);
  
  -- 向班级表插入数据
  
  INSERT INTO class(cid,cname)VALUES(1,'Java');
  
  INSERT INTO class(cid,cname)VALUES(2,'Python');
  
  -- 向学生表插入数据
  
  INSERT INTO student(sid,sname,classid)VALUES(1,'tome',1);
  
  INSERT INTO student(sid,sname,classid)VALUES(2,'lucy',1);
  
  INSERT INTO student(sid,sname,classid)VALUES(3,'lili',2);
  
  INSERT INTO student(sid,sname,classid)VALUES(4,'domi',2);
  
  1.关联查询
  
  查询Java班的所有学生 MySQL命令:
  
  select * from student where classid=(select cid from class where cname='Java');
  
  2.关于关联关系的删除数据
  
  请从班级表中删除Java班级。在此,请注意:班级表和学生表之间存在关联关系;要删除Java班级,应该先删除学生表中与该班相关联的学生。否则,假若先删除Java班那么学生表中的cid就失去了关联
  
  删除Java班 MySQL命令:
  
  delete from student where classid=(select cid from class where cname='Java');
  
  delete from class where cname='Java';

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>