今天分享的是oracle学习的第二天

大家好,今天分享的是oracle学习的第二天。如果对您有用,请关注我,方便您下次查看。
学习资料链接:
百度网盘:https://pan.baidu.com/s/12GsiybwDAIpDC1ATnyyqCQ
提取码:d6b0

–day02-----------------------------------------------------------------------------------------------
目标
1. 范围查询。从…到…
2. 模糊查询.以什么开头,以什么结尾,包含什么
3. 单行行数:字符函数、数字函数、转换函数
4. 多表查询(简写版)

1.查工资从1000~2500的员工信息
select ename,sal from emp where sal>=1000 and sal<=2500; --and 逻辑与,两边都成立返回true
–or 逻辑或,有一遍成立返回true

针对范围查询关键字:between ...小... and ...大...
select eName,sal from emp where sal between 1000 and 2500;

2.模糊查询
模糊查询即像什么一样,语法:列名 like ‘%X%’ %任意多个字符 _任意一个字符
select * from dept where dName like ‘%O%’; --部门名称包含“O”的部门信息
select * from Dept where dName like ‘A%’; --部门名称以“A”开头的部门信息
select * from Dept where dName like ‘_A%’; --部门名称中“A”是第2个字符的部门信息

3.单行函数
专用来做测试查询的表:dual 此表1行1列的值
字符函数:
转大写 upper(‘字符’) select upper(‘abcDEF’) from dual; ‘ABCDEF’
转小写 lower(‘字符’) select lower(‘abcDEF’) from dual; ‘abcdef’
首字符大写 initcap(‘字符’) select initcap(‘miss.wu’) from dual; ‘Miss.Wu’

    练习:查部门所在地区NEW YORK要求不区分大小写
    select * from dept where lower(loc) = lower('New York');
    
    链接        concat('字符1','字符2')        select concat('abc','def') from dual;    'abcdef'
    获得长度        length('字符')            select length('abcde') from dual;    5
    截取        substr('字符',启点,几个);    select substr('abcde',2,3) from dual;    'bcd'
                            select substr('abcde',-2,1) from dual;    'd'
            注意启点是正数时从前向后的第N个字符开始,向后截取几个
                启点是负数时从后向前的第N个字符开始,向后截取几个
    

    练习:显示部门信息,部门名称、所在区域最多承载5个字符显示位
    select deptNo,subStr(dName,1,5)||'...' deptName,substr(loc,1,5)||'...' deptLoc  from dept;
数学函数:
    四舍五入        round(数值,有效位数)        select round(1255.55) from dual;    1256    
                            select round(1255.55,1) from dual;    1255.6
                            select round(1255.55,-1) from dual;    1260
    全舍去        trunc(数值,有效为主)        select trunc(1255.55) from dual;    1255
                            select trunc(1255.55,1) from dual;    1255.5
                            select trunc(1255.55,-1) from dual;    1250



    练习:SMITH此员工在干1/3的时离职,因此工资只拿1/3
    select eName,sal,trunc(sal/3,1) from emp where upper(eName)=upper('smith');

转换函数:
    字符转数值*    to_number('字符')            select to_number('123') from dual;
    字符转日期*    to_date('字符','yyyy-mm-dd hh:mi:ss')      

            select to_date('2018-01-04','yyyy-mm-dd') from dual;    
            显示 '04-01-2018'

数值转字符/日期转字符    to_char(日期,'格式')    
            select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
            返回系统日期 2018-04-04 12:00:23
            select to_char(800,'$9999.99') from dual;
            返回字符:'$800.00'
            
            格式说明:
            9  --  任意1个字符,小数点前不强制补0,小数点后强制补0
            0  --  任意1个字符,小数点前后强制补0
            $  --  货币符号:美金
            L  --  货币符号:本地
            yyyy -- 年    mm -- 月        dd--日
            hh  -- 小时(12进制)    hh24 -- 小时(24进制)
            mi  -- 分钟        ss -- 秒
            
获取明天的日期:select to_char( sysdate+1 ,'yyyy-mm-dd hh24:mi:ss' ) from dual;
练习:查询时当月当天入职的员工信息(请调整系统时间2月22日)
SQL> select empNo,eName,to_char(HIREDATE,'yyyy-mm-dd') from emp
  2    where to_char(HIREDATE,'mm') = to_char(sysdate,'mm')
  3      and to_char(HIREDATE,'dd') = to_char(sysdate,'dd');

4、多表查询(简版)
内链查询:显示是多表的共有数据(你有、我有、他也有,大家都有的数据)
思考题:一句查询语句显示员工姓名和部门名称,怎么办?怎么办?怎么办?
员工姓名eName 在员工表emp中
部门名称dName 在部门表dept中
分析emp员工表与dept部门表的结构中都有一个deptNo部门编号

答:select e.eName,e.deptNo, d.deptNo,d.dName from emp e,dept d
       where e.deptNo = d.deptNo;
解:员工“KING ”的部门是10,10号部门是 《ACCOUNTING》
    
外链查询:显示(+)对面表的所有数据
思考题:显示所有员工信息(共13行),没有部门的员工部门信息补null    
答:select e.eName,e.deptNo,d.deptNo,d.dName from emp e,dept d
    where e.deptNo = d.deptNo(+);

思考题:显示没有员工的部门信息
答:select d.deptNo,d.dName,d.loc from dept d,emp e
    where e.deptNo(+) = d.deptNo
      and e.eName is null;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值