zoukankan      html  css  js  c++  java
  • oracle概念

    01、DDL 数据定义语言
    create alter drop truncate
    
    02、DML 数据操作语言
    insert delete update select
    
    03、TCL 事务控制语言
    commit rollback
    
    04、DCL 数据控制语言
    rovoke grant
    sql分类
    A(Atomicity):原子性
        一个事务是一个不个分割的工作单位,要么所有的语句都执行成功,
        要么所有的语句都不执行。
    
    C(Consistency):一致性
        事务必须是是一个数据库从一个一致性状态变到另一个一致性状态。
    
    I(Isolation):隔离性
         一个事务的执行不能被其他事务干扰,在一个事务中添加修改的数据,  
        不能被另一个事务读取或修改。
    
    D(Durability):持久性
        指一个事务提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
    ACID
     1 Read Uncommitted(读取未提交内容)
     2        在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
     3 
     4 Read Committed(读取提交内容)Oracle默认的级别
     5        这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
     6 
     7 Repeatable Read(可重读)
     8        这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
     9 
    10 Serializable(可串行化) 
    11        这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
    事务隔离级别
    数据库设计(Database Design):针对用户特定的需求,我们能够创建最合适的数据库模型,然后将数据有效的存储!
    
    数据库涉及的内容:01、需求分析
                              02、概念结构设计
                              03、逻辑结构设计
                              04、物理结构的设计
                              05、数据库的实施
                              06、数据库的运行和维护                            
    
    数据库的三大范式:
    01、确保每列的原子性:每一列的值都是不可再分的最小数据单元!
    02、在满足第一范式的前提下,确保列中的每列都和主键相关!
    03、在满足第二范式的前提下,确保每列都和主键有直接关系,而不是间接依赖!
    
    A>B  B>C  B依赖于A,C依赖于B,我们就说C间接依赖于A,这种关系我们称之为:传递依赖。
    数据库设计
    1、建议不用“*”代替所有的列名
    2、删除所有的数据用TRUNCATE代替DELETE
    3、用NOT EXISTS 代替 NOT IN
    4、用EXISTS 代替 IN
    5、用EXISTS 代替 DISTINCT
    6、驱动表的选择
        6.1from 后面靠右的那个表是驱动表(表都没索引的情况)
        6.2、再有索引的情况下,应该是没索引的那张表是驱动表
        6.3、驱动表要选择小表(过滤后的数据量小)
    7where 子句的连接顺序
        7.1、过滤记录越多的条件子句应放置到后面
        7.2、表连接关系放在前面
        
    
    8、索引-通过索引,执行效率更高
        8.1、单列索引:就是一个列的索引
        8.2、组合索引:就是多列索引
        8.3、分区索引:基于分区表
        8.4、B树索引:普通索引
        8.5、唯一索引:在索引里面增加了唯一约束
        8.6、反向键索引
        8.7、位图索引
        8.8、函数索引
        
    
    9、表分区
        把表中数据划分成若干部分,并存储在不同的位置
    优点:
        改善查询性能
        表更容易管理
        便于备份和恢复
        提高数据安全性
    表分区种类
        散列分区:根据hash值自动分配
        列表分区:明确的指定列表
        复合分区:上面几种的复用
        其他分区:例如外键分区
    sql优化
        
    数据库对象:
      数据库对象-模式对象
            逻辑结构的集合,最基本的数据库对象是表
            同义词
            视图
            序列
            索引-通过索引,执行效率更高DBLink
            约束
            触发器
            存储过程
            ...
            
            
     数据库对象-视图
            视图View-虚拟的表
                限制对表中的一组行为访问
                隐藏数据的复杂性
                简化了用户的SQL
                基表定义修改隔离
                通过重命名列,从另一个角度提供了数据
            DML操作的限制
                只能对基表进行操作
                注意权限问题
                
    数据字典
        静态数据字典
            dba_***:包含了数据库拥有的所有对象和权限的信息
            all_***:包含了用户当前可以访问的全部对象和权限的信息
            user_***:包含了用户拥有的对象的信息
            常用的:
            select * from user_tables --用户表
            select * from user_tab_cols -- 表的列
            select * from user_tab_comments; --查看表的注释
            select * from user_views; --所有的视图
            select * from user_sequences; --所有序列
            select * from dba_data_files;  --需要dba权限,
            才可以查看所有用户的tablespace以及其数据文件的存放位置
        动态数据字典   v$**
            v$sqlarea   --通过这个查看sql,优化sql
            v$session    --通过这个查看当前都哪些用户登录连接着数据库还可以看到实例
            v$tablespace --查看表空间
            v$database    --查看数据库
            v$instance  --查看实例
            ...
            
    数据库对象-DBLink
        DBLink
            访问远程数据库(只读权限)
        创建步骤:
            为远程数据库建立网络服务名(Net Manager)
            创建DBLink
            注:一般的dblink都是公用的,所以使用system用户创建DBLink即可
            
    数据库对象-同义词
        同义词(Synoyms)
            匿名,屏蔽对象的名字及其持有者
            为用户简化SQL语句
                不同数据库之间通过DBLink访问,建立同义词
                同一数据库下不同用户之间,建立同义词
        分类
            公用
            专用
    数据库对象
  • 相关阅读:
    WDF驱动中KMDF与UMDF区别
    GTD190018:【翻译】The Case Against Civilization
    GTD190017:【翻译】Transformer: A Novel Neural Network Architecture for Language Understanding
    GTD180016:【翻译】Software Engineering ≠ Computer Science
    GTD180015:【学习】一文看尽深度学习RNN:为啥就它适合语音识别、NLP与机器翻译?
    GTD180014:【翻译】Combinatory_logic
    GTD180013:【翻译】Improving the Realism of Synthetic Images
    GTD180012:【翻译】Visualizing Algorithms
    GTD180011:【翻译】The future of deep learning
    GitHub180001:【翻译】Using 3D Convolutional Neural Networks for Speaker Verification
  • 原文地址:https://www.cnblogs.com/wiseroll/p/7067558.html
Copyright © 2011-2022 走看看