码迷,mamicode.com
首页 > 数据库 > 详细

oracle概念

时间:2017-06-22 23:02:18      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:drop   共享锁   6.2   ack   data   包含   简单   语句   alter   

技术分享
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访问,建立同义词
            同一数据库下不同用户之间,建立同义词
    分类
        公用
        专用
数据库对象

 

oracle概念

标签:drop   共享锁   6.2   ack   data   包含   简单   语句   alter   

原文地址:http://www.cnblogs.com/wiseroll/p/7067558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!