在理论开发中数据表之间存在着各种关联关系。在此,介绍 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’;