乐趣区

关于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’;

退出移动版