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是一个用 ...
随机推荐
- 基于Nginx+redis的Asp.net站点搭建
剧情介绍 在传统的信息系统(比如小规模的ERP\MES系统),往往只是进行简单的应用服务器和数据库服务器的分布式部署,以此来提高应用系统的负载能力,而伴随着访问的增大,应用服务器层面除了做硬件和网络的 ...
- Lua 5.3 迭代器的简单示例
Lua 5.3 迭代器的简单示例 创建"closure"模式的"iterator" function allowrds() local line = io.re ...
- hdu1285 确定比赛名次(拓扑排序)
有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道 ...
- SpringAop源码情操陶冶-AspectJAwareAdvisorAutoProxyCreator
本文将对SpringAop中如何为AspectJ切面类创建自动代理的过程作下简单的分析,阅读本文前需要对AOP的Spring相关解析有所了解,具体可见Spring源码情操陶冶-AOP之ConfigBe ...
- git使用教程之git分支
1 分支简介 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流. 你将经历如下步骤: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 正在此 ...
- PHP读取数据库表显示到前台
<?php$username=$_GET['uid']; //获取一个值作为查询条件 $result=$db->query("select * from trip where a ...
- TOMCAT启动到一半停止如何解决
当你的项目过大的时候,往往会导致你的TOMCAT启动时间过长,启动失败,遇到该情况可以试一下下面两招: TOmcat启动到一半的时候停止了,以下原因: 1. tomcat启动时间超过了设置时间: 解 ...
- 通过正则表达式提取excel特定列中含有关键字的所有行数据
在 Excel 中打开需要提取数据excel文件,使用 Alt+F11 快捷键打开 VBA 项目窗口,在左侧的工作表名称上点右键,选择查看代码,即可出现右侧的编辑代码窗口(如下图) 在代码窗口中输入以 ...
- sql 1.1 1.1.1 1.10.1 排序
解决思路:计算每位的权重,得到序号完整的权重值,使用权重值进行排序! 创建sql 函数如下: ALTER FUNCTION [dbo].[SequenceToOrderNum] ( @Sequence ...
- iOS开发针对对Masonry下的FPS优化讨论
今天博客的内容就系统的讨论一下Masonry对FSP的影响,以及如何更好的使用Masonry.如果你对iOS开发足够熟悉的话,那么对Masonry框架应该不陌生.简单的说,Masonry的诞生让Aut ...