2021-09-09

Oracle 学习第二天 (作业)

一.单行函数

  1. 显示"hello world"符串大写的形式

    select upper ('hello world') 
    from dual; 
    
  2. 显示"HELLO WORLD"符串小写的形式

     select lower ('HELLO WORLD')
     from dual;
    
  3. 显示"hello world"符串的首字母大写,其他小写的形式

    select initcap ('hello world') as result
    from dual;
    
  4. 将hello字符串后拼接world字符串,使用两种方式实现

    select concat('hello','world') as result
    from dual;
    
    select 'hello'||'world'
    from dual;
    
  5. 求hello world字符串的第三个字符到第八个字符的子字符串? substr(str,index1, index2)第一个参数为要截取的字符,index1 为起始位,index2是从起始位开始算有多 少个字符

    select substr ('hello world',3,5)
    from dual;
    
  6. 求hello world字符串的长度

    select length ('hello world') as result
    from dual;
    
  7. 查询员工的全名和工资,并且全名以大写的方式 显示,并且first_name的长度大于6,最后工资降序排序?

    select upper (first_name||'.'||last_name),salary
    from s_emp
    where length(first_name)>6
    order by salary desc
    
  8. 显示所有雇员的姓以及满10年服务年限的日期

    select last_name,add_months(start_date,12*10)
    from s_emp
    
  9. 对于每个雇员,显示其加入公司的天数

    select id,last_name,trunc(sysdate-start_date,0) as "加入天数"
    from s_emp
    
  10. 显示所有雇员的姓的前三个字符

    	select  substr(last_name,1,3)
    	from s_emp
    
  11. 显示正好为6个字符员工的姓名

    	select last_name
    	from s_emp
    	where length(last_name)=6
    
  12. 显示只有首字母大写的所有员工的姓

    select last_name
    from s_emp
    where last_name=initcap(last_name)
    
  13. 找出早于23年之前受雇的雇员

    select id, last_name
    from s_emp
    where ((to_number(to_char(sysdate,'yyyy')))-(to_number(to_char(start_date,'yyyy'))))>23
    

二.转换函数

  1. 显示当前时间,查询当前时间是这年的第几天?是这个星期的第几天? 是这个月的第 几天?

    select to_char (sysdate 'ddd dd d')	from dual;
    
  2. 显示所有雇员的姓和加入公司的年份和月份,按雇员受雇日所在年、月排序 ,将最早 年份的雇员排在最前面,年份相同雇员再按月份入职早晚顺序排

    select last_name,to_char(start_date,'yyyy') year ,to_char(start_date,'mm') month  
    from s_emp 
    order by year ,month ;
    
  3. 找出在(任何年份的)2月受聘的所有雇员

     select id,last_name,start_date 
    from s_emp 
    where to_char(start_date,'mm') = 2;
    
  4. 找出各月最后一天受雇的所有雇员

     select id,last_name
     from s_emp
     where last_day(start_date)=start_date
    

三. rownum

  1. rownum是什么?

    ORACLE中,ROWNUM像一个隐藏的字段。记录的是行数。 SELECT ROWNUM,A.* FROM TABLE A 就出来了 可以查第几条数据,如: select * from (SELECT ROWNUM rn,A.* FROM TABLE A )b where b.rn=你要查询的行数

四.多表查询

  1. 查询所有员工信息,同时显示所在部门名称;

    select e.id,last_name,d.region_id 
    from s_emp e,s_dept d
    where dept_id=d.id(+)
    
  2. 查看所有员工信息,同时显示所在区域名称;

       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(+);
    
上一篇:剑指 Offer 22. 链表中倒数第k个节点


下一篇:MySQL的增删改查