一,算术运算符
SELECT ename , sal *12 +1000 FROM emp WHERE deptno = 30;
二, 排序
select * from table where deptno = 20 order by sal desc;
ASC 升序
DESC 降序
三,联合查询
select ename from emp UNION select dname from dept;
四, 内连接
显式内连接
SELECT e.name , e.job , e.sal , d.loc from emp e INNER JOIN dept d ON e.deptno = d.deptno where d.dname = "research"
隐式内连接
select e.name , e.job , d.name , d.loc from emp e ,dept d where e.deptno = d.deptno AND d.dname
= "research";
五,外链接
左外链接
select e.name,e.job,d.name,d.loc from emp e LEFT JOIN dept d ON e.deptno = d.deptno;
右外链接
select e.name,e.job,d.name,d.loc from emp e RIGHT JOIN dept d ON e.deptno = d.deptnp;
六 , 完整外链接
select e.name,e.job,d.name,d.loc from emp e FULL JOIN dept d ON e.deptno = d.deptno;
七,子查询
select ename from emp where sal > (select sal from emp where ename="allen");
单行子查询
select ename from emp where sal > (select sal from emp where ename = "allen");
多行子查询
select empno,ename,job,sal from emp where sal > ANY (select sal from emp where depno = 30);
<ANY 小于最大值
>ANY 大于最小值
=ANY 等同于IN
<ALL 小于最小值
>ALL 大于最大值
多列子查询
select empno,ename,job,deptno from emp where (ename,deptno) IN (select ename,deptno,from
emp where deptno = 10); /*此句无实际意义,仅为说明*/
相关子查询
select * from dept d where 2 <(select count(*) from emp where d.deptno = deptno);
/*count(*) 为统计函数*/
二,系统函数
ABS 返回统一的绝对值
ABS(-5) 结果为5
CEIL, FLOOR
CELL 根据输入值返回一个数值,输入参数可以是非整数值,但返回结果大于等于输入参数的最小值
CELL(5.1) 结果为 6
CELL(-5.1) 结果为-5
FLOOR 返回一个小于等于给定十进制数的最大整数,与CELL相反
MOD
返回一个数除以另一个数的余数
MOD(14,12) 结果为 2
ROUND , TRUNC
两个相关的单值函数,ROUND根据给定的精度舍入数值
ROUND(89.985 , 2) 结果为 89.90
ROUND(89.985 , -1) 结果为 90
字符函数
CONCAT 函数将两个输入字符串合并成一个并返回结果
COUNT("this is"," test");
结果为: this is test
INSERT 函数用于确定一个字符串在另一个字符串中的位置,并返回一索引顺序值,指明改位置发现了要搜索的子串.
INSTR("AAABAABA","B") 结果为 4
INSTR("AAABAABA","B",1,2) 结果为 7
LOWER UPPER
LPWER 函数返回指定字符的小写形式
LPAD RPAD
LPAD 用于从左面填充指定的一种字符,填充完毕后返回字符串的长度
RPAD 用于从右面填充指定的一组字符
LTRIM RTRIM TRIM
LTRIM 用于删除字符串左边的前缀字符,
SUBSTR
SUBSTR 函数用于取得字符串的子串
REPLACE
REPLACE函数用于替换字符串的子串内容
日期时间函数
ADD_MOTHS
将一个日期加上指定的月份,日期中的日将不变.
ADD_MONTHS("30-4月-2013",1) 结果为: 31-5月 -13
NEXT_DAY 函数返回从实参日期开始,紧随其后的指定星期对应的日期.
NEXT_DAY('2013-03-25','星期三')
结果为 2013-03-27
转换函数
TO_CHAR 将DATE 或 NUMBER 转换成字符串
TO_DATE 将NUMBER,CHAR,VARCHAR2 抓换成DATE
TO_NUMBER 将CHAR VARCHAR2 转换成NUMBER
分组函数
常用的分组统计函数有MAX MIN AVG SUM COUNT 完全指定分组的最大值,最小值,平均值,与总和的计算.
select MAX(sal) max ,MIN(sal) min from emp;
select AVG(sal) avg,SUM(sal) sum from emp;
select COUNT(ename) 雇员数, COUNT(DISTINCT deptno)
from emp;
select deptno "部门号" ,COUNT(ename) "雇员数",TRUNC(AVG(sal),2)"平均工资" from emp GROUP BY deptno;
HAVING 过滤
select deptno 部门号.COUNT(ename) 雇员数,TRUNC(AVG(sal),2) 平均工资
from emp GROUP BY deptno HAVING TRUNC(AVG(sal),2)>2000;
数据操作
insert into department(deptno,deptname,location) values(10,"市场一部","天津");
update employee set salary = salary*1.1,hiredate = add_months(hiredate,-12) where deptno = 10;
delete from employee where deptno =(select deptno from department where deptname ='市场一部');
DML 事物操作
commit;
rlooback;
savepoint;
表对象
create table department(deptno number(2) not null primary key, deptname varchar2(20) not null);
drop table department;