zoukankan      html  css  js  c++  java
  • SQL限定查询

    1.SQL语句

    3.选出所需要的数据列

    SELECT [DISTINCT]*|列[别名],列[别名],列[别名]

    1.确定数据来源

    FROM 表名称 [别名]

    2.筛选数据行

    [WHERE 限定条件(s)]

    SELECT子句使整个语法左后才会被执行的子句,但是如果要进行数据筛选,必须要是用若干个条件

    关系运算:>、=、<、>= 、<= 、!=

    范围运算:BETWEEN..AND

    空判断:IS NULL、IS NOT NULL;

    IN判断:IN、NOT IN、exists()(复杂查询)

    模糊查询:LIKE、NOTLIKE

    以上的限定符都只能够判断一次,如果出现若干个限定符,那么就需要进行若干个限定符的连接,可以使用逻辑运算AND(与)、OR(或)、NOT(非)

    与操作表示的所有的判断条件都满足时返回真(TRUE)

    或操作表示若干个判断条件只要有一个满足就返回真(TRUE)

    以上给出的判断符号是SQL中的标准支持,其他的数据库可能有自己扩充的内容

    2.关系运算符

    关系运算符主要进行大小的判断

    1.实例:查询工资低于1200的雇员(不包含1200)

    SELECT * FROM emp WHERE sal<1200;

    2.实例查询出工资是3000的雇员

    SELECT * FROM emp WHERE sal=3000;

    对于“=”需要注意的是,在Oracle数据库之中,数据是区分大小写的

    对与不等于的判断符号有两个

    3.查询职位不是办事员的雇员(职位是job字段,办事员的职位名称CLERK)

    对于不等于的判断有两个符号!=、<>

    SELECT * FROM emp WHERE job<>'CLERK';

    3.逻辑运算

    逻辑运算可以保证连接多个条件,如果要连接主要是用AND、OR完成

    1.实例:要求查询出不是办事员,但是工资低于3000的雇员

    SELECT * FROM emp WHERE job<>'CLERK' AND sal<3000;

    2.查询出职位不是办事员也不是销售的雇员信息

    第一个条件:job<>'CLERK';

    第二个条件:job<>'SALESMAN'

    SELECT * FROM emp WHERE job<>'CLERK' AND job<>'SALESMAN';

    3.查询出职位是办事员,或者工资低于1200的所有雇员

    第一个条件:job='CLERK';

    第二个条件:sal<1200

    两个条件满足一个即可,使用OR连接

    SELECT * FROM emp WHERE job='CLERK' OR sel<1200;

    4.处理AND和OR还可以使用NOT进行求反即使TRUE变为FALSE、FALSE变为TRUE

    SELECT * FROM emp WHERE NOT sal>2000

    此时表示的是工资小于等于2000

    4.范围运算BETWEEN..AND

    主要功能时进行范围的查询,使用语法:

    WHERE 字段|数值 BETWEEN 最小值 AND 最大值

    实例:查询出工资在1500~3000之间的所有雇员

    SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000

    使用BETWEEN..AND 是一个运算符,而是用关系与逻辑的组合属于两个运算符,效率会更高

    在Oracle中的所有运算符都不受数据类型的控制,在之前的使用的是数字进行了判断,除了数字之外,还可以用字符串或者日期来进行判断

    1.实例:查询出所有在1981年雇佣的雇员信息

    可以按照已有的数据结构通过字符串来描述日期

    SELECT * FROM emp WHERE hiredate BETWEEN‘01-1月-81' AND ’31-12月-1981'

    5.空判断

    null从数据库定义上来讲属于一个未知的数据,任何情况下如果任何一个数字与null进行计算,还是结果为null

    SELECT null+1 FROM emp;

    某些数据列是允许存在null,但是对于null不能使用关系运算进行判断,关系可以判断的是数据,null不是空字符串也不是数字,在SQL语句之中只能IS NULL来判断为空,以及IS NOT NULL(NOT字段IS NULL)判断不为空

    1.实例:查询出所有领取佣金的雇员信息(comm字段表示的是佣金,如果领取,comm内容不是null)

    SELECT * FROM emp WHERE comm IS NULL;

    6.IN操作符(谓词IN)

    IN指的是根据一个指定的范围进行数据查询

    1.查询出雇员编号是7369、7566的雇员信息

    SELECT * FROM emp WHERE empno=7369 OR empno=7566 ;

    面对指定数据范围的时候可以进行IN操作

    SELECT * FROM emp WHERE empno IN(7369,7566);

    在使用NOT IN的时候,如果查找的数据范围之中包含null值,不会有任何的结果返回,IN操作无此限制

    2.关系IN操作中出现null

    SELECT * FROM emp WHERE empno IN(7369,7566,null);

    3.观察NOT IN中出现null

    SELECT * FROM emp WHERE empno NOT IN(7369,7566,null);

    7.模糊查询LIKE(核心)

    LIKE可以实现数据的模糊查询操作,如果要想使用LIKE则必须使用如下的两个匹配信号:

    “_":匹配任意的一位符号

    "%":匹配任意的符号(包含匹配0位、1位、多位)

    1.查询所有雇员姓名中以字母A开头的雇员信息

    第一个字母是固定的,后边的内容随意

    SELECT * FROM emp WHERE ename LIKE ‘A%’;

    2.查询所有雇员姓名中第二个字母是M的所有信息

    第一位可以任意,但是必须战役为,使用“_",后边的位随意

    SELECT * FROM emp WHERE ename LIKE ‘_A%’;

    3.查询雇员姓名中任意位置上存在有字幕A的雇员信息

    开头、结尾、中间都可以,使用“%A%”

    SELECT * FROM emp WHERE ename LIKE %A%’;

    4.关于LIKE的两点说明:

    如果在使用LIKE进行限定查询的时候,没有设置任何的关键字,那么表示查询全部

    SELECT * FROM emp WHERE ename LIKE %%’;

    LIKE可以在任意的数据类型上使用

    SELECT * FROM emp WHERE ename LIKE %A%’ OR sal LIKE ‘%1%’ OR hiredate LIKE ‘%81%’;

    虽然所有的数据类型都支持LIKE,但是往往会在字符串上使用

  • 相关阅读:
    jquery中$.get()提交和$.post()提交有区别吗?
    数据库连接池的原理。为什么要使用连接池。
    execute,executeQuery,executeUpdate的区别是什么?
    数据库的三级模式与二级映像
    KMP算法(超容易理解的next数组求法)
    软件危机(含通俗理解帮助记忆)
    O(1)复杂度求一个栈的最小值
    操作系统进程状态模型
    判断单链表是否有环,如果有环则找到其环的入口
    两个单链表判断是否相交
  • 原文地址:https://www.cnblogs.com/Hiramunderneath/p/15365000.html
Copyright © 2011-2022 走看看