zoukankan      html  css  js  c++  java
  • python进阶(十一、mysql:连表查询、子查询)

    3.mysql数据库
    3.11 连表查询
    1)建表


    2)插入数据


    3)数据查询

    3.11.1. 交叉连接(基本不用):
    不使用任何匹配条件。生成笛卡尔积

    可以使用where条件查询(后面学了内、外连接,就用on条件了)

    因为字段名dep_id在连表中是惟一的,可以省略前面的表名

    连表查询并排序

    3.11.2. 内连接:inner join...on...
    内连接只显示满足on条件的数据
    select * from 表1 inner join 表2 on 条件;

    使用as重命名表,在条件判断时使用

    内连接形成了一张新表,后面可以继续使用where、order by等语法进行筛选、排序等

    3.11.3. 外连接
    3.11.3.1. 左外连接:left join...on...
    select * from 表1 left join 表2 on 条件;
    左外连接会将不满足on条件的左表数据,同时显示出来。

    3.11.3.2. 右外连接:right join...on...
    select * from 表1 right join 表2 on 条件;
    右外连接会将不满足on条件的右表数据,同时显示出来。

    3.11.3.3. 全外连接:union(了解)
    全外连接,会将不满足on条件的左表数据和右表数据,同时显示出来。
    mysql不支持全外连接(full join),但可以使用union将左外连接表和右外连接表联合起来。

    练习:
    1)找到技术部的所有人的姓名

    2)找到人力资源部年龄大于40岁的人的姓名

    3)找出年龄大于25岁的员工及员工所在部门

    4)以内连接的方式查询department和employee表,并以升序的方式显示

    5)显示各个部门的人数

    没有人的运行部,在上面的结果中没有体现。使用左外连接可以统计没有人员的部门

    上面的结果,按人数从高到低排序

    所谓连表:就是把两张大表连在一起创建1张大表,从from开始到on条件结束就是形成新表。形成新标之后,就可以使用where、group by、order by、having进行约束、分组、排序、过滤,和单表查询一样。

    3.12 子查询
    3.12.1. 带in关键字的子查询
    1)查询平均年龄在25岁以上的部门名
    连表查询:

    子查询:
    (1)先在employee表中查出平均年龄在25岁以上的部门id

    (2)在department表中查出dep_id对应的部门名

    (3)将两个语句嵌套,用第一条语句代替第二条语句的201,202

    2)查看技术部员工姓名
    (1)先查在department表中查技术部id

    (2)在员工表中查出部门id是技术部id的人名

    (3)使用子查询

    此处子查询只有一个查询结果可以使用“=”判断

    3)查看不足1人的部门名
    方法一:
    (1)先在employee表中查出有人的dep_id

    (2)在department表中查出部门名,部门名不在有人的部门id列表中

    (3)使用子查询

    方法二:
    (1)先在employee表中查出所有人的dep_id,并去重

    (2)在department表中查出部门名,部门名不在所有人的部门id列表中

    (3)使用子查询

    3.12.2. 带比较运算符的子查询
    比较运算符:=、!=、>、>=、<、<=、<>
    1)查询大于所有人平均年龄的员工名与年龄

    2)查询大于部门内平均年龄的员工名、年龄
    (1)查出各个部门的平均年龄

    (2)将查询结果与employee表进行连表

    (3)加where判断

    3.12.3. 带EXISTS关键字的子查询(了解)
    EXISTS关字键字表示存在。
    在使用EXISTS关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。True或False。
    当返回True时,外层查询语句将进行查询;当返回值为False时,外层查询语句不进行查询


    注意:
    如果一个问题既可以使用连表查询,也可以使用子查询。推荐使用连表查询,连表查询的效率更高。

  • 相关阅读:
    linux
    JAVA——遍历
    linux基础命令
    Java的反射和代理以及注解
    web 前端遇到的问题
    JTopo 使用
    阿里云服务器linux(cenos)下 jdk、tomcat的安装配置
    笔记--数据库总结
    0.01的区别
    犹豫——辛苦——坚持——收获 (2019北航软工培训总结)
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14088975.html
Copyright © 2011-2022 走看看