-- 2018/07/11 13:30-16:30 实训第2天下午SELECT * FROM emp;-- 单行函数-- 字符函数
-- 2-1 查询员工姓名中包含大写或小写字母A的员工姓名
SELECT ename AS 员工姓名
FROM emp
WHERE INSTR( UPPER(ename), 'A') > 0;-- 2-2 查询部门编号为10或20,入职时间在81年5月1日之后,并且姓名中包含大写子午A的员工姓名,员工姓名长度(提示、要求使用INSTR函数,不能使用like进行判断)
SELECT ename AS 员工姓名, LENGTH(ename) AS 姓名长度
FROM emp
WHERE deptno IN (10, 20)
AND hiredate > '1-5月-81'
AND INSTR(ename, 'A') > 0;-- 2-3 查询每个职工的编号、姓名、工资
SELECT CONCAT( CONCAT( RPAD (empno, 10, '*'), RPAD (ename, 10, '*')), LPAD (sal, 10, '*')) AS 编号姓名工资
FROM emp;-- 数值函数
-- ROUND函数(四舍五入),DUAL 虚表,VIEW也是虚表
SELECT ROUND (45.923, 2), ROUND (45.923, 0), ROUND (45.923, -1)
FROM DUAL;-- TRUNC函数(截取)
SELECT TRUNC (45.923, 2), TRUNC (45.923, 0), TRUNC (45.923, -1)
FROM DUAL;-- 3-1 写一个查询语句,分别计算100.456四舍五入到小数点后第2位,第1位,整数位的值
SELECT ROUND (100.456, 2), ROUND (100.456, 1), ROUND (100.456, 0)
FROM DUAL;-- 3-2 写一个查询语句,分别计算100.456从小数点后第2位,第1位,整数位截断的值
SELECT TRUNC (100.456, 2), TRUNC (100.456, 1), TRUNC (100.456, 0)
FROM DUAL;-- 日期的处理 DD-MON-RR
-- 日期的运算 '10-AUG-06'+15 => '25-AUG-06'
SELECT ename 员工姓名, ROUND ((SYSDATE-hiredate)/7) 在职周数
FROM emp
WHERE deptno = 10;-- RR 日期格式
-- 4-1 查询每个员工截止到现在一共入职多少天
SELECT ename 员工姓名, ROUND (SYSDATE-hiredate) 在职天数
FROM emp;-- 4-2 当前日期为2015年,指定日期格式为DD-MON-RR,指定日期为01-1月-01,该日期实际所代表的日期为
-- 2001/01/01-- 4-3 当前日期为2015年,指定日期格式为DD-MON-RR,指定日期为01-1月-95,该日期实际所代表的日期为
-- 1995/01/01-- 4-4 当前日期为1995年,指定日期格式为DD-MON-RR,指定日期为01-1月-01,该日期实际所代表的日期为
-- 2001/01/01-- 4-5 当前日期为1998年,指定日期格式为DD-MON-RR,指定日期为01-1月-95,该日期实际所代表的日期为
-- 1995/01/01-- 4-6 当前日期为2015年,指定日期格式为DD-MON-YY,指定日期为01-1月-01,该日期实际所代表的日期为
-- 2001/01/01-- 4-7 当前日期为1998年,指定日期格式为DD-MON-YY,指定日期为01-1月-95,该日期实际所代表的日期为
-- 1995/01/01-- 5-1 查询服务器当前的时间
SELECT SYSDATE
FROM DUAL;-- 5-2 查询部门10,20的员工截止到2000年1月1日,工作了多少个月,入职的月份(使用months_between, extract)
SELECT MONTHS_BETWEEN ('01-1月-01', hiredate) 工作月数, EXTRACT (MONTH FROM hiredate) 入职月份
FROM emp;-- 5-3 如果员工使用日期为6个月,查询职位不是MANAGER的员工姓名,入职日期,转正日期,入职日期后的第一个星期一,入职当月的最后一天(提示:使用add_months, next_day, last_day)
SELECT ename 员工姓名, hiredate 入职日期, ADD_MONTHS (hiredate, 6) 转正日期, NEXT_DAY (hiredate, '星期一') 入职日期后的第一个星期一, LAST_DAY (hiredate) 入职当月的最后一天
FROM emp
WHERE job != 'MANAGER';-- 转换函数
-- TO_CHAR函数用于日期型
SELECT ename 员工姓名, TO_CHAR (hiredate, 'MM/YY') 入职日期
FROM emp;SELECT ename 员工姓名, TO_CHAR (hiredate, 'DD Month YYYY') 入职日期
FROM emp;-- TO_CHAR 用于数值型
SELECT TO_CHAR (sal, '$99,999') 工资
FROM emp
WHERE ename = 'SCOTT';-- 6-1 显示服务器系统当前时间,格式为2015-10-12(提示:使用to_char函数)
SELECT TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS') 系统当前时间
FROM DUAL;-- 6-2 显示ename、hiredate和雇员开始工作日是星期几,列标签DAY(提示:使用to_char函数)
SELECT ename 员工姓名, hiredate 入职日期, TO_CHAR (hiredate, 'DAY') 开始于星期几
FROM emp;-- 6-3 查询员工姓名,工资,格式化的工资($999,999.99)(提示:使用to_cahsr函数)
SELECT ename 员工姓名, sal 工资, TO_CHAR (sal, '$999,999.99') 格式化工资
FROM emp;-- 6-4 把字符串2015-3月-18 13:13:13 转换成日期格式,并计算和系统当前时间间隔多少天(提示:使用to_date函数)
SELECT  ROUND (SYSDATE - TO_DATE('2015-3月-18 13:13:13', 'YYYY-MONTH-DD HH24:MI:SS')) 距离系统时间多少天
FROM DUAL;-- 通用函数
-- NVL(espr1, exor2)函数(表达式1不为空则返回表达式1,否则返回表达式2)
SELECT ename 员工姓名, sal 工资, comm 奖金, (sal*12) + NVL (comm, 0) 总工资
FROM emp;-- COALESCE(expr1, expr2, ... exprn)函数(返回第一个不为空的表达式)
SELECT ename 员工姓名, COALESCE (comm, 0) 奖金, deptno 部门编号  -- NVL (comm, 0)
FROM emp;-- CASE和DECODE函数
CASE exprWHEN comparison_expr1 THEN return_expr1[WHEN comparison_expr2 THEN return_expr2WHEN comparison_exprn THEN return_exprnELSE else_expr]
END;-- CASE函数
SELECT ename 员工姓名,deptno 部门编号,(CASE deptnoWHEN 10 THEN'销售部'WHEN 20 THEN'技术部'WHEN 30 THEN'管理部'ELSE'无'END) 部门名字FROM emp;-- DECODE函数
SELECT ename 员工姓名, deptno 部门编号, DECODE (deptno, 10, '销售部', 20, '技术部', 30, '管理部', '无') 部门名字
FROM emp;-- 函数的嵌套(由内到外)
SELECT ename 员工姓名, NVL (TO_CHAR (mgr), '没有经理') 经理号
FROM emp
WHERE mgr IS NULL;-- 课后作业
-- 1 计算2000年1月1日到现在有多少月,多少周(四舍五入)
SELECT ROUND (MONTHS_BETWEEN (SYSDATE, TO_DATE('20001月01', 'YYYYMONTHDD'))) 距今多少月,
ROUND ((SYSDATE - TO_DATE('20001月01', 'YYYYMONTHDD'))/7) 距今多少周
FROM DUAL;-- 2 查询员ename的第三个字母是A的员工的信息(使用2个函数)
SELECT *
FROM emp
WHERE INSTR (UPPER (ename), 'A') = 3 -- 第三个字符是A-- 3 使用trim函数将字符串'hello'、' Hello '、'bllb'、' hello    '分别处理得到下列字符串ello、Hello、ll、hello
SELECT TRIM ('h' FROM 'hello'), TRIM (' ' FROM ' Hello '), TRIM (BOTH 'b' FROM 'bllb'), TRIM (' ' FROM ' hello    ')
FROM DUAL;-- 4 将员工工资按如下格式显示:123,234.00 RMB
SELECT TO_CHAR (sal, '999,999.99')||' RMB' 员工工资
FROM emp;-- 5 查询员工的姓名及其经理编号,要求对于没有经理的显示"No Manager"字符串
SELECT ename 员工姓名, NVL (TO_CHAR (mgr), 'No Manager') 经理编号
FROM emp;-- 6 将员工的参加工作日按如下格式显示:月份/年份
SELECT TO_CHAR (hiredate, 'MM/YY')
FROM emp;-- 7 在员工表中查询出员工的工资,并计算应交税款:如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于3000,说率为20%
SELECT sal 工资,
(CASEWHEN sal > 0 AND sal < 1000 THEN sal*0WHEN sal >= 1000 AND sal < 2000 THEN sal*0.1WHEN sal >= 2000 AND sal < 3000 THEN sal*0.15WHEN sal >= 3000 THEN sal*0.2
ELSE 0
END) 应交税款
FROM emp;-- 8 创建一个查询显示所有雇员的ename和sal。格式化sal为15个字符长度,用$左填充,列标签SALARY
SELECT ename 员工姓名, LPAD (TO_CHAR (sal), 15, '$') SALARY
FROM emp;

