1.获得当前的日期时间
select sysdate from dual;
2.获取当前系统的日期和时间
select to_char(sysdate,'yyyy-MM-dd hh:mm:ss') from dual;
3.MONTHS_BETWEEN(date1,date2):返回date1和date2之间的月份数量,结果为正数或负数
select months_between(sysdate,to_date('2013-01-01','yyyy-MM-dd')) from dual;
4.add_MONTHS(date,n):向date加上n个月,n必须是正整数
select add_months(sysdate,2) from dual;
5.next_day(date,char):求出date之后一周内某天char的日期,char是一个有效表示星期几的数字或字符串
select next_day(sysdate,7) from dual;
6.last_day(date):求出date所在月的最后一天
select last_day(sysdate) from dual;
一:等值查询
1.输出每人所在的部门及部门所在地:
select ename,dname,loc from emp,dept where emp.deptno = dept.deptno;
2.查询deptno为10的员工及部门所在地:
select ename,dname,loc from emp,dept where emp.deptno = dept.deptno and dept.deptno = 10;
二:外部连接
【外部连接运算符(+)只能放在连接条件表达式的一侧】
【外部连接条件中不能使用in操作符,也不能用or运算符与其他运算符相连】
1.显示员工对应的部门,并显示所有部门:
select ename,dept.dname,emp.empno,dept.deptno from emp,dept where emp.deptno(+) = dept.deptno;
2.显示员工对应的部门,并显示所有的员工:
select ename,dept.dname,emp.empno,dept.deptno from emp,dept where emp.deptno = dept.deptno(+);
三:标准连接查询
1.内连接:select ename,dname from emp inner join dept on emp.deptno = dept.deptno;
2.左外连接: select ename,dname from emp left join dept on emp.deptno = dept.deptno;
3.右外连接:select ename,dname from emp right join dept on emp.deptno = dept.deptno;
四:子查询
1.显示比id为7655销售额高的记录:
select * from emp where sal > (select sal from emp where empno = 7566);
2.显示和ID为7369相同工作并且工资大于7876的员工信息:
select ename from emp where job = (select job from emp where empno = 7369) and sal > (select sal from emp where empno = 7876);
3.显示工资最低的员工信息:
select * from emp where sal = (select min(sal) from emp);
说明:
1.子查询要使用括号括起来
2.将子查询放在比较运算符的右边
3.不要在子查询中使用order by字句,select语句中只能有一个order by字句,并且它只能是主select语句的最后一个字句
五:获取序列信息
select sequence_name,max_value,min_value,increment_by,last_number from user_sequences;
1.sequence_name:序列名称
2.max_value:最大的值
3.min_value:最小的值
4.increment_by:增长量
5.last_number:使用的或缓存的最后一个序列号,一般大于缓冲区中的最后一个值
六:查询索引
select * from user_indexes;
七:分页
分页查询格式:
SELECT * FROM ( SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM = 21
其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM = 21控制分页查询的每页的范围。
上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM