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是一个用 ...
随机推荐
- javascript 之执行环境-08
概念 执行环境(Execution context,简称EC)或执行上下文对象(后面统一用执行上下文表示),它定义了变量或者函数有权访问的其他数据,决定了他们各自的行为.是不是有点不好理解,那我先简单 ...
- Remove Untagged Images From Docker
I've been playing around a lot with docker. It's awesome, and it creates a whole new world of possib ...
- transition过度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL2012导出的脚本没有if exists判断
SQL2012导出的脚本没有if exists判断 以前用SQL2000的时候,导出存储过程,表各种object的时候,前面会自动加if exists的一段脚本,这样的脚本很方便的可以重复执行.现在使 ...
- word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览
其实这是我好几年前的项目,现在再用这种方式我也不建议了,毕竟未来flash慢慢会淘汰,此方式也是因为目测大部分人都装了flash,才这么做的,但是页面展示效果也不好.其实还是考虑收费的控件,毕竟收费的 ...
- javascript获取链接参数
var url = "http://test.cn/index.php?class=9&id=2&key=88"; function parseQueryStrin ...
- linux操作系统基础篇(九)
shell脚本的运算符与流程控制 1.运算符 1.1 算术运算符 + - * / % [root@MiWiFi-R3-srv ~]# echo $[3+1]4 1.2 关系操作 与(())连用 < ...
- SpringAware
哈哈,终于把分布式的课程演讲给混过去了,下面开始随便自己学点东西. 正题:SpringAware--------在实际项目中,用到spring容器的本省功能资源,这是Bean必须意识到Spring容器 ...
- HTML5浏览器端图片预览&生成Base64
本文主要介绍如何通过拖拽方式在浏览器端实现图片预览,并生成图片的Base64编码. 工具链接:图片转Base64. 首先介绍一下FileReader, FileReader对象允许浏览器使用File或 ...
- Fedora 23建立wifi热点(Android手机可用)
在ubuntu14.04下使用ap-hotspot,速度还不错.但是在15.04下就用不了了,不知为啥.现在使用fedora23,在学校还是挺需要给手机连wifi的,于是google看看ap-hots ...