- 15
- 0
- 约2.74万字
- 约 25页
- 2018-12-03 发布于天津
- 举报
1、课程名称SQL语句
第( PAGE 25)页 共( NUMPAGES 25)页
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 ;
· 步骤二:计算出每一个雇员被雇佣的月数,在之前计算年的时候剩下的无法整除的部分就是月,使用M
原创力文档

文档评论(0)