【02】 - 过滤和排序

一、日期格式:

1. 日期格式属性:

       默认格式: DD-MON-RR

       

     修改: SQL> alter session set NLS_DATE_FORMAT = ‘yyyy-mm-dd’;

       

* 需要改回去的直接把 ‘yyyy-mm-dd’ 换成 ’DD-MON-RR’ 执行就OK!

 

二、Where筛选:

where语句后面可以用多种条件方式:

SQL> SELECT ... FROM ,,,          --col_name为列名

WHERE col_name > 10   --直接大于一个值(可以是字符)

col_name in ()    --in一个集合

col_name between a and b     --ab之间且a<b,[a,b]

col_name > a and col_name < b   --ab之间且a<b,(a,b)

 

2.  日期: 02-基本select语句中提到,日期需要用单引号’’引起来,这里用where筛选:

     SQL> select * from emp where HIREDATE > ‘1981-12-03’; (筛选入职日期比1981-12-03晚的员工)

    

 

3.  Between和符号:查询工资在1000~2000之间的员工信息:

SQL> select * from emp WHERE sal between 2500 and 3000;

SQL> select * from emp where sal >= 2500 and sal <= 3000; (这两句话是一样的结果)

 

 

4.  集合(in):

a)  查询10,20号部门的员工信息:

SQL> select * from emp where deptno in(10, 20);

 

 

b)  查询不是10,20号部门的员工信息:

SQL> select * from emp where deptno NOT in(10, 20);

 

 

c) IN 中的集合含有空值null的情况:

1)  in (集合中含有空值) -- 查询结果不受影响

    SQL> select * from emp where comm in(300, 1400, null);

       

 

2)  not in (集合中含有空值) -- 查询结果受影响

    SQL> select * from emp where comm not in(300, 1400, null);

 

 

3)  in中含有空值受不受影响的原因:

a. select基本语句中提到:任何表达式和null运算都为空;

 

b. in中含有空值: comm in(300, 1400, null)或关系,等价于comm = 300 || comm = 1400 || comm = null,null为空,所以检索结果只剩下3001400.

 

c. not in中含有空值: comm not in (300, 1400, null)与关系,等价于comm = 300 and comm = 1400 and comm = null,整个结果为空(NULL)

 

三、Like模糊查询:

% 代表零个或多个字符(任意个字符).

_ 代表一个字符.

 

5.  查询名字S开头的员工信息:

SQL> select * from emp where ename LIKE 'S%';

 

6.  查询名字含有4个字母的员工信息:

SQL> select * from emp where ename LIKE '____';

 

7.  转义字符:  (转义的意思拿%来说, %代表任意个字符,那么%的意思已经被转移了,如果我们要打印%,那就需要把它原意转回来,用反 斜杠(\))

* 查询名字含有下划线(_)的员工.

这里我们先插入三条数据,插入命令将在后面学到,先忽略它的用法:

SQL> insert into emp(empno, ename, deptno) values(111, 'DOU_BI', 10);

SQL> insert into emp(empno, ename, deptno) values(222, 'Tay___HH', 10);

SQL> insert into emp(empno, ename, deptno) values(333, '_Hello_', 10);

 

然后用模糊查询名字含有下划线(_)的员工:  escape(避开)

SQL> select * from emp where ename like '%\_%' escape '\';

 

 

四、排序order by:

1. order by 默认按照升序(从小到大)排序

i. desc 降序

ii. asc 升序

2. order by后面+列名 |表达式 |别名 |序号

 

8.  列名: 按照薪水排序查询员工信息

SQL> select * from emp ORDER BY sal;

 

 

9.  别名: 还记得在基本select语句中提到的年薪吧,用表达式和别名来做的.这里按照薪水排序查询员工信息:

这里先把之前上面插入的数据删除了吧:

SQL> delete from emp where job is null;

 

 

然后在查询:

SQL> select empno, ename, (sal * 12 + nvl(comm, 0)) "年薪" from emp

  2  order by 年薪;    

-- 命令在遇到分号后执行,直接回车还可以输入,以免太多太乱

 

 

 

10.  序号: select所要检索的列中,再照先后顺序从1开始:

这里仍然按照薪水排序查询员工信息:

SQL> select empno, ename, sal, deptno from emp order by 3;

 

 

11.  Order by 遇上空值: 还记得之前提到的吧, 任何表达式和null运算都为空.

按照奖金降序排序查询员工信息:

SQL> select * from emp order by comm desc;

 

 

Nulls Last: 在遇到空值后, 一般来说null和最后一个0是一个意思的,但它居然排在前排,这就需要使用nulls last来将它往后置了.

SQL> select * from emp order by comm desc nulls last;

 

 

 

12.  order by 后面有多个列: 如果多个列中有desc修饰,只作用于最近的那一列

按照部门升序、月薪降序查询员工信息:

SQL> select * from emp

        order by deptno asc, sal desc;

 

 

五、ED(Edit编辑器)

13.  12点就是用到编辑器来写的,就是一个记事本,这样分行写比较清晰明了

    在SQL> 输入ed或者edit就会自动弹出记事本(当然,如果刚登陆,没有吸入其他命令是不能写入的,可以先写个select语句检索一下表)

 

    注意: /前后不能加分号,在保存退出后,在命令行输入 /即可执行该命令

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值