MySQL:连接查询

连接查询

也就是多表查询

按功能分:
	内连接:
		等值连接
		非等值连接
		自连接
	外连接:
		左外连接
		右外连接
		全外连接
	交叉链接
---------------------------------------
内连接
等值连接
	select 查询列表
	from1 别名,表2 别名...
	where 等值连接的条件(= )
----------------------------------------------------------------------------
	SELECT `name` , `boyName`
	FROM beauty 女,boys 男
	WHERE.`boyfriend_id` =.`id`;
	列名重复的用点操作符查询

	特点:
		1.为了解决不同表同名问题,往往为表起个别名,也是用as或者空格起名
		2.表顺序无要求
----------(之前都是92语法,以后更换为99语法,新值join和on)----------------------------
非等值连接:
	就是不使用等号,使用其他符号,不是什么表都能用,也不是重点
	
自连接:
	在同一个表内查询,自己连接自己
	SELECT e.`last_name`,e.`manager_id`,f.`employee_id`,f.`last_name`
	FROM employees e
	JOIN employees f
	ON e.`manager_id` = f.`employee_id`;
外连接
内连接的话两个表是等价的,只有复合链接条件的数据会被添加到新表

外连接的话两个表不等价,有主副之分,根据链接条件,把副表的内容添加到主表内去,附表没有这个数据的话,主表内显示为null
	因为有了主从之分,所以说两个表不能随意换位置
	左连接:左边为主表
	右连接:右边为主表

select 查询列表
from 表名1 别名
left|right|full join 表名2 别名					左连接表1是主表,右连接表2时主表,full全连接,每个表的内容都不会少,没的话就为null,都为主表。
on 链接条件
where 筛选条件
group by
having
order by


左连接:
	SELECT `name`,`boyName`
	FROM `beauty` a
	LEFT JOIN `boys` b
	ON a.`boyfriend_id` = b.`id`;

右连接:
	SELECT `name`,`boyName`
	FROM `boys` b
	RIGHT JOIN `beauty` a
	ON a.`boyfriend_id` = b.`id`

在这里插入图片描述

子查询

一个查询语句内嵌套了另一个完整的select语句,被嵌套的称为子查询,外面的称为父查询。
出现位置:

  1. select语句后面,要求子查询结果为单行单列
  2. from后面,结果可以为多行多列,当作一个新表
  3. where或having后面,要求子查询结果为单列,可以是多行
  4. exists后面,结果必须为单列

特点

  • 子查询放在条件中,尽量要放在条件的右侧
  • 子查询一般放在小括号内
  • 子查询优先于父查询
  • 单行子查询对应单行操作符:>, < ,>=, <= ,= ,<>
  • 多行子查询:any,some,all,in
1.查询谁的工资大于Abel
SELECT last_name
FROM employees
WHERE salary > (
	SELECT salary
	FROM employees
	WHERE last_name = 'Abel'
);
--------------------------
SELECT `last_name`,`job_id`,`salary`
FROM employees
WHERE `job_id` = (
	SELECT `job_id`
	FROM employees
	WHERE `employee_id` = 141) AND salary > 
	(
		SELECT salary
		FROM employees
		WHERE `employee_id` = 143
	);

2.多行子查询
	any/some: x > any(10 ,30 ,50) x大于括号内任意一个值都可以,即大于最小值
	all: x > all(10,30,50) 大于括号内全部,也就是大于最大值
	in 这就是where那里的in,后面根多行子查询,看作一个列表

	SELECT `employee_id`,`last_name`,`job_id`,`salary`
	FROM `employees`
	WHERE `salary` < ALL(
		SELECT DISTINCT salary
		FROM employees
		WHERE `job_id` = 'IT_PROG'
	);

3.放在select后面:知道存在就行,不用了解。

4.放在from后面:因为from后面跟的是表名,所以此处的含义表示的是这个表实际不存在,是经过筛选得到的,并且为了后面的引用,需要给表起别名。
	一般来说还需要用上连接查询。
	
5.放在exists后面,exists是存在的意思。

查找是否存在Colmenares这个人
以前:
	SELECT *
	FROM `employees`
	WHERE `last_name`="Colmenares";
现在:
	SELECT EXISTS(
		SELECT *
		FROM `employees`
		WHERE `last_name`="Colmenares"
	)AS 有无;
有的话返回1,无的话是0

分页查询

一页显示不完,需要分页,很常见

7.select	查询表名
1.from	表名1 别名
2.join	表名2 别名
3.on		连接条件
4.where	分组前筛选
5.group by 分组
6.having	分组后筛选
8.order by排序
9.limit 起始条目索引,显示的条目数 ★★★★★运行次序是最后一个

limit:
	起始条目索引默认从0开始,可以不写
	显示的条目数设置要显示的条目个数


联合查询

查询结果来自多张表,但是这些表之间没有关联,用union

SELECT `name` 姓名 FROM `beauty`
UNION
SELECT `boyName` FROM `boys`;
  • 两张表合成一张表,但是两张表的列数要相同,每列的数据类型最好相同
  • 不止可以两个相连,理论上可以n个表相连
  • union会自动去重,两个表内有相同的数据的话会只显示一个
  • union all 不会自动去重
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值