MySQL5.7数据库中表连接、子查询、外键的示例分析
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,小编给大家分享一下MySQL5.7数据库中表连接、子查询、外键的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!文章目录表连接自关联外键内连接左连接右连接子查询外键介绍创建表时
千家信息网最后更新 2025年11月14日MySQL5.7数据库中表连接、子查询、外键的示例分析
小编给大家分享一下MySQL5.7数据库中表连接、子查询、外键的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
文章目录
表连接
自关联
外键
内连接
左连接
右连接
子查询
外键介绍
创建表时设置外键约束
表连接
当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回mysql
这时需要表进行连接
内连接
内连接仅选出两张表中互相匹配的记录
select * from 表1 inner join 表2 on 表1.列 = 表2.列-- 显示学生的所有信息,但只显示班级名称select s.*, c.name from students s inner join classes c on s.id=c.id;-- 将班级名称显示在第一列select c.name, s.* from students s inner join classes c on s.id=c.id;-- 查询 有能够对应班级的学生以及班级信息,按照班级进行排序select c.name, s.* from students s inner join classes c on s.cls_id = c.id order by c.name asc;-- 当同一个班级时,按照学生的id进行从小到大排序select c.name, s.* from students s inner join classes c on s.cls_id = c.id order by c.name asc, s.id asc;
在这里插入图片描述
左连接
查询的结果为两个表匹配到的数据,左表持有的数据,对于右表中不存的数据使用null填充
select * from 表1 left join 表2 on 表1.列=表2.列-- students表左连接classes表 并查看班级为null的数据select * from students s left join classes c on s.cls_id=c.id having s.cls_id is null;-- 左连接 并且 查询 s.cls_id=1 并且 s.name="small-j" 的数据select * from students s left join classes c on s.cls_id=c.id having s.cls_id=1 and s.name="small-j";
右连接
查询结果为两个表匹配到的数据,右表持有的数据,对于左表中不存在的数据使用null填充。
select * from 表1 right join 表2 on 表1.列 = 表2.列;
子查询
某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候,就要使用到子查询
select * from 表 where 表(子查询语句)-- 查询出students中身高最高的男生。显示名字和身高select s.name, s.high from students s where high=(select max(high) from students) and gender="男";-- 查询出高于平均身高的学生信息select * from students where high>(select avg(high) from students);-- 查询学生班级号cls_id能够对应的学生信息select * from students where cls_id in (select id from students);-- 查询最大年龄的女生的idselect * from students where id=(select max(id) from students where gender="女") and gender="女";
在这里插入图片描述
自关联
简单理解为自己与自己进行连接查询
-- 查询广东省下的所有广东市select * from cities c inner join provinces p on c.provinceid=p.provinceid having p.province="广东省";-- 查询广东省下的所有广东市-- 自关联select * from areas a inner join areas b on a.id=b.pid having a.name="广东";
外键
外键介绍
MySQL的外键(foreing key)是表的一个特殊字段。对于两个具有关联关系的表而言,相关联字段的主键所在表就是主表(父表),外键所在的表是从表(子表)。
注意: 主键不能包含空值,但允许在外键中出现空值,也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
创建表时设置外键约束
当创建外键的时候,必须先删除从表才能删除主表。
主表需存在时创建从表。
从表的外键关联必须是主表的主键,并且主键与外键的类型必须保持一致。
[constraint 外键名] foreign key (字段名 [,字段名2, ...]) references <主表名> 主键列1 [, 主键列2, ...]
-- 创建班级表create table classes( id int(4) not null primary key, name varchar(36));-- 创建学生表create table student( sid int(4) not null primary key, sname varchar(30), cid int(4) not null);-- 创建直接含有外键关系的学生表create table student( sid int(4) not null primary key, sname varchar(30), cid int(4) not null, constraint pk_id foreign key (cid) references classes(id));-- 通过alter来添加外键关系alter table student add constraint pk_id foreign key (cid) references classes(id);-- 删除外键约束alter table student drop foreign key pk_id;
看完了这篇文章,相信你对"MySQL5.7数据库中表连接、子查询、外键的示例分析"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
查询
数据
班级
学生
广东
关联
信息
字段
结果
两个
时候
身高
广东省
中表
数据库
示例
分析
名称
图片
多张
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么修改服务器安全狗账号
数据库dna资料
网络安全宣传周 部队
mysql 数据库 拆分
网络安全监测装置价格
少儿网络安全手抄报文字内容
湖南小程序软件开发
软件开发公司面试题目
网络安全进展心得
福建发展软件开发科技
数据库计数不重复语句
办公室网络安全使用办法
服务器噪音很大
奈曼网络安全宣传
柯达软件开发
福建云空间平台服务器
剑灵怎么看服务器状态
北京美空互联网科技有限公司
浙江hpe塔式服务器云主机
空间数据库二维表
配置与管理dns服务器心得
数据库迁移工具linq
rds数据库主要组成部分
管理多个云服务器电脑配置
服务器怎么给别人创造权限
方舟服务器传送器 ID
电脑服务器不关会有危害吗
公司网络安全部是干嘛的
关于网络安全的祝福语
远程管理服务器的面板