Oracle 学习第二天 (作业)
一.单行函数
-
显示"hello world"符串大写的形式 select upper ('hello world')
from dual;
-
显示"HELLO WORLD"符串小写的形式 select lower ('HELLO WORLD')
from dual;
-
显示"hello world"符串的首字母大写,其他小写的形式 select initcap ('hello world') as result
from dual;
-
将hello字符串后拼接world字符串,使用两种方式实现 select concat('hello','world') as result
from dual;
select 'hello'||'world'
from dual;
-
求hello world字符串的第三个字符到第八个字符的子字符串? substr(str,index1, index2)第一个参数为要截取的字符,index1 为起始位,index2是从起始位开始算有多 少个字符 select substr ('hello world',3,6)
from dual;
-
求hello world字符串的长度 select length ('hello world') as result
from dual;
-
查询员工的全名和工资,并且全名以大写的方式 显示,并且first_name的长度大于6,最后工资降序排序? select upper (first_name||'.'||last_name),salary
from s_emp
where length(first_name)>6
order by salary desc
-
显示所有雇员的姓以及满10年服务年限的日期 select last_name,add_months(start_date,12*10)
from s_emp
-
对于每个雇员,显示其加入公司的天数 select id,last_name,trunc(sysdate-start_date,0) as "加入天数"
from s_emp
-
显示所有雇员的姓的前三个字符 select substr(last_name,1,3)
from s_emp
-
显示正好为6个字符员工的姓名 select last_name
from s_emp
where length(last_name)=6
-
显示只有首字母大写的所有员工的姓 select last_name
from s_emp
where last_name=initcap(last_name)
-
找出早于23年之前受雇的雇员 select id, last_name
from s_emp
where ((to_number(to_char(sysdate,'yyyy')))-(to_number(to_char(start_date,'yyyy'))))>23
二.转换函数
-
显示当前时间,查询当前时间是这年的第几天?是这个星期的第几天? 是这个月的第 几天? select to_char (sysdate 'ddd dd d') from dual;
-
显示所有雇员的姓和加入公司的年份和月份,按雇员受雇日所在年、月排序 ,将最早 年份的雇员排在最前面,年份相同雇员再按月份入职早晚顺序排 select last_name,to_char(start_date,'yyyy') year ,to_char(start_date,'mm') month
from s_emp
order by year ,month ;
-
找出在(任何年份的)2月受聘的所有雇员 select id,last_name,start_date
from s_emp
where to_char(start_date,'mm') = 2;
-
找出各月最后一天受雇的所有雇员 select id,last_name
from s_emp
where last_day(start_date)=start_date
三. rownum
-
rownum是什么? ORACLE中,ROWNUM像一个隐藏的字段。记录的是行数。 SELECT ROWNUM,A.* FROM TABLE A 就出来了 可以查第几条数据,如: select * from (SELECT ROWNUM rn,A.* FROM TABLE A )b where b.rn=你要查询的行数
四.多表查询
-
查询所有员工信息,同时显示所在部门名称; select e.id,last_name,d.region_id
from s_emp e,s_dept d
where dept_id=d.id(+)
-
查看所有员工信息,同时显示所在区域名称; select last_name,r.name
from s_emp e ,s_dept d,s_region r
where e.dept_id=d.id(+) and region_id=r.id(+);
|