Oracle下SQL基本操作(三)(6)

来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:16 点击:

ALTER SESSION SET NLS_LANGUAGE = 'SIMPLIFIED CHINESE';
---LAST_DATE
SELECT LAST_DAY(TO_DATE('2010-9-11','YYYY-MM-DD'))  FROM DUAL;

------ 转换函数
--TO_NUMBER
SELECT TO_NUMBER('12')  FROM DUAL;
SELECT TO_NUMBER('12','9999')  FROM DUAL;
SELECT TO_NUMBER('12','9999.999')  FROM DUAL;
SELECT TO_NUMBER('12','9999')  FROM DUAL;
---会自动转换,所以to_number已经没什么用了
SELECT '12'* 2 FROM DUAL;
----TO_CHAR
SELECT TO_CHAR(12) FROM DUAL;
SELECT TO_CHAR(12,'9999') FROM DUAL;--带空格
SELECT TO_CHAR(12,'FM9999') FROM DUAL;--去掉空格
SELECT TO_CHAR(12,'09999') FROM DUAL;--带0
SELECT TO_CHAR(12,'$9999') FROM DUAL;--带$
SELECT TO_CHAR(12,'FM$9999') FROM DUAL;
SELECT TO_CHAR(12,'FML9999') FROM DUAL;
SELECT TO_CHAR(123456,'$9999.00') FROM DUAL;--####
SELECT TO_CHAR(12.123,'$9999.00') FROM DUAL;---四舍五入
SELECT TO_CHAR(TO_DATE('2010-09-11','YYYY-MM-DD'),'MM-DD-YYYY HH12:MI:SS AM')   FROM DUAL;
SELECT TO_DATE('2010-09-11 12:10:57','YYYY-MM-DD HH24:MI:SS')   FROM DUAL;
--日期中没写时间,to_date控制不会显示
SELECT TO_DATE('2010-09-11 ','YYYY-MM-DD HH24:MI:SS')   FROM DUAL;
---日期中没写时间,to_char控制会显示
SELECT TO_CHAR(TO_DATE('2010-09-11 ','YYYY-MM-DD HH24:MI:SS'),
'MM-DD-YYYY HH24:MI:SS')   FROM DUAL;
--如果不要格式控制,可以直接
SELECT SUBSTR(123456,2,3) FROM DUAL;

---其他函数
----NVL,两个参数,如果薪水为空,则返回资金
SELECT  NVL(EMP.SALARY,EMP.COMMISSION)   FROM EMPLOYEE EMP;
-----NVL2三个参数
SELECT  EMP.SALARY,NVL2(EMP.HIREDATE,EMP.SALARY,EMP.COMMISSION)   FROM EMPLOYEE EMP;
---COALESCEL
SELECT EMP.SALARY,EMP.COMMISSION,COALESCE(NULL,EMP.SALARY,EMP.COMMISSION,0) FROM EMPLOYEE EMP;
 
----用于可以手动修改
SELECT * FROM EMPLOYEE FOR UPDATE;
---多行函数,分组函数
----MAX,MIN,AVG,SUM 忽略空值
---COUNT,包括空行
SELECT MAX(EMP.SALARY),MIN(EMP.SALARY),AVG(EMP.SALARY),
SUM(EMP.SALARY), COUNT(*) FROM EMPLOYEE EMP;
---
SELECT COUNT(EMP.HIREDATE) 列中值的个数   FROM EMPLOYEE EMP;

---WHERE,GROUP BY,HAVING
---WHERE为GROUP BY服务,GROUP BY 为HAVING服务,HAVING 再控制最后的显示结果
SELECT EMP.DEPTID,  MAX(EMP.SALARY) 最大工资  FROM EMPLOYEE EMP
WHERE  EMP.DEPTID IN('01','02')---1首先选择符合DEPTID的行
GROUP BY EMP.DEPTID---2对符合条件的行进行分组
HAVING MAX(EMP.SALARY) >= 4000----3对要显示的分组进行限制
ORDER BY 最大工资 DESC;
SELECT * FROM EMPLOYEE;
SELECT * FROM EMPLOYEE FOR UPDATE;
--分部门统计学位为'1'的员工的平均工资

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Table函数使用简介
  • Oracle数据库Constraint约束的常用操作及异常处理
  • Bulk Collect性能分析(zz)
  • export/import的使用
  • OCP043第十五讲 Database Security
  • ORACLE10gr2数据导入MySQL方案
  • oracle 让sys用户可以使用isqlplus
  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • Oracle行列转换小结
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1