Oracle的复杂查询
关于Oracle的复杂查询
- Oracle的复杂查询
-
- 1、SQL简介
- 2、SQL命令分类
- 3、Oracle中的函数
- 4、伪列
- 5、Oracle的序列
- 6、完成下面查询语句
-
- 6.1.显示所有员工姓名的前三个字符
- 6.2.显示正好为5个字符的员工的姓名,工资,部门号
- 6.3.写一个查询,用首字母大写,其它字母小写显示雇员的 ename,显示名字的长度, 并给每列一个适当的标签,条件是满足所有雇员名字的开始字母是J、A 或 M 的雇员,并对查询结果按雇员的ename升序排序。(提示:使用length、substr)
- 6.4.查询员工姓名中包含 大写或小写字母 A的员工姓名
- 6.5.显示所有员工的姓名,用a替换所有"A"
- 6.6.查询部门编号为10或20,入职日期在81年5月1日之后,并且姓名中包含大写字母A的员工姓名,员工姓名长度
- 6.7.查询每个职工的编号,姓名,工资 要求将查询到的数据按照一定的格式合并成一个字符串.
- 6.8.查询服务器当前时间
- 6.9.查询部门10,20的员工截止到2000年1月1日,工作了多少个月,入职的月份
- 6.10.如果员工试用期6个月,查询职位不是MANAGER的员工姓名,入职日期,转正日期,入职日期是第多少月,第多少周
1、SQL简介
2、SQL命令分类
3、Oracle中的函数
3.1.单行函数
3.1.1.字符函数
大小写控制函数
字符控制函数
示例:
–伪表:Oracle中为了构成SQL语法的完整性,一张虚拟的表 dual
–大小写转化
– 字符型函数(小写变大写)
select upper('hello 嗯嗯') from dual;
– 字符型函数(大写变小写)
select lower('HELLO') from dual;
– 首字母大写
select initcap('HELLO xiao') from dual;
–拼接字符串 ||
– 字符拼接concat
select concat('A','bc') from dual;
– 字符拼接||
select 'AA'||'bb'||'Cc' from dual;
select ename||'的工资为:'||sal from emp;
–截取字符串
select substr('abcdefj',2,3) from dual;
–计算字符串的长度
select length('abcdefj') from dual;
select * from emp where LENGTH(ename)=5;
–查询指定字符的位置
select instr('abcdefj','c') from dual;
–Trim
– trim(只能去除首尾字符)
select trim('a' from 'javascript') from dual
– trim去除首尾空格
select trim(' abc ') from dual;
–LPAD
SELECT LPAD('haha',10,'#') FROM dual;
3.1.2.数字处理函数
- ROUND: 四舍五入
例:ROUND(45.926, 2) ,结果 45.93 - TRUNC: 截断
例:TRUNC(45.926, 2) ,结果 45.92 - MOD: 求 余
例:MOD(1600, 300) ,结果 100
–数学函数
select MOD(100,3) 结果 from dual;
select MOD(100,3) as 结果 from dual; select MOD(100,3) as "结果" from dual; select MOD(100,3) "结 果" from dual;
注意:取别名,别名中有特殊字符例如空格,需要家双引号
3.1.3.日期函数
获取系统日期:sysdate
- 在日期上加上或减去一个数字结果仍为日期。加减的是天数
- 两个日期相减返回日期之间相差的
天数
。 - 可以用数字除 24 来向日期中加上或减去小时。
–获得当前系统日期+2天
select sysdate+2 from dual;
–计算所有的员工入职的周数
select (SYSDATE-hiredate)/7 "周数",ename from emp;
–获得当前系统日期+10个小时
select sysdate+(10/24) from dual;
3.1.4.转换函数
to_char
– 转化为字符串
– 时间转字符串
select to_char(sysdate,'yyyy-fmmm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24"时"mi"分"ss"秒"') from dual;
– 获取年份
select to_char(sysdate,'yyyy') from dual;
–获取月
select to_char(sysdate,'mm') from dual;
–获取星期
select to_char(sysdate,'day') from dual;
语法:TO_CHAR(number, ‘format_model’)
下面是在TO_CHAR 函数中经常使用的几种格式:
9 的地方如果