--函数 数字转换为字符 --0 强制位数,9位数不够不显示 $美元 SELECT TO_CHAR(124.3456,'0000.00') FROM dual ; SELECT TO_CHAR(124.3456,'9999.99') FROM dual ; SELECT TO_CHAR(124.3456,'$9999.99') FROM dual ; --日期 日期转换为字符 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') FROM dual ; SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日" HH:MI:SS') FROM dual; --字符转换为日期 SELECT TO_DATE('2005-12-06','yyyy-mm-dd') FROM dual; --常用的伪列 rowid rownum select rowid,emp.* from scott.emp; select rownum,emp.* from scott.emp; --查询 第三行数据 select * from (select rownum rnum,s.* from scott.emp s ) where rnum=3; --转换空值的函数 NVL(EXP1, EXP2)select emp.* from scott.emp; select nvl(comm,0) from scott.emp; --去除重复行 select distinct job from scott.emp; --根据现有表创建表 create table emp as select * from scott.emp; --当前用户表行数大于10行的表 select table_name from user_all_tables a where a.num_rows>10 ; -- select * from sun.tuser; --事务控制 insert into sun.tuser(userid,username,pwd) values(18,'1777','1777'); savepoint aa; --保存事物点 insert into sun.tuser(userid,username,pwd) values(19,'1777','1777'); rollback to aa; --回滚到保存的事物点 select * from sun.tuser; commit--提交事务 --集合操作符 --1.union 联合 select * from scott.emp; select count(*) from scott.emp select * from scott.emp union select * from scott.emp where job='CLERK' --UNIONALL 联合所有 select * from scott.emp union ALL select * from scott.emp where job='CLERK' --INTERSECT 交集 select * from scott.emp INTERSECT select * from scott.emp where job='CLERK' --MINUS 减集 select * from scott.emp MINUS select * from scott.emp where job='CLERK' --\ 连接符号,类似 +; --分析函数 --row_number 排名有相同数据时排名递增 --dense_rank 排名有相同数据时排名一样 --rank 排名有相同数据时排名一样,但在下一个不同数据空出排名 select ename, job,sal, row_number()over(partition by job order by sal desc ) "number", dense_rank()over(partition by job order by sal desc ) "dense_rank", rank()over(partition by job order by sal desc ) "rank" from emp; -- select ename, job,sal, row_number()over( order by sal desc ) "number", dense_rank()over(order by sal desc ) "dense_rank", rank()over( order by sal desc ) "rank" from emp;