ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL-外键连接和子查询

2022-07-27 10:33:55  阅读:181  来源: 互联网

标签:外键 查询 dept emp 和子 SQL WHERE id SELECT


外键连接

 左外连接:

语法

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";

运行结果

标签:外键,查询,dept,emp,和子,SQL,WHERE,id,SELECT
来源: https://www.cnblogs.com/aimz01/p/16523420.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有