第三章限制数据和对数据排序课堂笔记和练习

– 使用where语句,比较不同类型数据 : 数值型、字符型、日期型

  • 比较操作符
    这里写图片描述

  • 比较数值型值
    数值型数据比较时可不加单引号

    --  1、查询所有部门编号为10的员工信息
        select *
               from emp
         where deptno = 10;
    
    --  2、查询所有部门编号不在10的员工信息
        select *
               from emp
         where deptno <> 10;
    
  • 比较字符型数据,加单引号”,区分大小写

    --  1、查询职位为'CLERk'的所有员工信息
        select * 
               from emp 
         where job = 'CLERK';
    
  • 比较日期型数据
    注:比较时应按照DD-MON-RR格式, 即 1-1月-2018 进行日期型数据比较
    在第四章有介绍日期格式,也有介绍数据转换函数

    --  1、查询所有在1981年后入职的员工信息
        select *
               from emp
         where hiredate > '31-12月-1981';
    

– 特殊比较运算符

这里写图片描述

  • 使用between … and … 运算符判断要比较的值是否在某个范围内(包括边界值

    --  1、查询薪水在1000到2000之间的所有员工信息
        select *
               from emp
         where sal between 1000 
           and 2000;
    
    --  2、查询入职日期在1981年之后,1987年之前的员工信息
        select *
               from emp
         where hiredate between '1-1月-82' 
           and '31-12月-86';--此处说明,81年后不能包含81年12月31日,
           所以特别注意between  and 保留边界值这一特性
    
  • IN(集合列表),判断要比较的值是否和集合中的任何一个值相等
    只要判断值与in中的任意一个数据相等即为真

    --  1、查询部门编号在10或20的所有员工信息
        select *
               from emp
         where deptno in (10, 20);
    
  • like 模糊查询,判断要比较的值是否满足部分匹配

    --  % 任意字符个数
    --  _ 一个字符
    --  1、查询所有名字以S开头的员工信息
        select *
               from emp
         where ename like 'S%';
    
    --  2、查询所有名字以S结尾的员工信息
        select *
               from emp
         where ename like '%S';
    
    --  3、查询所有名字包含S的员工信息
        select *
               from emp
         where ename like '%S%';
    
    --  4、查询所有名字第二个字母为A的员工信息
        select *
               from emp
         where ename like '_A%';
    
  • 插入一条数据到表格中(此为验证特殊字符查询添加,可先不管,直接复制执行,后面数据操作时会讲到)

    insert into emp 
    values (8002,
           'Jack_Ma', 
           'MANAGER', 
           7830,
           sysdate, 
           10000,
           10000, 
           10);
    
  • 特殊字符查找 escape 标示符

    -- 5、查询所有名字中以Jack_开头的员工信息
       select *
              from emp
        where ename like 'Jack@_%' 
       escape '@';
    
  • is null 判断是否为空值(不是0

    --  1、查询奖金为空的员工信息
        select *
               from emp
         where comm is null;
    
  • 逻辑运算符

    这里写图片描述

逻辑表达式的结果为TRUE(真),FALSE(假),NULL(空)

    --  逻辑与(and)
    --  必须满足全部条件
        select ename,empno,sal,job
               from emp
         where sal > 1100 
           and job = 'CLERK';

    --  逻辑或(or)
    --  只需满足其中一个条件
        select ename,empno,sal,job
               from emp
         where sal > 1100 
            or job = 'CLERK';

    --  逻辑非(not)
    --  不满足条件
        select ename,empno,sal,job
               from emp
         where mgr is not null;

    --  逻辑运算符not与特殊比较运算符一起使用

        select * from emp where deptno not in (10, 20);
        select * from emp where sal not between 1000 and 3000;
        select * from emp where ename not like '%A%';

        select * from emp where comm is not null;
        --注意not在is null中间

运算符优先级

  • 括号’()’优先于其他操作符

    这里写图片描述

– 排序order by

order by 子句必须写在select语句的最后

语法:

select [distinct] { * | 名 列名 |式 表达式 [ 别名][,...]}
from 表名
[where 条件]
[order by { 列名| 表达式| 列别名| 列序号} [asc|desc],…];

排序规则(以升序为例)

 1. 数字升序排列小值在前,大值在后。即按照数字大小顺序由
    小到大排列。

 2. 日期升序排列相对较早的日期在前,较晚的日期在后。例
    如:’01-SEP-06’在’01-SEP-07’前。

 3. 字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;
    中文升序按照字典顺序排列。

 4. 空值在升序排列中排在最后,在降序排列中排在最开始。

参与排序的多列都可以指定升序或者降序
ORDER BY子句中可以写没在SELECT列表中出现的列

  • 排序分类

    --  按列名排序
        select ename,sal 
          from emp 
         order by sal;
    
    --  按列别名排序
        select ename,sal 薪资 
          from emp 
         order by 薪资;
    
    --  按列数值排序
        select * 
          from emp 
         order by 1;(数字表示第几列,需注意,列数要<=总列数)
    
    --  升序asc(排序时默认排升序)
        select ename,sal 
          from emp 
         order by sal asc;
        与
        select ename,sal 
          from emp 
         order by sal;
        一样
    
    --  降序desc
        select ename,sal 
          from emp 
         order by sal desc;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值