/*------------Orcale函数----------------*/

1.字符函数

LOWER()小写
UPPER()大写
INITCAP()把第一个字母大写
CONCAT()字符串的连接(也可以用 "||")函数进行连接

//注意在orcale之中,从0开始和从1开始是一样的
SUBSTR(列|字符串,位置,截取数量)  字符串的截取,注意位置如果为负数的话,就是倒着截取
LENGTH()  字符串的长度
REPLACE()  内容的替换

2.数值函数
·四舍五入小数位:
 ROUND(),也可以指定四舍五入的位数,也可以直接对整数给四舍五入,只要给负数(以小数点为基准)
·截断小数位:TRUNC()  都舍不入,参数和ROUND一样
·取余(取模):MOD('数','被除数') 
 select MOD(489.655523,2) FROM DUAL  =>1.655523

3.日期函数:(SYSDATE->当前天数)
·日期-/+数字=日期
·日期 - 日期 = 数字(天数)

·求星期数:当前日期-雇佣日期 = 天数/7 = 星期数

·MONTHS_BETWEEN()  求出给定日期范围的月数
·ADD_MONTHS();  在指定日期上加上指定的约束,求出之后的日期
·NEXT_DAY()  求出下一次的给定日期数量  [NEXT_DAY(SYSDATE,'星期一')]  距离现在最近的
·LAST_DAY()  求出给定日期的最后一天日期LAST_DAY(SYSDATE)  7月31号

4.转换函数:
·TO_CHAR()
 1.转换成字符串 TO_CHAR(hiredate,'yyyy')  取出日期之中的年
 2.日期格式转化 TO_CHAR(hiredate,'fmyyyy-mm-dd'),默认有前导0,用fm去掉前导0
 3.数字格式化:TO_CHAR(sal,'999,999')  9代表一位数 和y表示年一月的
 4.数字表示区域:$:表示美元.L:是local的缩写,和本地的语言金额显示
   eg: TO_CHAR(sal,'$999,999')
·TO_NUMBER() 转换成数字:把数字的字符串 换成 数字
·TO_DATE()  转化成日期

5.通用函数:
·NVL 把一个是null值变成指定的内容:
   (sal+NVL(comm,0))*12  如果comm为null的话,就当成0显示。
    如果不用NVL函数的话,comm为NULL,则上面的指就一定为NULL
·DECODE()函数,重点!
 类似于,IF...ELESEIF ....ELSE 语句

SELECT DECODE(2,1,'内容是一',2,'内容是2',3,'内容是3') FROM DUAL;

