oracle简单入门操作XX0307_第1页
oracle简单入门操作XX0307_第2页
oracle简单入门操作XX0307_第3页
oracle简单入门操作XX0307_第4页
oracle简单入门操作XX0307_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

oracle简单入门操作XX0307 一、课程名称函数 二、知识点2.1上次课程的主要知识点2.2本次预计讲解的知识点 三、具体内容31大小写控制函数?Lower()变成为小写?Upper()大写?Initcap()首字母大写范例select lower(Hello,World)from dual;select upper(hello,world)from dual;select initcap(hello,world)from dual;练习查询岗位为clerk的雇员的所有信息。 SELECT*FROM empWHERE job=CLERK;SELECT*FROM empWHERE lower(job)=clerk;32字符控制函数?Concat()|连接select concat(ename,job)from emp;如果想要连接多个,则只能通过嵌套的方式来进行。 范例Select concat(ename,concat(job,sal)from emp;?Length():长度select length(hello)from dual;?Substr(字符串,开始位置,截取的个数)截取SELECT SUBSTR(HELLO,WORLD,2,4)FROM dual?Instr()确定某个字符第一次出现的位置。 SELECT INSTR(HELLO,WORLD,O)FROM DUAL;?LPAD(字符串,长度,填充的内容)左填充?RPAD()右填充select lpad(100,10,*)from dual;select lpad(abc,5,O)from dual;select lpad(abc,2,O)from dual;select lpad(sysdate,20,*)from dual;?Trim()去掉某一个字符(去掉的两头的,中间的不管)select trim(hfromhello,hello,worldh)from dual;33数学函数?Round()四舍五入select round(123.4567,2)from dual;select round(123.4567,-2)from dual?Trunc()截断select trunc(123.789,2)from dual;alter sessionset NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS;select trunc(sysdate)from dual;?Mod()求余数select mod(10,3)from dual;练习查询每个雇员的姓名,工资和日薪。 SELECT ename,sal,sal/30from emp;34日期函数?Sysdate?日期之间可以进行算术运算(一般为加减)?日期-日期=天数select sysdate+3from dual;select sysdate-hiredate from emp练习查询每个雇员到今天为止被雇佣的天数。 select trunc(sysdate-hiredate)from emp练习显示部门10里面的雇员进入公司的星期数。 Select round(sysdate-hiredate)/7)from empwhere deptno=10;?Months_between():两个日期之间相差的月数select months_between(sysdate,hiredate)from emp;select months_between(sysdate,12-1月-90)from dualselect months_between(sysdate,12-1月-1890)from dual建议年份这块写完整了,否则无法判断。 ?Add_months():在日期上加上月份select sysdate,add_months(sysdate,2)from dual;?Next_day():指定日期后的日期。 select next_day(sysdate,星期一)from dual;?Last_day():指定日期所在的月份的最后一天select last_day(sysdate)from dual;3.5通用函数?To_char():select hiredate,to_char(hiredate,yyyy-mm-dd)from emp;select hiredate,to_char(hiredate,fmyyyy-mm-dd)from emp;select hiredate,to_char(hiredate,yyyy-mm-dd HH24:MI:SS)from emp;SELECT ename,sal,TO_CHAR(sal,99,999)FROM emp;SELECT ename,sal,TO_CHAR(sal,$99,999)FROM empSELECT ename,sal,TO_CHAR(sal,L99,999)FROM emp?9代表数字?$:表示美元?L本地货币符号练习查询2月份入职的雇员的所有信息Select*from empwhere to_char(hiredate,mm)=02;?To_date():把字符串变为日期格式select to_date(xx-03-02,yyyy-mm-dd)from dual;?Replace(字符串,要替换的字符,替换成的字符)替换select replace(ename,A,a)from emp;?Trim()去掉两边的空格select trim(hello world)from dual;?Ltrim()去掉左边的空格select ltrim(hello world)from dual?Rtrim()去掉右边的空格?Substr(字符串,开始位置)范例查询每个雇员的姓名,要求姓名从第四位开始显示。 select ename,substr(ename,4)from emp练习查询每个雇员的姓名,以及姓名中的后三个字母。 ?Nvl2(可能产生空值的列,非空情况的操作,空情况的操作)select ename,sal,m,nvl2(m,sal+m,sal)from emp;练习查询每个月倒数第三天入职的雇员的所有信息。 Select*from empwhere last_day(hiredate)-2=hiredate;?Decode()判断选择语法格式DECODE(列名,条件1,结果1,条件2,结果2,。 )范例CLERK-业务员SALESMAN-销售人员PRESIDENT-总裁MANAGER-经理ANALYST-分析师Select ename,job,decode(job,CLERK,业务员,SALESMAN,销售人员,PRESIDENT,总裁,MANAGER,经理,ANALYST,分析师)fromemp;练习查询雇员的姓名,工资,和调整后的工资。 调整情况如下CLERK-增加10%SALESMAN-增加20%PRESIDENT-减少100元MANAGER-增加200元ANALYST-增加100元Select ename,sal,decode(job,CLERK,sal*1.1,SALESMAN,sal*1.2,PRESIDENT,sal-100,MANAGER,sal+200,ANALYST,sal+100)From emp;练习 1、查询出姓名长度是5的雇员的所有信息。 SELECT*FROM empWHERE length(ename)=5; 2、查询雇员姓名前三个字母是JAM的雇员的所有信息SELECT*FROM empWHERE SUBSTR(ename)=JAM; 3、查询雇员在公司里工作的时间。 要求以年月日的形式显示出来。 (例如,张三在公司里工作了3年4月2天)。 时间为大概计算。 select ename,trunc(months_between(sysdate,hiredate)/12)|年FROM emp;select ename,trunc(months_between(sysdate,hiredate)/12)|年|trunc(mod(months_between(sysdate,hiredate),12)|月|trunk(mod(sysdate-hiredate),30)|日FROM emp;3.5CASE语句它的作用和decode是一样。 语法格式Case列名when条件1then结果1When条件2then结果2。 END范例查询雇员的姓名,工资,和调整后的工资。 调整情况如下CLERK-增加10%SALESMAN-增加20%PRESIDENT-减少100元MANAGER-增加200元ANALYST-增加100元SELECT ename,job,sal,CASE jobWHENCLERKTHEN sal*1.1WHENSALESMANTHEN sal*1.2WHENPRESIDENTTHEN sal-100WHENMANAGERTHEN sal+200WHENANALYSTTHEN sal+100END“调整后的工资”From EMP;3.6多表查询SELECT列1,列2,。 FROM表名1,表名2,表名3,。 WHERE表与表之间的关联条件;Dept表(部门表)Deptno部门编号Dname部门名称Loc部门所在地范例Select*from EMP,DEPT WHERE emp.deptno=dept.deptno;范例查询雇员编号,部门号,雇员所在的部门的名字。 SELECT emp.empno,emp.deptno,dept.dname FROM emp,dept WHERE emp.deptno=dept.deptno;SELECT e.empno,e.deptno,d.dname FROMemp e,dept dWHERE e.deptno=d.deptno;练习查询雇员姓名、雇员工资、雇员所在部门的名字,以及部门所在地。 SELECT e.ename,e.sal,d.dname,d.loc FROMemp e,dept dWHERE e.deptno=d.deptno;练习查询部门10中,姓名长度为5个字符的雇员的姓名和部门所在地。 SELECT e.ename,d.loc FROMemp e,dept dWHERE e.deptno=d.deptno AND e.deptno=10AND length(ename)=5;Salgrade(工资等级表)GRADE等级LOSAL最低工资HISAL最高工资范例查询每个雇员的姓名,工资以及工资等级。 SELECT e.ename,e.sal,s.grade FROMemp e,salgrade sWHERE e.sal betweens.losal ANDs.hisal;练习查询每个雇员的姓名,部门号,部门名称以及工资等级。 SELECT e.ename,d.deptno,d.dname,s.grade FROMemp e,dept d,salgrade sWHERE e.deptno=d.deptno ANDe.sal betweens.losal ands.hisal;范例查询雇员的编号,姓名和部门编号,部门名称。 SELECT e.empno,e.ename,d.deptno,d.dname FROMemp e,dept dWHERE e.deptno=d.deptno;在多表关联的时候,可能会出现数据的丢失。 为了避免此问题的出现,需要进行左右连接操作。 左右连接操作,说白了,就是(+)的位置,通过(+)进行数据的补全。 左连接(+)在等号的右边右连接(+)在等号的左边范例SELECT e.empno,e.ename,d.deptno,d.dname FROMemp e,dept dWHERE e.deptno(+)=d.deptno;范例查询雇员编号,雇员姓名,雇员的上司编号,上司姓名。 Select e.empno,e.ename,e.mgr,m.ename Fromemp e,emp mWhere e.mgr=m.empno(+);练习查询姓名中包含字母A的雇员的姓名、编号、上司姓名、上司编号和所在部门的详细信息。 SELECT e.ename,e.empno,m.ename,e.mgr,d.*FROMemp e,emp m,de

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论