zoukankan      html  css  js  c++  java
  • 38.oracle开篇

      先不聊技术,咱先闷骚一下。刚看完“解忧杂货店”的第二章“深夜的口琴声”,这一章勾起了我万千思绪,小说毕竟是小说,可能与现实不符,但能引发思考,反应一个普遍问题就是好小说。看到一半我还特意去酷狗上搜了一下有没有“深夜里的口琴声”里的“重生”这首歌,结果意料之中。我也在怀疑,我一直以来的那些想法是不是我的执念,就说“架构师”这事情,在大学校园里就为自己立了一个目标,在毕业后5年内达到架构师的水准,在一个大型技术型公司里能够独当一面,扛起担子,带领大家“干大事”;眼看现在时间快四年了,到2018年6月21日,工作满5年,回头看看自己的水平,远不及当初所想。假如当初克朗接受现实,回到家乡继承父业,把音乐当做一个爱好,会不会也生活得很悠闲?那这种情况下他的音乐会不会被现实中的琐事湮灭?但是按照小说里的情节,他也免不了最终的悲剧,即使是没有那场意外;因为他所定义的那种“实现梦想的人”毕竟是少数,虽然小芹的成名曲也是“重生”,但在章节开始,一个音乐评论家就说过:“歌唱得跟你一样好的人多的是,如果你的声音很有特色,自然另当别论,但你没有”;显然小芹的出名并不完全因为“重生”。看完这章,我的收获是,定个目标,但去除执念,一切慢慢来,顺其自然,但也不能发生“音乐被现实中的琐事湮灭”这种事情,毕竟“梦想是要有的,万一实现了呢!”。至于架构师呢,时间不变,等2018年6月21日回头看看自己的成效吧。以后的“架构师养成”这一标签的中的所有博客标题去掉前缀“架构师养成记--”,但还会放到“架构师养成”这一标签中。

       oracle很久之前就学过,工作中一直在用,但是都比较浅显。这次借着“架构师养成”把oracle再梳理一遍,包括最最基础的sql语句,不嫌麻烦,慢慢来。

      登录system 设置scott账户

      ALTER USER scott account unlock

      ALTER USER scott identified by orcl

    一、sql基础

     1、数据库语言分类

    数据操作语言:DML (data manipulation language)

      select insert update delete merge

    数据定义语言:DDL (data definition language)

      create alter drop turncate

    事务控制语言:TCL (transaction control language)

      commit rollback savepoint

    数据控制语言:DCL (data control language) 权限相关的

      grant revoke

    对于oracle,DML操作会产生undo和lock(除了select)

    2.数据类型

      包含 字符、数值、日期、大对象

    • char 固定字符,最大长度2000
    • varchar2 可变长,最长4000,最小1
    • number
    • date timestamp
    • clob(存储单字节数据,文本数据)
    • blob(存储二进制数据)

    3.常用函数

      date char number三种类型相互之间转换

    • to_timestamp('2017-03-19 21:58:12.08','YYYY-MM-DD HH24:MI:SS.FF');对应mysql中的函数 str_to_date('2008-4-2 15:3:28','%Y-%m-%d %H:%i:%s')
    • to_date('2017-03-19','YYYY-MM-DD')
    • to_char(sysdate,'YYYY-MM-DD')
    • to_char(systimestamp,'YYYY-MM-DD HH24:MI:SS.FF');mysql中对应的函数是date_format(time, '%Y%m%d%H%i%s')
    • to_number(replace(to_char(sysdate,'YYYY-MM-DD'),'-'))

    时间与字符串之间转换的详细用法可以参考博客:

    http://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html

    • decode函数 decode(deptno,10,'部门1',20,'部门2','部门3'); mysql中没有decode
    • case表达式 case when deptno=10 then '部门1' when deptno=20 then '部门2' else '部门3' end 或者使用 case deptno when 10 then '部门1' else '部门3' end 这种格式;mysql中也有对应表达式,mysql中海油if函数可实现类似功能。
    • trunc
    • add_months
    • month_between
    • last_day
    • replace
    • substr
    • concat
    • abs
    • round

     4.分组

    组函数 sum min max avg count

    分组特性 group by ... having

    翻译题:

    1.查询每个部门的平均薪水之后显示部门平均薪水大于2000的部门编号和其平均薪水

     select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

    2查询每个部门的薪水和,在算出所有部门薪水平均值

     select sum(sal) as total,avg(sal) as average from emp group by deptno;

    5.几种连接

    • 交叉连接
    • 等值连接、非等值连接
    • 内连接

        select * from dept,emp where dept.deptno = emp.deptno

        select * from dept inner join emp on dept.deptno = emp.deptno

        select * from dept join emp on dept.deptno = emp.deptno

    • 外链接(左外,右外,全连接)

        select * from dept,emp where dept.deptno = emp.deptno(+)

        select * from dept left join emp on dept.deptno = emp.deptno

        select * from dept left outer join emp on dept.deptno = emp.deptno

        select * from dept full join emp on dept.deptno = emp.deptno

    • 自连接  
    • 自然连接(隐含连接条件,自动匹配连接)

        很少用,就是两张表字段名和字段类型完全相同,oracle就自动连接。相当于一种内连接

        select * from dept natural  join emp 也就相当于 select * from dept,emp where dept.deptno = emp.deptno

    • 集合运算

        union(重复记录只返回一条)

        union all(显示所有记录)

        intersect(显示公司的数据部分)

        minus(集合相减,那个表在前面以那个表数据为主)

    6.子查询

    • 非关联子查询:select * from emp where emp.deptno = (select deptno from dept where dept.deptno=10)
    • 关联子查询:select emp.ename,(select dept.dname from dept where dept.deptno=emp.deptno) as deptname from emp
    • in和exists。in是做全表扫描;exists是做是否存在,非全表扫描。

    7.rownum的使用

    只有用小于才能查到结果,使用大于没有结果。使用别名的形式查询,大于才有结果。

    select * from (select emp.*,rownum as rn from emp ) where rn > 5;

    select * from (select emp.*,rownum as rn from emp ) where rn between 5 and 10;

    要注意的是,使用between and 是包含的。

    这一篇就先这样了,都是一些基础的东西,不要嫌烦,再看一遍总有点收获。其他的像存储过程,函数什么的,就不多介绍了,都类似上面这些基础的东西,应该很熟练。

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/sigm/p/6582031.html
Copyright © 2011-2022 走看看