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. P1886 滑动窗口&&P1440 求m区间内的最小值

    声明:下面这两个题就不要暴力了,学一学单调队列吧 推荐博文:https://www.cnblogs.com/tham/p/8038828.html 单调队列入门题 P1440 求m区间内的最小值 题目 ...

  2. ThinkPHP5.1安装

    安装 ====== 按照官方的推荐方式,推荐使用composer方式安装 TP5.1环境要求 PHP >= 5.6.0 PDO PHP Extension MBstring PHP Extens ...

  3. ganglia3.7.2,web3.7.1安装

    1.准备安装包 ganglia-3.7.2-2.el6.x86_64.rpm ganglia-gmetad-3.7.2-2.el6.x86_64.rpm ganglia-gmond-3.7.2-2.e ...

  4. [繁华模拟赛]Evensgn 剪树枝

    Evensgn 剪树枝 题目 繁华中学有一棵苹果树.苹果树有 n 个节点(也就是苹果),n − 1 条边(也就 是树枝).调皮的 Evensgn 爬到苹果树上.他发现这棵苹果树上的苹果有两种:一 种是 ...

  5. Ext.Ajax.request方法 参数

    json数据服务器回传的方法. 在api总指出回传的格式{success;true,data:{clientName: "Fred. Olsen Lines",   portOfL ...

  6. L - 贪心 基础

    Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem. The shor ...

  7. Linux统计行数命令wc(转)

    Linux wc命令用于计算字数. 利用wc指令我们可以计算文件的Byte数.字数.或是列数,若不指定文件名称.或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据. 语 ...

  8. Findbug插件静态java代码扫描工具使用

    本文转自http://blog.csdn.net/gaofuqi/article/details/22679609 感谢作者 FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具. ...

  9. Swift和Objective-C混合编程——Swift调用OC

    在iOS应用的开发中.Swift必将代替OC,两者的趋势是"短期共存,长期代替".但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性.两者也是有 ...

  10. js+jquery动态设置/添加/删除/获取元素属性的两种方法集锦对照(动态onclick属性设置+动态title设置)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140 ...