暑假实训-3_Oracle数据库-3_单行函数相关推荐

  1. [JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 前一篇文章讲解 ...

  2. [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 前一篇文章讲解 ...

  3. [JSP暑假实训] 二.JSP网站创建及Servlet实现注册表单提交、计算器运算

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 本篇文章开始讲 ...

  4. [JSP暑假实训] 五.MyEclipse+Servlet+JSP实现火车票网站注册操作及登陆验证

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 前一篇文章讲解 ...

  5. Oracle数据库之单行函数

    oracle安装参照: Oracle数据库之安装教程 Oracel数据库总结: Oracle数据库之基本查询 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 ...

  6. SEEK学习论坛-JavaWeb开发实训课题 (数据库MySQL+js+Ajax+Servlet)

    关于这次学校实训,我们做了一个类似于CSDN博客的项目,然后我们小组取名叫SEEK,一个学习论坛,前面ppt有介绍,我主要是负责后端数据库的,与MySQL交互,由我的组长写好js代码,然后将前端所获取 ...

  7. 头歌-信息安全技术-实训04 数据库SQL注入漏洞

    头歌-信息安全技术-实训04 数据库SQL注入漏洞 第一关:获取dvwa环境 任务描述 实验步骤 1. 安装appach 2.安装php 3.修改apache配置文件 4.安装mysql 5.安装dv ...

  8. 2022东软Java暑假实训

    2021Java实训 1.前端 <img src="地址" alt="当图片消失时显示的文字" title="当光标放在图片上时显示的文字&qu ...

  9. java与数据库综合实训_JAVA数据库学生管理系统实训报告

    <JAVA数据库学生管理系统实训报告>由会员分享,可在线阅读,更多相关<JAVA数据库学生管理系统实训报告(43页珍藏版)>请在人人文库网上搜索. 1.实训报告实训名称:学生成 ...

最新文章

  1. (ASA) Cisco Web ××× 配置详解 [三部曲之一]
  2. Pig自定义过滤UDF和加载UDF
  3. 用XMLHTTP获取动态页生成的HTML内容
  4. reporting services订阅
  5. gulp编译css_如何用gulp缩小CSS
  6. Java写入的常用技巧
  7. 关于博客园的一些建议
  8. Python+OpenCV:训练级联分类器(Cascade Classifier Training)
  9. 四川地震,物联网地震预警系统立功了
  10. js中java式的类成员
  11. WIN32汇编 菜单和加速键的使用
  12. Google PAI资料整理及实现
  13. linux c语言 模拟键盘输入
  14. word一键生成ppt 分页_WORD自动生成PPT
  15. 计算机无法访问inter,电脑网络提示无Internet访问权限解决办法
  16. 如何编写一份合格的架构设计文档
  17. 细粒度分类:Hierarchical Bilinear Pooling(HBP),分级双线性池化(一)
  18. Project Euler 3
  19. Spring Boot概述与入门特点配置方式注入方式yim配置文件与多文件配置Spring Boot自动配置原理lombok应用
  20. 如何下载Microsoft Edge浏览器新建标签页中好看的壁纸

热门文章

  1. svn项目迁移后服务器up报错:E155036 的处理方法
  2. 基于Sentinel-1的干涉相干性特征生成
  3. 汉诺塔(C语言实现)
  4. Sonarqube代码审查平台
  5. 华为HiLink智慧家庭生态发布 引领未来智能生活
  6. 数字图像处理之灰度化
  7. k8s DNS服务配置
  8. 可能不能吃的食物-为自己记录一下
  9. JavaSE 软件工程师 认证考试试卷3
  10. 计算机cmos参数的设置,CMOS常见的设置方法