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
- Read Uncommitted(读取未提交内容)
- 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
- Read Committed(读取提交内容)Oracle默认的级别
- 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
- Repeatable Read(可重读)
- 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
- Serializable(可串行化)
- 这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
事务隔离级别
- 数据库设计(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访问,建立同义词
- 同一数据库下不同用户之间,建立同义词
- 分类
- 公用
- 专用
数据库对象
oracle概念的更多相关文章
- 关于ORACLE的串行化隔离级别--来自ORACLE概念手册
为了描述同时执行的多个事务如何实现数据一致性,数据库研究人员定义了被 称为串行化处理(serializability)的事务隔离模型(transaction isolation model).当所有 ...
- oracle 方向及资料
总结了一下大家的意见,也加了一些个人的看法,Oracle的学习路径,可供参考: 初级阶段: 可以从OCP教材开始,还有文档中的Administrator's Guide.Concepts.Perfor ...
- Oracle SQL篇(一)null值之初体验
从我第一次正式的写sql语句到现在,已经超过10年的时间了.我写报表,做统计分析和财务对账,我一点点的接触oracle数据库,并尝试深入了解.这条路,一走就是10年,从充满热情,到开始厌 ...
- Oracle技术面试问题
这也许是你一直期待的文章,在关注这部分技术问题的同时,请务必阅读有关面试中有关个人的问题和解答.这里的回答并不是十分全面,这些问题可以通过多个 角度来进行解释,也许你不必在面试过程中给出完全详尽的答案 ...
- oracle面试题目总结
阿里巴巴公司DBA笔试题 http://searchdatabase.techtarget.com.cn/tips/2/2535002.shtml 注:以下题目,可根据自己情况挑选题目作答,不必 ...
- 【Oracle学习笔记-2】Oracle基础术语解析
来自为知笔记(Wiz) 附件列表 Oracle概念解析.png 表空间.png 大小关系.png 段segment.png 块block.png 区entent.png 数据库基本概念.png
- Oracle DBA面试突击题
一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答: Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以 ...
- Oracle面试题目及解答
这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE概念的熟悉程度. 1. 解释冷备份和热备份的不同 ...
- oracle中的sys用户(修改密码)/////Oracle删除表空间的同时删除数据文件 ///// Oracle中如何保证用户只有一个session登录
oracle中的sys用户(修改密码) (2011-07-01 09:18:11) 转载▼ 标签: it 分类: oracle 概念: SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用 ...
随机推荐
- Debug 运行正常,Release版本不能正常运行总结(转)
引言 如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程 ...
- 版本控制之四:SVN客户端重新设置帐号和密码(转)
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...
- Special Fish
Special Fish Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 路由知识 静态路由 rip eigrp ospf
第1章 路由选择原理 1.1 几个概念 1.1.1 被动路由协议 用来在路由之间传递用户信息 1.1.2 主动路由协议 用于维护路由器的路由表 R2#show ip route Codes: C - ...
- JSON、JSONP、Ajax的区别
什么是JSON JSON是一种基于文本的数据交换方式,或者叫做数据描述格式. JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2.Javascript原生支持,后台语言几乎全部支持: 3.轻量 ...
- .Net高级进阶,在复杂的业务逻辑下,如何以最简练的代码,最直观的编写事务代码?
本文将通过场景例子演示,来通俗易懂的讲解在复杂的业务逻辑下,如何以最简练的代码,最直观的编写事务代码. 通过一系列优化最终达到两个效果,1.通过代码块来控制事务(分布式事务),2.通过委托优化Tran ...
- css定位讲解
定位分三种:相对定位,绝对定位,固定定位; 相对定位:position:relatve; 绝对定位:position:absolute; 固定定位:position:fixed; 一, ...
- C#算法面试题
1.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复. static void GetArray() { ]; ]; ; i < ; i++) { intArr[i] ...
- 北京Python筛选过程中应注意什么
计算机初级爱好者普遍喜欢Python,因为Python干净利索,简单直接.它编写代码的速度非常的快,而且非常注重代码的可读性,非常适合多人参与的项目.很多人选择了培训,那么北京Python培训筛选过程 ...
- 6. ZooKeeper访问控制列表
ZooKeeper的数据模型提供了ACL机制来控制访问znode. 在创建znode时,ACL将确定你可以在znode上执行的各种操作的权限. ZooKeeper ACL模型与Unix / Linux ...