一、日期格式:
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为空,所以检索结果只剩下300和1400的.
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语句检索一下表)
注意: 在 /前后不能加分号,在保存退出后,在命令行输入 /即可执行该命令