mysql学习(5):多表之间的关系
来源:互联网 发布:opticalflares mac 编辑:程序博客网 时间:2024/05/17 01:24
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)删除表时,先删除课程表,再删除其他表。
0 0
- mysql学习(5):多表之间的关系
- MySQL数据库-表之间的关系(精华)
- Spring框架学习(5):bean之间的关系
- 学习:类之间的关系
- 表之间的关系
- [Beginner]MySQL 主机名与权限表之间的关系
- Mysql系列——数据库设计(4)——实体表之间的关系
- php+apache+mysql之间的关系
- mysql锁和索引之间的关系
- mybatis、 jdbc、 mysql-connector 之间的关系
- Powerdesigner的反向工程无法导出mysql表之间的关系(mysql的2中存储方式)
- Spring学习笔记(11)------------bean之间的关系
- Spring4学习笔记(六):bean之间的关系
- Spring学习(3)--Bean之间的关系
- mysql 学习疑问: sql语句关键字选项之间的顺序关系???
- spring学习历程---bean之间的关系
- R学习连续变量之间的关系
- 【Java学习笔记】类之间的关系
- 灵魂资料汇总
- Android后台录像
- Good Bye 2016 C. New Year and Rating(模拟)
- 杭电2037(排序+贪心) 之 今年暑假不AC
- IOS开发入门(7)-自动布局(2)
- mysql学习(5):多表之间的关系
- IDEA中maven项目webapp目录未被识别
- VS2013 + Qt5.4.1 开发环境搭建
- 求大神帮小弟写asp一段代码.
- 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
- 从 MongoDB 及 Mysql 谈B/B+树
- Hibernate+Struts2 分页实现
- 【HTTP协议】请求、响应、状态码
- 开源项目【LikeCloudMusic 云音】仿网易云音乐