东软实习之数据库(7)——子查询

  ##子查询

     括号内的查询叫做子查询,也叫内部查询,先于主查询执行。

       子查询的结果被主查询(外部查询)使用 Expr operator包括比较运算符。

      • 单行运算符:>、=、>=、<、<>、<=
      • 多行运算符: IN、ANY、ALL

      

       子查询可以嵌于以下SQL子句中:

    1. WHERE子句
    2. HAVING子句
    3. FROM子句

      

     子查询使用指导

      • 子查询要用扩号扩起来
      • 将子查询放在比较运算符的右边
      • 在子查询中的ORDER BY 子句不需要,除非你正在执行Top-N分析
      • 对于单行子查询要使用单行运算符
      • 对于多行子查询要使用多行运算符

  #子查询类型

      


  #单行子查询

    单行子查询

    • 子查询只返回一行一列
    • 使用单行运算符

     

      

    • 子查询中使用组函数   

        查询工资最低的员工姓名,岗位及工资

        

    • HAVING子句中使用子查询

        查询部门最低工资比20部门最低工资高的部门编号及最低工资

        


  #多行子查询

    多行子查询,子查询返回记录的条数可以是一条或多条。

    多行子查询需要使用多行操作符。  

    常用的多行操作符包括:   

    • IN
    • ANY
    • ALL

    IN操作符和以前介绍的功能一致,判断是否与子查询的任意一个返回值相同。返回的结果可以是一条或多条。

    #IN

      

    #ANY:表示任意的。

      < ANY 比子查询返回的任意一个结果小即可,即小于返回结果的最大值。

      = ANY 和子查询中任意一个结果相等即可,相当于IN。

      > ANY比子查询返回的任意一个结果大即可,即大于返回结果的最小值。

      

    #ALL:表示所有的。

      < ALL 比子查询返回的所有的结果都小,即小于返回结果的最小值。

      > ALL比子查询返回的所有的结果都大,即大于返回结果的最大值。

      = ALL 无意义,逻辑上也不成立。

      



  ##多列子查询

    到目前为止您已经能完成单行和多行子查询,但是都是只有一个列在SELECT语句的WHERE或HAVING子句中进行比较。

    如果想多个列进行比较呢,您必须使用逻辑运算符编写一个复合WHERE子句。  

    多列子查询可以让您将WHERE子句中多个条件合并成一个

      

    多列比较

  

原文地址:https://www.cnblogs.com/destinywxy/p/9329414.html

时间: 2024-10-09 22:18:15

东软实习之数据库(7)——子查询的相关文章

前端学数据库之子查询

查询数据库,当查询条件比较复杂时,常常需要用到子查询.子查询(Subquery)是指出现在其他SQL语句内的SELECT子句.本文将详细介绍子查询 定义 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句 SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2); 其中,SELECT * FROM t1,称为外层查询(Outer Query/Outer Statement),SELECT col2 FROM t2,称为子查询(Su

数据库之子查询和事务隔离级别

数据库大的知识点,特此补上.看的还是<漫画数据库>. 一.查询 如果要从一个数据库里面检索出某一字段为最大的数据项,那用什么方法呢?--其实用子查询就可以查到. 1)子查询是查询里面再嵌套查询. people表: 如果我要查询年龄最大的那一行数据项.就可以使用子查询. select * from people where age = (select max(age) from people); 选出people里面的最大年龄,再选出年龄等于最大值的数据. 当然,还有另外一种方法. select

11-03C#基础--数据库之子查询语句

一.子查询--查询的嵌套(重点记忆) select bumen,COUNT(*) from haha group by bumen having COUNT(*)>=5 select MAX(age)from haha where bumen='销售部' select*from haha where bumen='销售部'and age =35 --汇总-- select MAX(age)from haha where bumen in ( select bumen from haha grou

东软实习之数据库(12)——序列、索引、同义词

#序列 序列的概念 序列是一种用于产生唯一数字列值的数据库对象,一般使用序列自动地生成主码值或唯一键值,序列可以是升序或降序. 序列特点: 可以自动产生唯一数值; 可被多个用户共享: 典型应用是生成主键值,用于标识记录的唯一性: 使用缓存加速序列的访问速度. #创建序列语法 创建序列,必须有CREATE SEQUENCE或CREATE ANY SEQUENCE权限.  序列被创建后,可以通过查询数据字典视图USER_SEQUENCES查看序列信息. 创建序列 sequence 序列产生器的名称

MySql数据库之子查询和高级应用

MySql数据库中的子查询: 子查询:在一条select查询语句中嵌套另一条select语句,其主要作用是充当查询条件或确定数据源. 代码案例如下: 例1. 查询大于平均年龄的学生: select * from students where age > (select avg(age) from students); 例2. 查询学生在班的所有班级名字: select name from classes where id in (select cls_id from students where

数据库(子查询、主键、外键)

-------子查询------------select bumen,COUNT(*)as 人数 from haha group by bumen having COUNT(*)>=5select MAX(nianling) from haha where bumen='销售部'select *from haha where bumen='销售部'and nianling=56--汇总select *from haha where nianling = (select MAX(nianling)

MySQL数据库8 -子查询,联合查询

一 使用IN关键字的子查询 问题: 查询游戏类型是'棋牌类' 的游戏的分数信息 - 游戏分数表中并未包含游戏类型信息 思路一:采用链接查询 思路二: 分两步进行,首先找到所以'棋牌类'游戏的编号,再以这一组编号为查询依据完成查询 select * from scores where gno in (select gno from games where gtype ='棋牌') 例:查询没有参与5号游戏的玩家QQ select user_qq from users where user_qq n

数据库(子查询)

where parent_id=0 select shop_price from`kangarooisland_database`.`ki_goods`where cat_id in( select cat_id from`kangarooisland_database`.`ki_category` where parent_id=0) and is_hot=1 order by goods_id desc LIMIT 4 //查询数据库得到热销商品的价格 shop_price$hot_good

数据库的子查询、连接查询

新建两个表,teacher student create table teacher ( id int primary key auto_increment, name varchar(20)  not null default 't' )engine innodb character set utf8; create table student ( id int primary key auto_increment, name varchar(20) not null default 't',