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.1、from 后面靠右的那个表是驱动表(表都没索引的情况)
    6.2、再有索引的情况下,应该是没索引的那张表是驱动表
    6.3、驱动表要选择小表(过滤后的数据量小)
7、where 子句的连接顺序
    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访问,建立同义词
            同一数据库下不同用户之间,建立同义词
    分类
        公用
        专用

数据库对象

时间: 2024-11-06 18:49:06

oracle概念的相关文章

关于ORACLE的串行化隔离级别--来自ORACLE概念手册

为了描述同时执行的多个事务如何实现数据一致性,数据库研究人员定义了被 称为串行化处理(serializability)的事务隔离模型(transaction  isolation model).当所有事务都采取串行化的模式执行时,我们可以认为同一时间只有 一个事务在运行(串行的),而非并发的 以串行化模式对事务进行隔离的效果很好,但在此种模式下应用程序的效率将 大大降低.将并行执行的事务完全隔离意味着即便当前只存在一个对表进行查 询(query)的事务,其他事务 也不能再对此表进行插入(inse

Oracle SQL篇(一)null值之初体验

    从我第一次正式的写sql语句到现在,已经超过10年的时间了.我写报表,做统计分析和财务对账,我一点点的接触oracle数据库,并尝试深入了解.这条路,一走就是10年,从充满热情,到开始厌倦,我不知道我还能坚持多久,未来的路,谁知道呢? 也许是该抓紧时间,做一点什么了,我不知道该开始写些什么,我从来没有在网上写东西的习惯.     先从简单的开始吧,那当然就是SQL,这是我SQL系列的第一篇,希望我能够坚持. 在Oracle数据库中,如果一个表中的列没有值的话,我们可以说是空值,比如IT员

Oracle DBA面试突击题

一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答:Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以分为三小类. 以Nest Loop为例: 传统的Nest Loop连接: 针对In.Exists优化的Semi Nest Loop: 专门针对Not In.Not Exists优化的Anti Nest Loop. Semi/Anti *** Join这几种也叫半连接. (可以补充一下这三个连接的不同之

oracle sql 高级编程 历史笔记整理

20130909 周一 oracle sql 开发指南 第7章 高级查询 1.层次化查询select level,ttt.*,sys_connect_by_path(ttt.col1,',') from ttt start with .. Connect by prior -因为先建立树,再进行where过滤的.在where中过滤和在cooonect by中过滤是不一样的. 2.rollup cube高级查询 select grouping(col1) .. From ttt group by

oracle 方向及资料

总结了一下大家的意见,也加了一些个人的看法,Oracle的学习路径,可供参考: 初级阶段: 可以从OCP教材开始,还有文档中的Administrator's Guide.Concepts.Performance Tuning Guide.Backup and Recovery Advanced User's Guide.Backup and Recovery Basics.特别是Administrator's Guide.Concepts.Performance Tuning Guide,要详细

关于ORACLE事务处理的一些笔记

这是2013年在看ORACLE概念手册的时候的一些笔记,现在整理如下(可能跟其他一些文章的内容有重复): 20131012 周六 oracle概念手册中文版 第4章 事务管理   事务具有原子性,要么全部提交,要么全部回滚.   事务开始于第一条可执行的sql语句,结束语commit或者rollback操作.执行一个ddl操作可以自动的触发commit操作.   下列java代码:DataSource ds = DataSourceGen.getDataSourceFromXML(); Conn

【Oracle学习笔记-2】Oracle基础术语解析

来自为知笔记(Wiz) 附件列表 Oracle概念解析.png 表空间.png 大小关系.png 段segment.png 块block.png 区entent.png 数据库基本概念.png

Oracle Certified

一.基本介绍 Oracle认证证书只是让雇主了解到来应聘的人通过了Oracle数据库方面的技术考试.而实际上,Oracle认证也只是衡量一个应聘者的一个标准之一,其他的标准还有: 1.出色的交际能力.Oracle DBA通常都要和IT行业的技术专家打交道,因此,他或她就必须能够为所有访问Oracle数据库的开发人员或程序员清晰明了的解释Oracle概念.有些时候,Oracle DBA也是一名管理人员,因此,也同样要求他在参与战略发展计划以及数据库设计上要有出色的交际能力. 2.同类的专业学位.大

TIMESTEN安装配置指南-中文版

TimesTen内存数据库 第一章 Cache Connect to Oracle概念 TimesTen数据交换技术提供在Oracle数据库和TimesTen数据管理器之间进行连接和双向数据传送.数据交换技术也使得能够方便的捕获和处理进入到TimesTen数据管理器的大流量事件流,而且能进行并发传送数据到Oracle数据库. TimesTen同意通过创建cache group来快速缓存Oracle数据,以在TimesTen中映射一个或多个Oracle表. 同意快速缓存Oracle数据的Times