多表查询

多表查询

1.连表查询

  • 笛卡尔积,先计算两张表的笛卡尔积,再根据用户给出的条件进行筛选
  • select * from 表1,表2 where 条件
  • 内连接 inner join...on 连接条件
    • select * from 表1 inner join 表2 on 条件
    • 只显示两张表中互相匹配的项,其他匹配不显示
  • 外连接
    • 左外连接 left join...on
      • select * from 表1 left join 表2 on 条件
      • 左边的表1会显示不匹配的项目,除了本身的数据,其他的全是NULL
    • 右外连接 right join...on
      • select * from 表1 right join 表2 on 条件
      • 右边的表1会显示不匹配的项目,除了本身的数据,其他的全是NULL
    • 全连接
      • select * from 表1 left join 表2 on 条件 union  select * from 表1 right join 表2 on 条件
      • 将所有不匹配的选项全部显示,只能一左一右,不能两个左,两个右.

2.子查询

  • IN子查询
    • 表达式 (not) in 子查询
      • 表达式:用于指定表达式,当表达式与子查询返回的结果集中的某个值相等时,返回TRUE,否则返回FALSE,若使用关键字not,则结果相反
      • 子查询: 用于指定子查询,这里的子查询会返回一列数据
  • 比较运算符子查询
    • 比较运算符所使用的子查询主要对于表达式和子查询的返回值进行比较运算,其表达格式为<表达式> {= | < | > | >= | <= | <=> | < > | != }{ ALL | SOME | ANY} <子查询>
      • all,some,any : 可选项,用于指定比较运算的限制,其中,关键字all用于指定表达式需要与子查询结果集中的每个值进行比较,当都满足关系时,返回true,而some和any是同义词,表示表达式只要与子查询结果集中的某个值满足比较关系,就返回True
  • EXIST子查询
    • 关键字exist所使用的子查询主要用于判断子查询结果集是否为空,其语法格式为:exist<子查询>,若子查询的结果集不为口令,返回True,
  • 什么时候用as重命名?
    • 在内连接中的等值连接,字段名字相同时需要用重命名,方便对字段的操作
    • 当进行多表连接时,重新形成的表需要进行重命名,方便通过新的表名找到这张新表的字段
    • 当记性聚合操作时,需要对min(字段名)这种进行重命名
posted @ 2019-08-02 16:01  恰蜜小嘴  阅读(120)  评论(0编辑  收藏  举报