zoukankan      html  css  js  c++  java
  • MySql中子查询,左链,右链,内链,关键字join

    --内连接

    * 功能
        拿左表的记录去匹配右表的记录,若符合条件就显示(二张表交集部分)
    * 语法
        1)隐式内连接
            select ... from 左表,右表 where 连接条件;
        2)显示内连接【推荐】
            select ... from 左表 [inner] join 右表 on 连接条件;
    -- 隐式
    SELECT * FROM dept d,emp e WHERE d.id = e.dept_id AND d.name = '开发部';
    -- 显示
    SELECT * FROM dept d INNER JOIN emp e ON d.id = e.dept_id WHERE d.name = '开发部';

    --外连接

    1. 左外连接
        功能
          展示左表全部,再去匹配右表,若符合条件显示数据,不符合显示null
        语法
          select ... from 左表 left [outer] join 右表 on 连接条件;
        
    2. 右外连接
        功能
          展示右表全部,再去匹配左表,若符合条件显示数据,不符合显示null
        语法
          select ... from 左表 right [outer] join 右表 on 连接条件;
    # 举例
    # 左外连接
    -- 查询所有员工信息及对应的部门名称 SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.dept_id = d.id; # 右外连接 -- 查询所有部门及对应的员工信息 SELECT * FROM emp e RIGHT OUTER JOIN dept d ON e.dept_id = d.id;

    注意:外连接必须加条件

       连接条件= 表个数-1

    --子查询(嵌套)

    * 功能
            一条select查询结果,作为另一条select语法的一部分
    * 语法
        1)查询结果单值(使用=SELECT MAX(salary) FROM emp;
        2)查询结果单列(使用in)
            SELECT salary FROM emp;
        3)查询结果多列
            SELECT * FROM emp;
            
    * 规律
        子查询结果单列或单值,一般作为条件在where后面使用
            select ... from 表名 where 字段 in|= (子查询);
        子查结果为多列,一般作为虚拟表在from后面使用
            select ... from (子查询) [as] 表别名;
    # 子查询结果为单值
    -- 举例 查询工资最高的员工是谁? 
    SELECT * FROM emp WHERE salary = (SELECT MAX(salary) FROM emp);
    
    # 子查询结果为单列多行
    -- 举例 查询工资大于5000的员工
    SELECT * FROM dept WHERE id IN(SELECT dept_id FROM emp WHERE salary > 5000);
    
    # 子查询结果为多列多行
    -- 举例 查询出2011年以后入职的员工信息,包括部门名称
    -- 此处将查询语句当作临时表使用
    SELECT * FROM (SELECT * FROM emp WHERE join_date >= '2011-1-1') e LEFT OUTER JOIN dept d ON e.dept_id = d.id;
  • 相关阅读:
    JS 做的鼠标放大镜(初级)
    用JS做关灯游戏(初级)
    JS 做时钟
    Magic Powder
    (记忆化搜索)Jury Compromise (poj 1015)
    (求凹包) Bicycle Race (CF 659D) 简单题
    Phalanx (hdu 2859)
    第十四个目标 (fzu)
    (树形dp)鸡毛信问题 (fzu 1227)
    (最大m子段和) Max Sum Plus Plus (Hdu 1024)
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13440100.html
Copyright © 2011-2022 走看看