zoukankan      html  css  js  c++  java
  • 06_mysql多表查询

    1 关系数据表的各种操作

    并(union)

    • 就是把具有相同字段数目字段类型的表结合并到一起。

    例如:

    name sex
    tom girl
    jack boy
    name sex
    tom girl
    rose boy

    并的结果

    name sex
    tom girl
    jack boy
    rose boy

    笛卡尔积

    • 笛卡尔积就是没有连接条件表关系返回的结果
    • 注意点就是没有连接条件

    内连接

    • 基于笛卡尔积的数据记录表中,按照相应字段值的比较条件进行选择生成一个新的关系

    分类:

    • 自然连接:

    • 等值连接:

    • 不等连接:

    外链接

    分类:

    • 左外连接
    • 右外连接
    • 全外连接

    2 内连接查询

    3 外链接查询

    4 子查询

    为什么使用子查询?

    • mysql软件虽然可以通过连接查询实现夺标查询数据记录,但是不建议使用,这是
      因为连接查询的性能很差!!因此出现了连接查询的替代者子查询

    • 在具体的开发应用中,mysql软件推荐使用子查询来实现多表查询数据记录

    • 所谓的子查询,就是在一个查询之中嵌套了其它的若干查询,即在一个select查询语句的where或from子句中包含的另一个select查询语句

    注意点

    • 子查询一般出现在where,from子句中

    • 该查询语句中可能包含in,any,all,exists

    • where:该处的子查询一般返回单行单列,多行单列,单行多列数据

    • from:该位置的子查询一般返回多行多列数据记录,可以当做一张临时表

    返回结果是单行单列和单行多列

    • 单行单列
    select * from t_emp where sal > (select sal from t_emp where ename = 'tzhaodi')
    
    • 单行多列(很少出现)
    select ename from where (sal,job) = select sal,job from t_emp where ename = 'zhaodi'
    

    返回结果是多行单列子查询

    当查询的结果是多行多列的时候,该子查询语句一般会在where语句之后出现,通常包含in,any,all,exists

    • in
    select username from t_student where username in (select username from t_class)
    
    • any

    = any,>any,<any

    select * from studnet where stu_age >any(select stu_age from class where stu_name = 'zhaodi')
    
    
    • exists

    • all

    返回结果是多行多列子查询

    一般在from语句之后出现使用

    一个小小的程序员
  • 相关阅读:
    E
    J
    D
    并查集加优先队列
    动态规划-数位DPwindy
    动态规划-分组背包问题
    动态规划-LIS1
    动态规划-01背包
    [cf1434E]A Convex Game
    [atAGC106F]Figures
  • 原文地址:https://www.cnblogs.com/zhaod/p/8371576.html
Copyright © 2011-2022 走看看