DECODE(
-------
内容是2

可见:第一个参数是 数值
     往后就是 一个条件  对应 一个结果
 SELECT empno,ename,DECODE(job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理') FROM emp;
CLERK    --> 业务员
SALESMAN --> 销售人员
MANAGER' --> 经理

sqlplus的常用命令
 ed和@指令
 连接: conn 用户名/密码 AS SYSDBA
 set linesize 长度  设置行显示数量
 set pagesize 长度  设置页显示数量

/*-------------------关联查询-----------------------*/
SELECT e.ename 雇员姓名,e.sal 工资,d.dname 部门,s.grade 工资级别
FROM emp e,dept d,salgrade s
WHERE e.deptno=d.deptno AND e.sal BETWEEN s.losal AND s.hisal;

一、关联表的左、右连接
·(+)在=左边 表示右连接     和下面相反
·(+)在=右边 表示左连接[默认] 以左边的表为准,如果左边没有数据的话,即使右边有数据也不显示

/*----------------------组函数---------------------------*/
1.COUNT  求数量
2.MAX/MIN 求最大最值
3.SUM/AVG  求和/求平均

重点:(分组函数)
·范例:求出每个部门的雇员数量,应该按照部门分组
 SELECT deptno,COUNT(empno)
 FROM emp
 GROUP BY deptno

注意点:
SELECT deptno,COUNT(empno) FROM emp
       *
第 1 行出现错误:
ORA-00937: 不是单组分组函数
 以上代码不能执行是因为:
1.如果程序之中使用了分组函数,则有两种可以使用的情况:
 ·程序中存在了GROUP BY,并制定了分组条件,这样可以将分组条件一起查询出来。
 ·如果不使用分组的话,则只能单独的使用分组函数
2.在使用分组函数的时候,不能出现分组函数和分组条件之外的字段。

关联表查询:
SELECT d.dname,COUNT(e.empno)
FROM emp e,dept d
WHERE e.deptno=e.deptno
GROUP BY d.dname

显示出平均工资大于两千的部门编号和平均工资:

·分组函数只能在分组之中使用不允许在WHERE语句之中出现,那么如果现在假设要指定分组的条件,则只能通过第二种条件的指令:
 HAVING  。
SELECT deptno,AVG(sal)
FROM emp
GROUP BY deptno HAVING AVG(sal)>2000;

分组的原则:
 ·只要一列上存在重复的内容才有可能考虑到分组
注意:
 ·分组函数可以嵌套使用,但是在组函数嵌套使用的时候,不能够再出现分组条件的查询组

/*----------------子查询---------------------*/
要求查询比雇员7654工资高的全部雇员信息:

SELECT *
FROM emp
WHERE sal>(SELECT sal FROM emp WHERE empno=7654);
子查询必须有括号。
子查询的操作分为三类:
1.单列子查询
2.单行子查询  (多个列,有可能是一条完整的记录)
3.多行子查询:返回多条记录

范例:
SELECT ename,job,sal
FROM emp
WHERE sal=(SELECT MIN(sal) FROM emp)
;

在子查询之中存在三种查询符号:
IN
ANY
ALL

·IN操作符,指定一个查询的范围:
例:求出每个部门的最低工资的雇员信息:
 ·每个部门的最低工资,返回的值肯定是多个,所以此时可以用IN指定一个操作的范围
SELECT * FROM emp WHERE sal IN (
SELECT MIN(sal) FROM emp GROUP BY deptno);

·ANY操作
=ANY  和IN的操作符功能完全一样
SELECT * FROM emp WHERE sal=ANY(SELECT MIN(sal) FROM emp GROUP BY deptno);

>ANY  比里面的最低值要大
SELECT * FROM emp WHERE sal>ANY(SELECT MIN(sal) FROM emp GROUP BY deptno);

<ANY  比里面最大的值要小
SELECT * FROM emp WHERE sal<ANY(SELECT MIN(sal) FROM emp GROUP BY deptno);

·ALL操作 
>ALL  比最大的值要大的

<ALL  比最小的值要小的

/*-------------------数据库的更新操作------------------*/
复制表:

CREATE TABLE myemp AS SELECT * FROM emp;

·事务处理:
commit:提交事务
rollback:回滚,但是如果在commit之后就不能够rollback了

·事务处理会产生死锁,一个session如果更新了数据,但是没有commit,则其他session是无法立刻更新的,要等待对方commit之后才允许更新,否则会一直处于等待。

Oracle基本代码学习的更多相关文章

  1. Asp.Net MVC4 + Oracle + EasyUI 学习 序章

    Asp.Net MVC4 + Oracle + EasyUI  序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1.  简 ...

  2. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  3. Oracle GoldenGate学习之Goldengate介绍

    Oracle GoldenGate学习之Goldengate介绍 (2012-10-02 17:07:27) 标签: 检查点 数据传输 队列 进程 分类: Goldengate Goldengate介 ...

  4. oracle 12c 学习系列(1)–12c初体验

    详见原文博客链接地址: oracle 12c 学习系列(1)–12c初体验

  5. Oracle RAC学习笔记01-集群理论

    Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...

  6. Oracle RAC学习笔记02-RAC维护工具集

    Oracle RAC学习笔记02-RAC维护工具集 RAC维护工具集 1.节点层 2.网络层 3.集群层 4.应用层 本文实验环境: 10.2.0.5 Clusterware + RAC 11.2.0 ...

  7. [Oracle]OWI学习笔记--001

    [Oracle]OWI学习笔记--001 在 OWI 的概念里面,最为重要的是 等待事件 和 等待时间. 等待事件发生时,需要通过 P1,P2,P3 查看具体的资源. 可以通过 v$session_w ...

  8. 推荐一个Oracle数据库学习网站

    推荐一个我个人的Oracle数据库学习网站,比较系统性的整理,会持续更新的网站.网址: Oracle基础教程: http://www.oraclejsq.com/article/010100110.h ...

  9. Oracle RMAN 学习:恢复

    Oracle RMAN 学习:恢复 6 rman恢复 Rman中的恢复对应restore,recover Restore,数据修复,利用备份集的数据文件来替换已损坏的数据文件或将其恢复到另外一个位置, ...

随机推荐

  1. 甲骨文推动Java进军“物联网”

    该公司希望在嵌入式设备开发项目上Java可以取代C     随着周二宣布对嵌入式的Java版本进行升级,甲骨文希望扩展该平台到新一代连接设备,又名物联网.甲骨文还希望,Java可以在一些嵌入式开发项目 ...

  2. jQuery 遍历 - siblings() 方法

    本文来自:http://www.w3school.com.cn/jquery/traversing_siblings.asp jQuery 遍历参考手册 实例 查找每个 p 元素的所有类名为 &quo ...

  3. Js模板引擎mustache

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...

  4. OS Kernel Parameter.semopm

    安装Oracle11g内核参数semopm未校验通过,点击Fix&Check Again后,会提示执行修改脚本,在/tmp/CVU_11.2.0.1.0_oracle下,找到并执行该脚本run ...

  5. JS中slice,splice,split的区别

    不知道大家对slice,splice,splite是肿么样的感觉,反正我刚接触到这三个函数的时候整个人都懵了,因为一个个长的跟孪生兄弟似的,每次用的时候都会混,于是决定记下来,也给大家当个参考吧. s ...

  6. Android学习之DialogFragment

    DialogFrament是Android sdk中的对话框基类,开发人员可以针对此类进行扩展.他可以扩展出Android中的多种对话框,比如alertdialog,listdialog,radiod ...

  7. 解決 IE10 浏览器无法使用 ASP.NET From 验证登录的问题

    最近应项目用到ASP.Net表单验证机制(FormsAuthentication),来判断用户是否已经登录,一切测试顺利,最后发布到IIS中后在IE10测试是发现始终判断用户没登录(其他浏览器一切正常 ...

  8. transactionscope报“此操作对该事务的状态无效”问题

    编写的保存方法里面有个transactionscope代码一直报“此操作对该事务的状态无效”,弄了半天,原来是超时问题(transactionscope默认超时时间是1分钟) 经过修改,设置了超时时间 ...

  9. 运用Hibernate-Tools自动生成Java类和schema时,出现not found while looking for property...异常

    问题描述: 在使用Hibernate-tools时出现not found while looking for property...(具体信息省略). 问题分析: 我找到出错对应的hbm.xml文件, ...

  10. 从头开发MUDLIB

    跟Akuma一起从头打造mudlib--[第一讲] 第一讲:让它跑起来注:每一讲我都会上传一个相符的lib,有些文件是旧的,有些是新的,我尽可能在lib里写清楚注释.更详细的内容则在每讲的正文里写. ...