MySQL表与表之间有哪些关系
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,不知道大家之前对类似MySQL表与表之间有哪些关系的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL表与表之间有哪些关系你一定会有所收获的。表与表之间
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
网络设置没有服务器怎么办
数据库系统工程师历年试题
服务器能当电脑用吗
服务器里面的金币系统怎么做
华测登录不上服务器
cs服务器冻结时间命令
国家网络安全保护认证
标志下载软件开发
网络安全知识的内容怎么写
我的世界封号斗罗服务器手机端
出国读网络安全
四川iptv服务器公司
南京应用软件开发服务费
北京学软件开发学校哪家好
关于网络安全的有利事例
怎么写数据库添加语句
维护网络安全青少年
戴尔服务器故障查询表
数字孪生对实时数据库系统的要求
中经网统计数据库账号
运维工程师可以管几台服务器
护苗网络安全系列课图片
鸿蒙软件开发工具
通达oa 邮件服务器
应用软件开发学校
CFPS数据库医疗保险
isl服务器教程
jpa每次都查数据库
软件开发工程师最高级证书
plsql数据库笔试面试