MySQL表与表之间有哪些关系
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,不知道大家之前对类似MySQL表与表之间有哪些关系的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL表与表之间有哪些关系你一定会有所收获的。表与表之间
千家信息网最后更新 2024年11月27日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安全错误
数据库的锁怎样保障安全
怎么下载办公软件数据库
梦圆云数据库可靠吗
小宇服务器管理员工具破解密码
在家里连接免费网络安全吗
仪陇学校网络安全
对yggl数据库完成查询
mysql显示当前数据库
服务器 熊猫酒仙
如何创建教材选购数据库
服务器调度不满怎么排查
网络安全对国防教育
网络安全教育法制报告会
北京能源互联网科技有限公司
讽刺网络安全的动画
大学上网络安全教育心得
刀片服务器hpc7000
计算机网络技术名词解释数据
网络安全扫描服务器漏洞
为啥csgo连接官方服务器失败
数据库表能根据主键分区吗
数据库原理祝锡永下载
崇明区企业数据库销售价格表格
仪陇学校网络安全
中文数据库四大天王
网络安全大赛亚锦赛奖金多少
vb数据库怎么统计数目
免费开源软件开发
华为服务器BMC全擦升级
社区矫正网络安全宣传活动
直播软件开发社交类