1、查询    

        完整的查询语句    

        select [distinct] {* | 字段 | 聚合函数 | 表达式}from 表名        

        where  筛选数据,过滤数据        

        group by  分组,为了让聚合函数统计        

        having  分完组后过滤的条件        

        order by  字段名,字段名(字段名后面再加字段名) desc | asc        

        limit  限制显示的条数 a | b 第一个是起始位置,默认是0;第二个是显示的记录数,常用于分页查询

2、多表查询        

       inner join  内连接 左右两个表仅显示匹配成功的记录        

       left join  左右全部显示 右边显示匹配        

       right join  右表全部显示 左边显示匹配        

       full join  mysql 使用   union 间接完成

一:多表查询

1、什么是多表查询?

在多个表中查询需要的数据
       例如:有班级表 和学生表
        给你已给班级名称  请查询所有的学员数据
        先查班级表 得到一个班级的id  再根据id去学院表查询对应的学员

准备数据:
create table emp (id int,name char(),sex char,dept_id int);
insert emp values(,"大黄","m",);
insert emp values(,"老王","m",);
insert emp values(,"老李","w",); create table dept (id int,name char());
insert dept values(,"市场");
insert dept values(,"财务");
insert dept values(,"行政");

多表查询小练习

2、多表查询的方式

         1.笛卡尔积查询
                   什么是笛卡尔积,用坐标中的一条记录 去链接另一张表的所有记录
                   就像是把 两张表的数据做了一个乘法
                   这将导致 产生大量的无用重复数据

我们要的效果是:员工表中的部门id 与 部门表中的id相同 就拼接在一起

用 where 筛选出正确的数据

select *from emp,dept where emp.dept_id = dept.id;

on关键字

作用: 用于多表查询是 进行条件限制

select *from emp,dept on emp.dept_id = dept.id;  这是错误的语法 ,因为 on 它只能用在专门多表查询语句中

   2.内连接查询

inner join

select *from emp inner join dept  on emp.dept_id = dept.id;# 查询 所有的员工以及他们所属的部门信息

          3.左外连接    

left join   左边表中的数据完全显示   右边表中的数据匹配上才显示

select *from emp left join dept  on emp.dept_id = dept.id; # 查询 所有的部门以及他们所有的员工信息

          4 .右外连接     

right join         左边表中的数据匹配上才显示   右边表中的数据完全显示

select *from emp right join dept  on emp.dept_id = dept.id;# 在一个表中 显示多个表中的所有数据

         5. 全外链接  

full join  mysql不支持  oracle支持

可以通过union 间接实现

union  表示合并查询  意思是把多个查询结果合并在一起显示,

要求是 被合并的表结构必须相同,默认去除重复

合并但是不去除重复  union all

select *from emp right join dept  on emp.dept_id = dept.id

union

select *from emp left join dept  on emp.dept_id = dept.id;

总结:多表链接 在书写时 按照填空来书写   如果左边要全部显示 用left join

右边全部显示 用right join

全部显示 把左链接的结果和右链接的结果 合并

当然 也可以更多表一起查 但是 没有意义  并且你要尽量避免 太多表 一起查

最多三张 在多对多的时候

select *from emp left join dept left join xxtable on emp.dept_id = dept.id;

二:子查询

1、什么是子查询:

将上一次查询的结果 作为本次查询的原始数据(或是查询条件)

需求 查询出工资最高的人的信息     先查询出 财务部 最高工资是多少     拿着最高工资 去表中看 谁的工资和最高工资匹配

select *from emp where salary = (select max(salary) from emp);

2、子查询是干什么用的    

当你的需求一次查询无法满足需求时(一次select找不到你要的数据,得多次查询),这个子查询所实现的功能,完全可以被多表联查代替,子查询能干的事,多表联查也能干

3、如何使用子查询

首先明确子查询就是一个普通的查询,当一个查询需要作为查询使用时,用括号包裹即可

                     子查询的语法特点:就是一个select a中,包含另一个select b,b只能位于a的where后面

Python 41 多表查询 和 子查询的更多相关文章

  1. MySQL中的联表查询与子查询

    0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...

  2. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  3. MySQL多表查询之外键、表连接、子查询、索引

    MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...

  4. MySQL开发——【联合查询、多表连接、子查询】

    联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...

  5. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  6. mysql查询语句 和 多表关联查询 以及 子查询

    原文地址: http://blog.csdn.net/github_37767025/article/details/67636061 1.查询一张表: select * from 表名: 2.查询指 ...

  7. ORACLE 多表连接与子查询

    Oracle表连接 SQL/Oracle使用表连接从多个表中查询数据 语法格式: select 字段列表from table1,table2where table1.column1=table2.co ...

  8. Server Sql 多表查询、子查询和分页

    一.多表查询:根据特定的连接条件从不同的表中获取所需的数据 多表查询语法: SELECT table1.column, table2.column FROM table1, table2 WHERE ...

  9. ylb:SQL 表的高级查询-多表连接和子查询

    ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询. 1,ylb:表的高级查询-多表连接和子查询 返回顶 ...

  10. oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create table student1 ( sid ), sname ), sage )); Table created ...

随机推荐

  1. registerDataSetObserver:浅析Andorid ListView和Adapte

    最近由于遇到将内容分部绑定到ListView里的需求,追踪源码之后对ListView和Adapter有了点肤浅的认识,在此与大家分享. 这里用到了观察者模式,在ListView的setAdapter里 ...

  2. PHP 之phpqrcode类库生成二维码

    <?php /** * Created by PhpStorm. * User: 25754 * Date: 2019/6/4 * Time: 15:53 */ include "./ ...

  3. dva相关文档

    https://dvajs.com/guide/getting-started.html#%E5%AE%9A%E4%B9%89-model-------dva.js https://dvajs.com ...

  4. Burnside引理和polay计数 poj2409 Let it Bead

    题目描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ...

  5. office 2016最新安装及激活教程(KMS)【亲测有效】!!

    前言 博主的一个朋友,咳咳--你们懂得,想装office,于是我就上网找了一下激活的方法,亲测有效,而且也没有什么广告病毒之类的,还比较方便,所以传上来方便大家.好了,进入正题: 安装office 首 ...

  6. 史上最详细的CentOS 7 安装 HBase教程

    1. 前半部分参考 https://www.cnblogs.com/ivictor/p/5906433.html 2.问题 namenode无法启动,参考 https://stackoverflow. ...

  7. 腾讯云,搭建LAMP服务

    lamp (Web应用软件) 编辑 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被 ...

  8. “从客户端(content="XXXX")中检测到有潜在危险的 Request.Form值” 解决方案

    解决方案一: 在.aspx文件头中加: <%@Page validateRequest="false" %> 解决方案二: 修改web.config文件: <co ...

  9. vue组件 $children,$refs,$parent的使用详解

    1)$refs 首先你的给子组件做标记.demo :<firstchild ref="one"></firstchild> 然后在父组件中,通过this.$ ...

  10. 【codeforces 510A】Fox And Snake

    [题目链接]:http://codeforces.com/contest/510/problem/A [题意] 让你画一条蛇.. [题解] 煞笔提 [Number Of WA] 0 [完整代码] #i ...