千家信息网

MySQL表与表之间有哪些关系

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,不知道大家之前对类似MySQL表与表之间有哪些关系的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL表与表之间有哪些关系你一定会有所收获的。表与表之间
千家信息网最后更新 2025年01月31日MySQL表与表之间有哪些关系

不知道大家之前对类似MySQL表与表之间有哪些关系的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL表与表之间有哪些关系你一定会有所收获的。

表与表之间的关系

表1 foreign key 表2则表1的多条记录对应表2的一条记录,即多对一利用foreign key的原理我们可以制作两张表的多对多,一对一关系多对多:    表1的多条记录可以对应表2的一条记录    表2的多条记录也可以对应表1的一条记录一对一:    表1的一条记录唯一对应表2的一条记录,反之亦然分析时,我们先从按照上面的基本原理去套,然后再翻译成真实的意义,就很好理解了

1、先确定关系

2、找到多的一方,把关联字段写在多的一方

一对多

多对一或者一对多(左边表的多条记录对应右边表的唯一一条记录)

需要注意的:

  • 1.先建被关联的表,保证被关联表的字段必须唯一。

  • 2.在创建关联表,关联字段一定保证是要有重复的。

示例:

这是一个书和出版社的一个例子,书要关联出版社(多个书可以是一个出版社,一个出版社也可以有好多书)。

谁关联谁就是谁要按照谁的标准。

  • 创建表

书要关联出版社被关联的表create  table press(id int primary key auto_increment, name char(20));关联的表create table book(book_id int primary key auto_increment,book_name varchar(20),book_price int,press_id int,constraint Fk_pressid_id foreign key(press_id) references press(id)on delete cascadeon update cascade);
  • 插入数据

insert into press(name) values('新华出版社'), ('海燕出版社'), ('摆渡出版社'), ('大众出版社');insert into book(book_name,book_price,press_id) values('Python爬虫',100,1), ('Linux',80,1), ('操作系统',70,2), ('数学',50,2), ('英语',103,3), ('网页设计',22,3);
  • 运行结果

一对一

示例一:

用户和管理员(只有管理员才可以登录,一个管理员对应一个用户)

管理员关联用户

  • 创建表

先建被关联的表create table user(id int primary key auto_increment, #主键自增name char(10));再建关联表create table admin(id int primary key auto_increment,user_id int unique,password varchar(16),foreign key(user_id) references user(id)on delete cascadeon update cascade);
  • 插入数据

insert into user(name) values('susan1'),('susan2'),('susan3'),('susan4')('susan5'),('susan6');insert into admin(user_id,password) values(4,'sds156'),(2,'531561'),(6,'f3swe');
  • 运行结果

示例二:

学生表和客户表

  • 创建表

create table customer(id int primary key auto_increment,name varchar(10),qq int unique,phone int unique);create table student1(sid int primary key auto_increment,course char(20),class_time time,cid int unique,foreign key(cid) references customer(id)on delete cascadeon update cascade);
  • 插入数据

insert into customer(name,qq,phone) values('小小',13564521,11111111),('嘻哈',14758254,22222222),('王维',44545522,33333333),('胡军',545875212,4444444),('李希',145578543,5555555),('李迪',754254653,8888888),('艾哈',74545145,8712547),('啧啧',11147752,7777777);insert into student1(course,class_time,cid) values('python','08:30:00',3),('python','08:30:00',4),('linux','08:30:00',1),('linux','08:30:00',7);
  • 运行结果

多对多

书和作者(我们可以再创建一张表,用来存book和author两张表的关系)

要把book_id和author_id设置成联合唯一

联合唯一:unique(book_id,author_id)

联合主键:alter table t1 add primary key(id,avg)

多对多:一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对

关联方式:foreign key+一张新的表

示例:

  • 创建表

========书和作者,另外在建一张表来存书和作者的关系#被关联的create table book1(id int primary key auto_increment,name varchar(10),price float(3,2));#========被关联的create table author(id int primary key auto_increment,name char(5));#========关联的create table author2book(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 cascadeon update cascade,foreign key(author_id) references author(id)on delete cascadeon update cascade);
  • 插入数据

insert into book1(name,price) values('九阳神功',9.9), ('葵花宝典',9.5), ('辟邪剑谱',5),  ('降龙十巴掌',7.3);insert into author(name) values('egon'),('e1'),('e2'),('e3'),('e4');insert into author2book(book_id,author_id) values(1,1),(1,4),(2,1),(2,5),(3,2),(3,3),(3,4),(4,5);

多对多关系举例

用户表,用户组,主机表

  • 创建三张表

-- 用户表create table user (id int primary key auto_increment,username varchar(20) not null,password varchar(50) not null);insert into user(username,password) values('egon','123'),('root',147),('alex',123),('haiyan',123),('yan',123);-- 用户组表create table usergroup(id int primary key auto_increment,groupname varchar(20)  not null unique);insert into usergroup(groupname) values('IT'),('Sale'),('Finance'),('boss');-- 主机表CREATE TABLE host(id int primary key auto_increment,ip CHAR(15) not NULL UNIQUE DEFAULT '127.0.0.1');insert into host(ip) values('172.16.45.2'),('172.16.31.10'),('172.16.45.3'),('172.16.31.11'),('172.10.45.3'), ('172.10.45.4'),('172.10.45.5'),('192.168.1.20'),('192.168.1.21'),('192.168.1.22'),('192.168.2.23'),('192.168.2.223'),('192.168.2.24'),('192.168.3.22'),('192.168.3.23'),('192.168.3.24');
  • 建立关系

-- 建立user和usergroup的关系表create table user2usergroup(id int not NULL UNIQUE auto_increment,user_id int not null,group_id int not NULL,PRIMARY KEY(user_id,group_id),foreign key(user_id) references user(id)ON DELETE CASCADEon UPDATE CASCADE ,foreign key(group_id) references usergroup(id)ON DELETE CASCADEon UPDATE CASCADE);insert into user2usergroup(user_id,group_id) values(1,1),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4);-- 建立user和host的关系create table user2host(id int not null unique auto_increment,user_id int not null,host_id int not null,primary key(user_id,host_id),foreign key(user_id) references user(id),foreign key(host_id) references host(id));insert into user2host(user_id,host_id) values(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13),(1,14),(1,15),(1,16),(2,2),(2,3),(2,4),(2,5),(3,10),(3,11),(3,12);

看完MySQL表与表之间有哪些关系这篇文章,大家觉得怎么样?如果想要了解更多相关,可以继续关注我们的行业资讯板块。

关联 出版社 用户 出版 作者 之间 多条 数据 管理员 管理 一对一 字段 示例 结果 联合 运行 一方 主机 原理 多个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 开服务器需要注意点什么 华为什么部门软件开发 第四届国家网络安全周内容 智慧城市公共数据库 肿瘤标志物在哪个数据库查 我的世界如何在服务器里搞破坏 深圳联兴软件开发公司 博野县网络安全委员会 设备网络安全成交价 计算机网络技术服务职业 校园网络安全设计网络拓扑图 数据库第5版第四章课后题答案 计算机网络技术三级属于什么证书 互联网金融科技服务商 湛江pc软件开发设计 mysql数据库 程序员 BMS软件开发工程师优势 贾伦格林nba数据库新浪 长虹软件开发 给华为鲲鹏提供服务器的上市公司 敏捷软件开发java版 电脑怎么连接另一个服务器 国家网络安全宣传周开幕啦 添加iis服务器 微标杆互联网科技 简述一下什么是数据库管理系统 聊城同力网络技术有限公司 我是计算机网络技术专业 数据库火车票系统 饥荒联机版报错掉出服务器
0