zoukankan      html  css  js  c++  java
  • SQL学习笔记8——SQL中检索数据之子查询

    SQL学习笔记8——SQL中检索数据之子查询

    含义

    • 嵌套在其他语句内部的select语句称为子查询或内查询,
    • 外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多
    • 外面如果为select语句,则此语句称为外查询或主查询

    分类

    1. 按出现位置
      • select后面:仅仅支持标量子查询
      • from后面:支持表子查询
      • where或having后面:标量子查询、列子查询、行子查询
      • exists后面(相关子查询):标量子查询、列子查询、行子查询、表子查询,exists()相当于一个函数,存在则返回1否则返回0,结果可作为布尔值做逻辑运算
    2. 按结果集的行列
      • 标量子查询(单行子查询):结果集为一行一列
      • 列子查询(多行子查询):结果集为多行一列
      • 行子查询:结果集为多行多列,一般为一行多列
      • 表子查询:结果集为多行多列

    示例

    1. where或having后面
      • 特点
        • 子查询放在小括号内
        • 子查询一般放在条件的右侧
        • 标量子查询,一般搭配单行操作符使用< > >= <= = <>
        • 列子查询,一般搭配多行操作符使用IN ANY/SOME ALL
        • 子查询的执行优先于主查询,主查询的条件用到了子查询的结果
      • 案例
        • 查询谁的工资比Abel高?
        #标量子查询
        USE myemployees;
        SELECT
        	* 
        FROM
        	employees 
        WHERE
        	salary > ( SELECT salary FROM employees WHERE last_name = 'Abel' );
        
        • 返回location_id是1400或1700的部门编号
        # 列子查询
        SELECT
        	last_name 
        FROM
        	employees 
        WHERE
        	department_id IN ( SELECT DISTINCT department_id FROM departments WHERE location_id IN ( 1400, 1700 ) );
        
        • 查询员工编号最小并且工资最高的员工信息
        #行子查询
        SELECT *
        FROM employees
        WHERE (employee_id,salary)=(
        	SELECT MIN(employee_id),MAX(salary)
        	FROM employees
        );
        
    2. select后面
      比较容易理解,但要注意仅仅支持标量子查询
    3. from后面
      将子查询结果充当一张表,要求必须起别名
    4. exists后面(相关子查询)
      • 查询没有女朋友的男神信息
      SELECT bo.*
      FROM boys bo
      WHERE NOT EXISTS(
      	SELECT boyfriend_id
      	FROM beauty b
      	WHERE bo.id=b.boyfriend_id
      );
      
  • 相关阅读:
    linux stat 命令查看文件信息
    亟需为个人信息安全“保驾护航”
    CISSP认证考试CBK知识点变更分析
    CISM国际注册信息安全经理认证知识体系
    (ISC)² CISSP,SSCP官方知识域更新常见问题解答
    SQL函数大全——实例 yangan
    ArcGIS Server 体系结构(转) yangan
    DevExpress组件之——PopupMenu组件 yangan
    Visual Studio 2008 中工具箱丢失,解决方法 yangan
    Word文档内容无法选中以及点击鼠标无反应的问题(PowerDesigner 12.5 导致) yangan
  • 原文地址:https://www.cnblogs.com/sanmujun/p/12638345.html
Copyright © 2011-2022 走看看