在oracle中默认大写,如果不加双引号的话,emp会被转换成大写,进行查询
SELECT * from “emp”
numberic(5,2)5位有效数字,2为小数部分
oracle中的不等于号
<> != ^= ~=
escape ‘escape_character’ 关键字,允许在字符串中搜索通配符,而不将其作为通配符
escape_character 是放在通配符前表示此特殊用途的字符。
select * from a WHERE name LIKE ‘%/%ab’ ESCAPE ‘/’
例如
SUBSTR(str,start,length)
字符串截取函数,从0与从1截取的效果是一样的,可以理解为全闭区间的集合,从1开始索引
substr函数中start规定起点,length规定截取长度
例如:substr(str,1,2)截取前两个字符,
substr(str,-3,3)字符串末尾的三个字符
instr:是否包含某个字符,从第一个位置开始,第几次出现的位置
对数字的处理:
四舍五入:round
截断小数位:trunc
取余:mod
ceil:求大于等于某数的最小整数
floor:求小于等于某数的最大整数
sql中日期
AM PM
Y,YY,YYY,YYYY
MM,MON,MONTH
DD
D,DY,DAY
HH,HH12,HH24
MI
SS
MI代表分钟,HH24表示24计时
将数字转字符串
to_date,to_number
处理NULL值
使用nvl函数
DECODE函数,相当if。。。else if。。。
两个表之间做链接
右连接
SELECT E.EMPNO,ENAME,ENAME123 FROM EMP E RIGHT JOIN EMP1 ON(E.EMPNO=EMP1.EMPNO)
SELECT E.EMPNO,ENAME,ENAME123 FROM EMP E,EMP1 WHERE E.EMPNO(+)=EMP1.EMPNO
同理可推出左链接
集合操作:
1. 并集 union vs. union all
union:没有重复记录
union all:包含重复记录,但效率高
交集 intersect
返回两个结果集的交集
差集 minus
返回连个结果集的差集
case语句
3.以首字母大写的方式显示所有员工的姓名.
SELECT SUBSTR(UPPER(ENAME),1,1)||SUBSTR(ENAME,2,LENGTH(ENAME)-1) FROM EMP;
显示所有员工的姓名,用a替换所有”A”.
4.显示正好为5个字符的员工的姓名.
19、找出早于12年前受雇的员工
select * from emp where months_between(sysdate,hiredate)/12 >12;
26、以年月日的方式显示所有员工的服务年限(大截)(一个月30天)
select hiredate,trunc((sysdate-hiredate)/365) 年,
trunc(mod((sysdate-hiredate),365)/30) 月,
trunc( mod (mod((sysdate-hiredate),365),30) ) 日
from emp;