day 7-15 表与表之间的关系
一. 前言
表与 表之间有3种对应关系,分别是:
多对一:一张表中的一个字段中的多个值对应另外一张表中的一个字段值.(多个学生,可以学习同一门课程)
多对多;一张表中的一个字段值对应另外一张表中的多个字段值(一个作者可以写多本书籍,一本书也可以由多个作者联合编著)
一对一:一张表中一个字段值对应另外一个张表的一个字段值(一个用户名对应一个博客园的地址)
确认关系的方法:
表1 foreign key 表2
则表1的多条记录对应表2的一条记录,即多对一 利用foreign key的原理我们可以制作两张表的多对多,一对一关系
多对多:
表1的多条记录可以对应表2的一条记录
表2的多条记录也可以对应表1的一条记录 一对一:
表1的一条记录唯一对应表2的一条记录,反之亦然 分析时,我们先从按照上面的基本原理去套,然后再翻译成真实的意义,就很好理解了
一对一
#先建立被关联的表 create table user(id int primary key auto_increment,name char(15));
#插入用户数据
insert into user(name) values
("jack"),
("chen"),
("wang"),
("yaya"); #再创建关联表
create table blogs(id int primary key auto_increment,address varchar(50),
uid int not null unique,foreign key (uid) references user(id));
#插入数据
insert into blogs(address,uid) values
("www.cnblogs.com/jack",1),
("www.cnblogs.com/chen",2),
("www.cnblogs.com/yaya",4),
("www.cnblogs.com/wang",3);
一对一关系
多对一:
多对一关系:
1.建立被关联表
create table courses(id int primary key auto_increment,name char(10));
insert into courses(name) values
("英语"),
("语文"),
("数学"); 2.建立关联表 create table students(id int primary key auto_increment,name char(10),course_id int,foreign key (course_id) references courses(id));
insert into students(name,course_id) values
("jack",1),
("chen",1),
("yaya",3),
("wang",3),
("lilei",2); select * from students;
+----+-------+-----------+
| id | name | course_id |
+----+-------+-----------+
| 1 | jack | 1 |
| 2 | chen | 1 |
| 3 | yaya | 3 |
| 4 | wang| 3 |
| 5 | lilei | 2 |
+----+-------+-----------+ select * from courses;
+----+--------+
| id | name |
+----+--------+
| 1 | 英语 |
| 2 | 语文 |
| 3 | 数学 |
+----+--------+
多对一
多对多关系
#多对多关系
#1.创建被关联表
create table author1 (id int primary key auto_increment,name char(10));
insert into author1 (name) values
("jack"),
("chen"),
("wang"),
("lili"),
("lucy"),
("lilei"); create table book1(id int primary key auto_increment,name char(6));
insert into book1(name) values
("python入门"),
("linux精通"),
("go实战"); #2.创建关联表,book_id和author_id联合唯一,避免出现重复的现象 create table book2author1(id int primary key auto_increment,book_id int not null ,author_id int not null, unique(book_id,author_id),
foreign key(book_id) references book1(id) on delete cascade on update cascade,
foreign key(author_id) references author1(id) on delete cascade on update cascade); insert into book2author1(book_id,author_id)values
(1,1),
(1,5),
(2,4),
(2,6),
(3,2),
(3,3);
多对多关系
day 7-15 表与表之间的关系的更多相关文章
- MySQL表与表之间的关系
表与表之间的关系 表1 foreign key 表2 则表1的多条记录对应表2的一条记录,即多对一 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以 ...
- MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系
数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...
- python 之 数据库(字段的约束条件,表之间的关系)
10.6 约束条件 10.61 not null .default create table t15( id int, name ) not null, sex enum('male','female ...
- java:Oracle(聚合函数,多表查询,表之间的关系)
1.聚合函数 --max,min,sum,avg,count,nvl(,) -- max:最大值 -- max既能取数字的最大值,也可以取字符串的最大值(英文字母排列顺序),根据场景实际意义来看,最好 ...
- 从零自学Hadoop(15):Hive表操作
阅读目录 序 创建表 查看表 修改表 删除表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceL ...
- PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系
看PostgreSQL9的官方文档,我越看越迷糊,这表空间,数据库,模式,表,用户,角色之间的关系怎么在PostgreSQL里这么混乱呢?经过中午的一个小实验,我逐渐理清了个中来龙去脉.下面我来还原我 ...
- PostgreSQL表空间、模式、表、用户/角色之间的关系
PostgreSQL表空间.模式.表.用户/角色之间的关系是本文我们主要要介绍的内容,表空间,数据库,模式,表,用户,角色之间的关系到底是怎样的呢?接下来我们就开始介绍这一过程. 实验出角色与用户的关 ...
- SSAS的维度表之间的关系只能有一个不能有多个
我们在SSAS中创建维度的时候,有时候可能一个维度需要用到多个表的字段作为维度属性,那么这多个表之间势必存在关联关系,但是切记维度表之间的关联关系有且只能有一个不能有多个,下面我们来看一个例子. 现在 ...
- mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决
※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样)SHOW VARIABLES; //查看系统变量//查询字符编码相关的系统变量SHOW VARIABLES WHERE var ...
随机推荐
- C. Brutality Educational Codeforces Round 59 (Rated for Div. 2) 贪心+思维
C. Brutality time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- B - Moo Volume
Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are ...
- VGG网络
VGG论文给出了一个非常振奋人心的结论:卷积神经网络的深度增加和小卷积核的使用对网络的最终分类识别效果有很大的作用.记得在AlexNet论文中,也做了最后指出了网络深度的对最终的分类结果有很大的作用. ...
- java 基础响应体定义 - 通用
package com.teewon.viewservice.entitiy.base; import java.io.Serializable; import java.util.List; pub ...
- iOS开发之CoreImage
CoreImage是iOS中的一个图像处理框架,提供了强大高效的图像处理功能,可以通过调用简单的API来使用框架所带的各种滤镜对图像进行处理. CoreImgae的三个重要组成部分:1.CIFiter ...
- .NET Core中复制源文件夹下的所有内容到新文件夹
.NET Core中没有原生的复制文件夹方法,我们可以自己写个: 新建一个.NET Core控制台项目,示例代码如下: using System; using System.IO; namespace ...
- 写了个限制文本框输入最大长度的jquery插件 - jquery.restrictFieldLength.js
做了个限制文本框最大输入长度的jquery插件,效果图(共2个文本框,限制最多10个字符): 功能:当超出设置的最大字符长度后,会截断字符串.更改当前元素的css(会在1秒后还原css).支持长度超出 ...
- 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...
- flask使用基础
1.安装 pip install Flask 基本依赖库: jinja2:实现对模板的处理 werkzeug:本质是socket服务器,用于接收http请求,并对请求进行预处理,然后触发Flaks框架 ...
- flask 跨域请求
Flask中,跨域请求主要有两种方式: 1.在响应头信息中添加允许跨域 如下,使用装饰器app.after_request(我这里的web是定义的蓝图),这样在每次请求后,加入header 2.使用第 ...