- select 1+1; 在Oracle等于报错 ,在MYSQL中输出结果是2
- dual : oracle中的虚表 ,伪表, 主要是用来补齐语法结构
1. 查询语法
select *|列名 from 表名
select * from emp;
2. 别名用法
- 在查询的结果列中可以使用别名
select 列名 别名,列名 别名,... from emp;
select ename 姓名, sal 工资 from emp;
- 别名中,有没有双引号的区别就在于别名中有没有特殊的符号或者关键字
select ename "姓 名", sal 工资 from emp;
3. 消除重复的数据
select distinct *|列名, ... from emp;
select job from emp;
- 单列去除重复
select distinct job from emp;
- 多列去除重复,使用
distinct可以消除重复的行,如果查询多列的必须保证多列都重复才能去掉重复的 - 多列去除重复: 每一列都一样才能够算作是重复的
select job,deptno from emp;
select distinct job,deptno from emp;
4. nvl 函数
- 查询员工年薪 = 月薪* 12
select sal*12 from emp;
- 查询员工年薪+奖金
select sal*12 + comm from emp;
- 注意:
null值 , 代表不确定的、不可预知的内容 , 不可以做四则运算 - 解决方法:
nvl函数 : 如果参数1为null,就返回参数2
select sal*12 + nvl(comm,0) from emp;
5. 查询中四则运算
select 1+1 from dual;
6. 字符串的拼接
- java :
+号拼接 - Oracle 特有的连接符:
||拼接 - 查询员工姓名
select ename from emp;
select '姓名' || ename from emp;
-
在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符
-
concat(str1,str2)函数, 在mysql和Oracle中都有 -
使用函数拼接
select concat('姓名',ename) from emp;
7. 空值
- 空值是无效的,未指定的,未知的或不可预知的值
- 空值不是空格或者0。
- 注意:
包含
null的表达式都为null空值永远不等于空值
8. 条件查询
-
条件查询 : [where后面的写法]
-
关系运算符: > >= = < <= != <>
-
逻辑运算符: and or not
-
其它运算符: like 模糊查询 in(set) 在某个集合内 between..and.. 在某个区间内 is null 判断为空 is not null 判断不为空
-
查询每月能得到奖金的员工信息
select * from emp where comm is not null;
- 查询工资在1500--3000之间的员工信息
select * from emp where sal>=1500 and sal<=3000;
select * from emp where sal between 1500 and 3000;
- 查询名字在某个范围的员工信息 ('JONES','SCOTT','FORD') ,使用关键字
in
select * from emp where ename in ('JONES','SCOTT','FORD');
9. 模糊查询
- 模糊查询: like
- %:可以匹配任意长度的内容
- _:可以匹配一个长度的内容
- 如果有特殊字符,需要使用
escape转义 - 查询员工姓名第三个字符是
O的员工信息
select * from emp where ename like '__O%';
- 查询名字中带有“
M”的雇员
select * from emp where ename like '%M%';
- 查询员工姓名中,包含
%的员工信息,escape告诉Oracle,\是转义字符
select * from emp where ename like '%\%%' escape '\';
select * from emp where ename like '%#%%' escape '#';
10. 排序
- 升序:asc
- 降序:desc
- 查询员工信息,按照奖金由高到低排序
select * from emp order by comm desc;
- 发现前面的空值的排在前面,因为空值默认是排在前面的
select * from emp order by comm desc nulls first;
- 可以修改下排在最后面
select * from emp order by comm desc nulls last;
- 查询部门编号和工资, 部门编号升序排序,工资降序排序
select deptno, sal from emp order by deptno asc, sal desc;