2011魔乐_oracle课堂笔记_SQL语句02[精品].doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2011魔乐_oracle课堂笔记_SQL语句02[精品]

1、课程名称:SQL语句 2、知识点 2.1、上次课程的主要知识点 1、 Oracle数据库的四个主要用户: · 超级管理员:sys / change_on_install; · 普通管理员:system / manager; · 普通用户(解锁):scott / tiger; · 海量数据用户(解锁):sh / sh; 2、 sqlplus的主要命令: · 设置每行显示的长度:SET LINESIZE 长度; · 设置每页显示的长度:SET PAGESIZE 长度; · 编辑与执行指令:ed、@; · 连接用户:CONN 用户名 / 密码 [AS SYSDBA]; · 调用本机程序:HOST 命令; 3、 SQL的基本语法 SELECT [DISTINCT] * | 列 [别名] [,列 [别名],列 [别名] ...] FROM 表名称 [别名] [WHERE 条件(s)] [ORDER BY 排序字段 [ASC | DESC] [,排序字段 [ASC | DESC],...]] ; 4、 在WHERE子句里面可以编写多个条件,条件判断:关系运算、逻辑运算、BETWEEN..AND、IN、LIKE、IS NULL; 5、 单行函数:UPPER()、LOWER()、INITCAP()、REPLACE()、LENGTH()、INSTR()、SUBSTR()、ROUND()、TO_CHAR()、TO_DATE()、NVL()、DECODE()、SYSDATE、MONTHS_BETWEEN()、ADD_MONTHS()、LAST_DAY()、NEXT_DAY(); 2.2、习题讲解 1、 找出各月倒数第3天受雇的所有员工。 首先需要确定的是,每一个雇员的雇佣日期是不一样的,那么每一个雇佣日期所在月的最后一天(LAST_DAY())也肯定不一样,现在要求计算出各月倒数第三天雇佣(日期 – 数字)。 公式:雇佣日期 = LAST_DAY(雇佣日期) – 2; SELECT * FROM emp WHERE hiredate=LAST_DAY(hiredate)-2 ; 2、 找出早于12年前受雇的员工。 如果要计算年份,那么最简单的做法就是通过月数(MONTHS_BETWEEN())除以12; SELECT * FROM emp WHERE MONTHS_BETWEEN(SYSDATE,hiredate)/1212 ; 3、 找出在(任何年份的)2月受聘的所有员工。 如果要想求出一个日期的月数,那么使用TO_CHAR()函数即可。 SELECT * FROM emp WHERE TO_CHAR(hiredate,mm)=02 ; SELECT * FROM emp WHERE TO_CHAR(hiredate,mm)=2 ; 4、 显示满10年服务年限的员工的姓名和受雇日期。 SELECT ename,hiredate FROM emp WHERE MONTHS_BETWEEN(SYSDATE,hiredate)/1210 ; 5、 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面。 SELECT ename,hiredate FROM emp ORDER BY hiredate ; 6、 显示所有员工姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。 既然要拆分年和月,则使用TO_CHAR()函数完成。 SELECT ename,TO_CHAR(hiredate,yyyy) year,TO_CHAR(hiredate,mm) months FROM emp ORDER BY months,year ; 可以发现,现在在Order BY子句里面使用的是别名,在所有子句之中,只有ORDER BY可以使用别名。 7、 显示在一个月为30天的情况所有员工的日薪金,忽略余数 SELECT ename,TRUNC(sal/30) FROM emp ; 8、 以年月日的方式显示所有员工的服务年限。 本题目的含义如下,例如,现在假设一个雇员是在1981-02-14雇佣,而今天的日期是2012年03月27日,那么这个雇员已经被公司雇佣了:30年、1个月、13天; · 步骤一:计算出每一个雇员到今天为止雇佣的年份,通过月份操作; SELECT empno,ename,hiredate, TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year FROM emp ; · 步骤二:计算出每一个雇员被雇佣的月数,在之前计算年的时候剩下的无法整除的部分就是月,使用MOD() SELECT empno,ename

您可能关注的文档

文档评论(0)

bodkd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档