mysql学习(5):多表之间的关系

mysql相互关联的表之间存在一对一,一对多(多对一),多对多的关系。

1,一对一的关系

这种关系即多个表具有相同的主键,实际中用的并不多,因为完全可以将这种关系的合并为同一张表。

2,一对多(多对一)的关系

其中表1的主键是表2的外键(即表1的某字段作为主键,表2的相同字段字段绑定到表1的主键字段上),举个简单的例子:

有学生表和成绩表如下:

CREATE TABLE stu(
	stuId INT,
	name VARCHAR(10) NOT NULL,
	PRIMARY KEY(stuId)
);
CREATE TABLE score(
	stuId INT,
	score INT,
	FOREIGN KEY (stuId) REFERENCES stu(stuId)
);

stu表中以stuId为主键。score表中同样有stuId字段,将两个stuId字段相关联。


FOREIGN KEY (stuId) REFERENCES stu(stuId)  //这句话表示将当前表的stuId字段关联到stu表的stuId字段,作为stu表的外键

于是,两张表就产生了关系:


(1)在创建数据时,要先在stu表中指定stuId,才能在score表中添加对应stuId的成绩。反之,想要在score表中创建stuId(而stu表中没有该stuId)的话,就会报错。

(2)在删除表时,要先删除score表,再删stu表。反之会报错。

3,多对多的关系

这种关系在实际中也很常见,比如:一个老师教很多学生的课,一个学生选了很多老师的课。那么,老师和学生之间就是多对多的关系。

多对多的关系要借助于第3张表。举个简单的例子:

(1)首先创建老师表,设置id为主键

CREATE TABLE teacher(
	teacherId INT,
	NAME VARCHAR(10) NOT NULL,
	PRIMARY KEY(teacherId)
);
(2)然后创建学生表,同样设置id为主键

CREATE TABLE stu(
	stuId INT,
	NAME VARCHAR(10) NOT NULL,
	PRIMARY KEY(stuId)
);
(3)最后创建一张表,将前两张表关系起来,如创建一个课程表:

CREATE TABLE score(
	stuId INT,
	teacherId INT,
	FOREIGN KEY (stuId) REFERENCES stu(stuId),
	FOREIGN KEY (teacherId) REFERENCES teacher(teacherId)
);
将课程表的字段分别设置为教师表和学生表的外键,关系如下:


这样就可以形成多对多的关系了,使用方法同一对多。

(1)首先保证教师表和学生表中有数据,再创建课程表中的数据。

(2)删除表时,先删除课程表,再删除其他表。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值