• 2017-04-23,周日整理


      SCM项目告一段落,这一周学习内容很多,oracle数据库从基础到高级都提及到了一些,加深了对数据库的深层次理解。下面就是这一周的学习总结:

    1. 首先是oracle数据库的安装,由于10G版本对于系统的兼容性要求很高,需要配置很多文件,很繁琐,所以直接安装11G 64Bit版本,安装很顺畅,按照安装向导安装成功,需要注意的是管理员口令需要记牢,scott用户需要解锁,因为学习的时候要用到scott用户中的4个基本表格,emp,dept,salgrade,bonus.
    2. 数据库基本概念
      1. 数据库db和数据库管理系统dbms,dbms用来对db进行统一的完整的管理和控制。
      2. 数据库的发展经历了层次模型,网状模型和关系模型三个阶段,现在普遍使用关系型数据库管理系统。
      3. 关系数据库的逻辑模型叫做实体-关系模型(entity-relationship)图,简称ER图,实体,属性,关系。实体有三种关系,一对一,一对多,多对多。
      4. 规范化:第一范式(1NF),表中的字段都是单一属性的,不可再分的。第二范式(2NF),表中不存在非关键字段对任意一候选关键字段的部分函数依赖,即所有非关键字段都完全依赖于任意一组候选关键字。第三范式(3NF),在第三范式的基础上,表中不存在非关键字段对任一候选关键字段的传递函数依赖,
      5. SQL语言按功能可分为DDL语言(数据库定义语言,增删改数据库对象),DML语言(数据库操作语言,增删改查数据),DCL语言(数据库控制语言,权限授权等)和数据库事务处理语言四个类别。
      6. DML语句规则:
        1. 可以进行+ - * / ,空值参与运算,结果变为空值,||除外。
        2. order by , group by , and , or , not , between...and... , like , is null, is not null, any, all, exists, 
        3. to_char , to_date, to_number, nvl(), decode()
        4. 联合查询:内连接 inner join ... on ...      外连接 left join,  right join,  full join,  会将左表不符合联合条件的也查询出来。    相等连接,不等连接,自连接。
        5. 在分组查询中,组函数的约束应该放在having 关键字后。
        6. rownum,虚列,只存在于结果表中,在oracle中用来实现分页查询。
        7. 两条查询语句得到的结果表还可以集合运算,相并--union all,相减minus,相交intersect。
      7. DDL语句规则:
        1. 可以通过对表格字段添加约束保证数据的完整性和唯一性。primary key, not null, unique, check(), foreign key.
        2. view 视图,通过视图来实现复杂查询的简单化,并且还能保护数据。视图只允许查询。
        3. alter table xxx add constraint fk_yyy foreign key references aaa(yyy);
    3. pl/sql
      1. 基本语法:
        declare
          --声明部分
        begin
          --代码部分
        end;
        --流程控制语句
        if ... then
        elsif ... then
        else
        end if;
        --循环语句
        loop
        exit when ...;
        end loop;
      2. 两种特殊的数据类型:%type, %rowtype,根据表格来定义变量类型,用于接收select语句的结果。
      3. 在代码块中执行DML语句时,若是一条记录的数据,则会自动产生一个隐式游标,接收最近一条记录的数据,该游标名字为sql,它有一些属性可以用来获得语句的执行信息。
      4. 自己定义的显式游标:1.cursor xxx  2.open xxx   3.用fetch...into...拿到游标里的数据  4.close xxx 关闭游标,用for循环可以简化步骤。
      5. 存储过程procedure。返回多条数据用:sys_refcursor
      6. 函数function。
      7. 包头package,包体package body。
      8. 触发器,用来生成日志信息,create or replace trigger xxxtrig after delete or insert or update on xxx for each row declare begin end;
      9. 创建序列,create sequece idseq start with 1 increment by 1 nocycle nocache;   下一个:idseq.nextval    现在的:idseq.currval
      10. 异常处理,exception when xxx then  when others then ...     有时候异常处理会影响到return语句,可以把需要异常处理的部分单独放到一个代码块中,即代码块的嵌套。
      11. 集合数据:
        1. 自定义记录,type 类型名称 is record( ...  );
        2. 索引表,type 索引表名 is table of 存放数据的类型 index by 索引的类型; 
        3. 记录表,存放记录的索引表
      12. 批处理forall, bulk collect.
      13. 动态执行excute immediate str...
    4. 事务处理
      1. set transaction isolation level read commited...
      2. commit  rollback  ...
    5. 优化
      1. oracle在执行一个sql语句之前,首先要分析一下语句的执行计划,然后再按照执行计划去执行,分析语句的执行计划是由优化器(Optimizer)来完成的。简单来说,Optimizer就是Oracle在执行SQL之前分析语句的工具。
      2. Oracle索引:
        1. 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据(加快查询)。
        2. 索引在逻辑上可以分为单列索引,多列索引,唯一索引,非唯一索引。在物理上分为:B*-Tree索引,反向索引,位图索引。
        3. 单列索引create index name_index on emp(ename);  复合索引(多列)create index emp_ind on emp(ename,job);
    6. oracle体系结构和用户权限
      1. TODO

     

  • 相关阅读:
    搜索优化
    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)
    Tomcat7.0.22在Windows下详细配置过程
    maven 安装配置
    Venus wiki
    搜索引擎基本原理及实现技术——用户查询意图分析
    sql 表自连接
    select 多表查询
    select 嵌套
    Ioc和Aop扩展--多种方式实现依赖注入(构造注入,p命名空间注入,集合类型注入,注入null和注入空值)
  • 原文地址:https://www.cnblogs.com/lg-study/p/6762537.html
Copyright © 2020-2023  润新知