1.DML语言 (data manipulation language)数据库操作语言 Insert ,Update,Delete,Merge
2.DDL语言 (data definition language)数据库定义语言 Create,Alter,Drop,Truncate
3.DCL语言 (Data Control Language)数据库控制语言 Grant ,Revoke
4.事物控制语句 Commit ,Rollback, Savepoint
5.模糊查询
%表示零或多个字符 _ 表示一个字符
对于特殊字符可使用ESCAPE 标识符来查找 select * from emp where ename like '%*_%'escape'*';
上面的escape表示后面的那个符号不当成特殊字符处理,就是查找普通的_字符
6.逻辑运算符 or and not
1. 找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK)
select * from emp where (deptno = 10 and job = 'MANAGER') or (deptno = 20 and job = 'CLERK');
2. 找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工
select * from emp where deptno = 10 and job not in ('MANAGER','CLERK') and sal >= 2000;
3.找出有奖金的员工的不同工作 ---使用消除重复行关键字distinct , comm (奖金)
select distinct job from emp where comm is not null and comm > 0;
4.找出没有奖金或奖金低于500的员工 ---is null 空值
select * from emp where comm < 500 or comm is null;
5.显示雇员姓名,根据其服务年限(hiredate),将最老的雇员排在最前面
select ename from emp order by hiredate;
7.字符函数
1.Upper(将匹配的字符串转化成大写)
select Upper ('abcde') from dual; --- ABCDE
select * from emp where ename = UPPER('smith');
2.Lower (将匹配的字符串转化成小写)
select lower('ABCDE') from dual; --- abcde
3.Initcap (是将每个单词的首字母大写其他字母小写)
select initcap('hello world') from dual; --- Hello World
4.concat 连接函数
select cancat('a','b') from dual ; 等价于 select 'a'||'b' from dual;
5.substr 截取字符串函数
select substr('abcde',length('abcde')-2) from dual;
select substr('abcde',-3,3) from dual;
6.length
select length('abcde') from dual;
7.replace
select replace(ename,'a','A') from dual;
8.Instr (可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符,在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。)
select instr('Hello World','or') from dual; -- 8 indexof
9.Lpad (从左边对字符串使用特定的字符填充)
语法 (lpad(string,padded_length,[pad_string])) string 准备填充的字符串 padded_length 填充后字符串的长度 pad_string 填充字符
lapd('smith',10,'*') 左侧填充 -- *****smith;
10.Rpad 右侧填充
rpad('smith',10,'*') 右侧填充 -- smith*****;
11.trim ---类似于string 的trim()方法 去除字符串的前后空白
trim(' mr Smith ') from dual ; --- mr Smith;
8.数值函数
1.round 四舍五入函数
select round(412,313,2) from dual;
2.mod 取余函数
select mod(45,4) from dual;
3.trunc 返回处理后的数值
select trunc(412.13,-2) from dual;
9.日期函数
1.Months_between() 返回两个时间内的月份数
select months_between(sysdate,hiredate) from emp;
2.add_months() 该函数在输入日期上加上指定的几个月返回一个新的日期,如果给出一负数,返回值日期之前几个月的日期
select add_months(sysdate,1) from dual;
3. next_day() 返回指定下个星期几的日期
select next_day(sysdate,'星期一') from dual;
4.last_day() 返回指定日期所在月份的最后一天
select last_day(sysdate) from dual;
10.转换函数
1.to_char()
select to_char(sysdate,'yyyy') from dual;
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'D') from dual ;返回星期
2.to_number()
select to_number('13') + to_number('14') from dual;
3. to_date()
select to_date('20090210','yyyy-mm-dd') from dual;
11.通用函数
1.nvl()函数
select nvl(comm,0) from dual;
2.nullif()函数 如果表达式exp1与表达式exp2的值相等则返回null否则返回exp1的值
3.nvl2()函数
select empno,ename,sal,comm,nvl2(comm,sal+comm,sal) total from dual;
如果comm 为null 返回sal 否则返回sal+comm
4.coalesce() 依次考察各参数表达式,遇到非null值即停止并返回该值
select empno,ename,sal,comm,coalesce(sal+comm,sal,0)总收入 from emp;
5.case表达式
select empno,ename,sal
case deptno
when 10 then '服务部'
when 20 then '研发部'
when 30 then '销售部'
else '未知部门'
end 部门
from emp;
5.decode()函数和case() 表达式类似,decode()函数也用于实现分支结构
select empno,ename,sal
decode(deptno,10,'服务部',20,'研发部',30,'销售部','未知部门')部门 from emp;
-----以上均是站在巨人的肩膀上