zoukankan      html  css  js  c++  java
  • sql--查询

    一般格式:

    SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…

    FROM <表名或视图名>[,<表名或视图名>]...

    [WHERE <条件表达式>]

    [GROUP BY <列名1> [HAVING <条件表达式>]]

    [ORDER BY <列名>2 [ASC|DESC] ]

    WHEREE的查询条件:

    确定范围:BETWEEN AND,NOT BETWEEN AND;

    确定集合:IN,NOT IN;

    字符匹配:LIKE,NOT LIKE;

    通配符:%和_

    %    与包含一个或多个字符的字符串匹配
     
    [ ]  与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
     
    [^]  与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
     

    例子:

    • WHERE FirstName LIKE '_im' 可以找到所有三个字母的、以 im 结尾的名字(例如,Jim、Tim)。
     
    • WHERE LastName LIKE '%stein' 可以找到姓以 stein 结尾的所有员工。
     
    • WHERE LastName LIKE '%stein%' 可以找到姓中任意位置包括 stein 的所有员工。
     
    • WHERE FirstName LIKE '[JT]im' 可以找到三个字母的、以 im 结尾并以 J 或 T 开始的名字(即仅有 Jim 和 Tim)
     
    • WHERE LastName LIKE 'm[^c]%' 可以找到以 m 开始的、后面的(第二个)字母不为 c 的所有姓。

    查姓欧阳且全名为3个汉字的学生的姓名: select name from student where name like '欧阳_ _':汉字占两个字符的位置 

    空值:IS NULLL,IS NOT NULL;

    多重条件:AND,OR

    集函数:

    COUNT([DISTINCT|ALL] *)

    COUNT([DISTINCT|ALL] <列名>)

    SUM([DISTINCT|ALL] <列名>)

    AVG([DISTINCT|ALL]<列名>)

    MAX([DISTINCT|ALL]|<列名>)

    MIN([DISTINCT|ALL]<列名>)

    嵌套查询

    一个SELECT_FROM_WHERE 语句称为一个查询块,将一个查询块嵌套在另一个查询块的WHEREE子句或HAVING 短语的条件中的查询称为嵌套查询或子查询

    摘自:http://hi.baidu.com/i_ccboy/item/9a610a63ee4efa147ddecc2a

    带any嵌套查询
    select emp.empno,emp.ename,emp.sal from scott.emp where sal>any(select sal from scott.emp where job='manager');
    等价于
    select sal from scott.emp where job='manager' 结果为 sal:2975 2850 2450
    select emp.empno,emp.ename,emp.sal from scott.emp where sal>2975 or sal>2850 or sal>2450

    带some嵌套查询
    select emp.empno,emp.ename,emp.sal from scott.emp where sal=some(select sal from scott.emp where job='manager');
    等价于
    select sal from scott.emp where job='manager' 结果为 sal:2975 2850 2450
    select emp.empno,emp.ename,emp.sal from scott.emp where sal=2975 or sal=2850 or sal=2450
    注:any与some是等价的

    带all嵌套查询
    select emp.empno,emp.ename,emp.sal from scott.emp where sal>all(select sal from scott.emp where job='manager');
    等价于
    select sal from scott.emp where job='manager' 结果为 sal:2975 2850 2450
    select emp.empno,emp.ename,emp.sal from scott.emp where sal>2975 and sal>2850 and sal>2450

      1. ALL与ANY的关系就是,AND 与 OR 的关系。
      2. ANY与SOME等价,据说搞这两个不同的词出来是为了迁就英语语法。例如,在用= ANY 的地方在(英语)语法上就应该是= SOME。
      3. IN 与 = ANY 等价,均表示,变量在(子查询)列表之中,即 a IN (table B) 表示 a = ANY B.b
      4. NOT IN 与 <> ALL 等价,而不等于<> ANY,前两者均表示,变量不在(子查询)列表之中,即 a NOT IN (table B) 表示 a <> ALL B.b。而如果a <> ANY B.b,则只要任意一个b<>a就true了。
      5. IN 与 EXISTS 的性能区别主要来自,IN 会编列子查询的每行记录,然后再返回,而EXISTS 则只要遇到第一个满足条件的记录就马上返回。
      6. NOT IN 与 NOT EXISTS 并不能完全等价,只有当子查询中,select 关键字后的字段有not null约束或者有这种暗示时才用NOT IN。
  • 相关阅读:
    P3405 [USACO16DEC]Cities and States S
    P1536 村村通
    P2853 [USACO06DEC]Cow Picnic S
    Springboot整合Swing制作简单GUI客户端项目记录
    Gradle打包可执行jar文件
    gradle配置优化及dependencies中各种依赖方式说明
    Gradle 打可执行jar包
    java swing开发窗体程序开发(四)MVC结构
    Java Swing 图形界面开发(目录)
    使用idea开发普通java项目,使用maven管理依赖,使用slf4j和log4j的配置方案
  • 原文地址:https://www.cnblogs.com/nygfcn1234/p/3399743.html
Copyright © 2011-2022 走看看