连接查询

  内连接

    1、查询语法

-- 隐式内连接
select 字段列表 from 表1, 表2... where 条件; -- 显式内连接
select 字段列表 from 表1 [INNER] join 表2 on 条件;

      (1)隐式内连接

-- 隐式内连接
select * from emp, dept where emp.dep_id = dept.did;

      (2)显式内连接

-- 显式外连接
select * from emp inner join dept on emp.dep_id = dept.did;

      

      多表查询中要查询单独字段时 ——  使用 emp.id  emp.name 这种格式  若表名称比较长,需要起别名

-- 查询 name, gender, salary, dname
select emp.name, emp.gender, emp.salary, dept.dname from emp, dept where emp.dep_id = dept.did; -- 给表起别名
select t1.name, t1.gender, t1.salary, t2.dname from emp t1, dept t2 where t1.dep_id = t2.did;

      

  外连接

    1、 外连接查询语法

-- 左外连接
select 字段列表 from 表1 left [outer] join 表2 on 条件 -- 右外连接
select 字段列表 from 表1 right [outer] join 表2 on 条件

    

     左外连接:

-- 左外连接
-- 查询emp表所有数据和对应的部门信息
select * from emp left outer join dept on emp.dep_id = dept.did;

    

    右外连接:

-- 右外连接
-- 查询dept表所有数据和对应的员工信息
Select * from dept right outer join emp on dept.did = emp.dep_id;

    

  子查询  

    1、 概念: 查询中嵌套查询,称嵌套查询为子查询

    

    2、 子查询根据查询结果不同,作用不同

      单行单列:作为条件值,使用 = 、!= 、>、< 等进行条件判断

select 字段列表 from 表 where 字段名 = ();

      例:

-- 查询工资高于 赵六 的员工信息
select * from emp where salary > (select salary from emp where name = '赵六');

      多行单列:作为条件值,使用 in 等关键字进行条件判断

select 字段列表 from  表 where 字段名 in (子查询);

      例:

-- 查询‘财务部‘和‘运营部‘所有的员工信息
select * from emp where dep_id in(select did from dept where dname = '财务部' or dname = '运营部');

      多行多列:作为虚拟表

select 字段列表 from (子查询) where 条件;

      例:

-- 查询入职日期是‘2015-11-11‘之后的员工信息和部门信息
select * from emp where join_date > '2015-11-11'; -- ① select * from emp LEFT OUTER JOIN dept on emp.dep_id = dept.did; -- 左外连接 ②
select * from emp, dept where emp.dep_id = dept.did; -- 隐式内连接③
-- 合二为一 ① ② 或① ③ 替换掉 emp
select * from (select * from emp where join_date > '2015-11-11') t1 LEFT OUTER JOIN dept on t1.dep_id = dept.did; -- (左外连接)
select * from (select * from emp where join_date > '2015-11-11') t1, dept where t1.dep_id = dept.did; -- (隐式内连接)

    

多表查询 —— 内连接&外连接&子查询的更多相关文章

  1. mysql数据库中的多表查询(内连接,外连接,子查询)

    用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...

  2. mysql(4)—— 表连接查询与where后使用子查询的性能分析。

    子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...

  3. 知识点:Oracle+表连接方式(内连接-外连接-自连接)+详解 来自百度文库

    Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)        (2)右外连接(右边的表不加限制)        (3)全外连接(左右 ...

  4. sql内连接外连接自然连接

    为什么我们要使用内连接和外连接呢?可以从两张或者多张表中找出,我们需要的属性. 这个比较好:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/ ...

  5. MySQL 查询语句--------------进阶7:子查询

    #进阶7:子查询 /* 含义: 出现在其他语句中的select语句,称为子查询或者内查询 外部的查询语句,称为主查询或外查询 分类: 按照子查询出现的位置: select后面:只支持标量子查询 fro ...

  6. DQL---连接查询(内连接、外连接)、子查询、分页查询

    一.连接查询 1.连接查询建立在有相互关系的两个表间,进行两个及两个以上的表或视图的查询. 2.对n张表进行查询,至少需要n-1个连接表的条件. 二.笛卡尔积(容易造成数据库宕机) 1.指表中每行元素 ...

  7. 【cl】多表查询(内、外连接)

    交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行    a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.u ...

  8. oracle 内连接 外连接 查询 笔记

    elect ename,job,sal from emp where deptno>10 order by sal desc; 联合查询,PK dept.deptno FK emp.deptno ...

  9. 【SQL】多表查询中的 外连接 ,on,where

    先简单粗暴给个结论,多表连结查询中,on比where更早起作用,系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行匹配过滤,where后语句为真,则能查询出来,而通过外连接 ...

  10. mysql8必知必会7 连接 内连接 外连接 交叉连接

    /* 2 需求:建立产品和分类表 1.查询每种分类的产品数量,没有产品的分类也要统计.(cname,quantity) 2.根据分类名称查询分类中的所有产品 */ -- --------------- ...

随机推荐

  1. [oeasy]python0070_ 字体样式_下划线_中划线_闪动效果_反相_取消效果

    字体样式 回忆上次内容 m 可以改变字体样式 0-10 之间设置的都是字体效果 0 复原 1 变亮 2 变暗 从3到10 又是什么效果 呢?? 真的可以blink闪烁吗? 3m 3m 实现斜体字的效果 ...

  2. elasticsearch初步使用学习

    通过使用elasticsearch,我们可以加快搜索时间(直接使用SQL的模糊查询搜索耗时会比较久,而且elasticsearch的响应耗时与数据量关系不大) es主要用于存储,计算,搜索数据 依次部 ...

  3. innodb存储引擎了解

    mysql常用的存储引擎分为innodb和myisam 其中innodb具有支持事务,执行行级锁,支持MVCC,外键,自动增长列,崩溃恢复等特性.并且mysql在5.5.5之后是数据的默认存储引擎 文 ...

  4. jmeter测试udp广播(jmeter发送udp)

    jmeter测试udp广播(jmeter发送udp) jmeter测试udp广播(jmeter接收udp) 先下载安装第三方插件 下载链接:https://jmeter-plugins.org/ins ...

  5. 基于 TrueLicense 项目证书生成

    一.创建公钥私钥 1.首先要用 KeyTool 工具来生成私匙库:(-alias别名 -validity 3650 表示10年有效,这个时间不是License的过期时间) keytool -genke ...

  6. 【Scala】02 循环

    1.支持集合直接作为循环体的条件: // - - - - 支持集合遍历 - - - - var arr = Array(10, 20, 30) var arr2 = List(10, 20, 30) ...

  7. 【JSON】JavaScript Object Notation JS对象表示规则

    什么是 JSON? JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. JSON采用完全独立于语言的文本格式 ...

  8. 【Layui】02 图标 Icon

    官网下载地址: https://www.layui.com/ 学习参考: https://www.bilibili.com/video/BV1ct411n7SN [Layui的文件结构] 我们只需要这 ...

  9. 国产AI发展是百家争鸣还是疯狂内卷(内耗)?

    本文纯属闲谈(吐槽) 国外搞深度学习弄出了TensorFlow(编译型)以后推到工业界和学术界,但是由于其不好用(太过于复杂),同一时间另一个框架pytorch(非编译型).由于pytorch是非编译 ...

  10. 中国2023年GDP增速5.2%

    在中美贸易战和三年全球疫情的大背景下,我国的经济依旧保持强有力的增速,这表明了经济发展不断转好,一切恢复到疫情和贸易战之前也是有待期望的.