SQL-外键连接和子查询
2022/7/28 2:24:16
本文主要是介绍SQL-外键连接和子查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
外键连接
左外连接:
语法
SELECT 字段列表 FROM 表1 LEFT JOIN 表2 ON 条件;
运行结果
左外连接是查询的是左表所有数据以及其交集部分
数据表
这张表并没有进行外键约束 我们使用左连接看一下
可以看见将左边的表全部输出了 以及他们的交集 交集就是我们的dept_id和id都是交集
右外连接
语法
SELECT 字段列表 FROM 表1 RIGHT JOIN 表2 ON 条件;
运行结果
右表外连接是查询的是右表所有数据以及其交集部分
添加在dept表中添加了一个数据而并没有在emp的里关联的数据
我们使用右连接查询看一下
子查询
概念:查询中嵌套查询 称嵌套查询为子查询
例如:我们要查询工资最高的员工信息 我们还需要两个sql语法
SQL语句
SELECT MAX(salary) FROM emp; -- 最高9000 SELECT * FROM emp WHERE salary=9000;
运行结果
特别特别麻烦 但是我们可以使用一条SQL完成这个操作
SQL语句
SELECT * FROM emp WHERE emp.salary= (SELECT MAX(salary) FROM emp);
运行结果
这就是子查询一种还有很多中 接下来我们详细说明
子查询不同情况
1.子查询的结果是单行单列的:
- 子查询可以作为条件 使用运算符去判断 运算符:>,>=,<,<=, =
例如:查询员工工资小于平均工资的人
SQL语句
SELECT * FROM emp WHERE salary<(SELECT AVG(salary) FROM emp);
平均工资
运行结果
都是小于平均工资的数据
2. 子查询的结果是多行单列的
- 子查询可以作为条件 使用运算符in来判断
例如:查询“财务部”和“市场部”所有的员工信息
不使用子查询的SQL语句
-- 先查询财务部和市场部的id是多少 SELECT id FROM dept WHERE name="财务部" OR name="市场部"; -- 使用id进行查询数据 SELECT * FROM emp WHERE dept_id=3 OR dept_id = 2;
运行结果
使用子查询的SQL语句
SELECT * FROM emp WHERE dept_id IN(SELECT id FROM dept WHERE name="财务部" OR name="市场部");
运行结果
3.子查询的结果是多行多列的
子查询可以作为一张虚拟表
例如:查询员工入职日期是2011-11-11日之后的员工信息和部门信息
字查询SQL语句
SELECT * FROM dept t1,(SELECT * FROM emp WHERE emp.join_date > "2011-11-11") t2 WHERE t1.id=t2.dept_id;
运行结果
普通内连接SQL语句
SELECT * FROM emp t1,dept t2 WHERE t1.dept_id =t2.id AND t1.join_date > "2011-11-11";
运行结果
这篇关于SQL-外键连接和子查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行