事务

事务是最小的工作单元,是对数据库的若干操作,增删查改(要不就都成功,要不就都失败)

在oracle数据库中,事务是默认打开的,其他数据库都需要一条语句来打开事务,默认关闭的

事务的特征

原子性、一致性、隔离性、永久性

比如如果发生了错误(异常)

rollback; --回滚

在哪里执行就在哪里提交

在oracle里面一次连接(会话)就是一个事务

select * from student;

savepoint p1; --标记一个位置(事务保存点)

insert into student value();

savepoint p2; --标记一个位置(事务保存点)

insert into student value();

savepoint p3; --标记一个位置(事务保存点)

insert into student value();

savepoint p4; --标记一个位置(事务保存点)

insert into student value();

rollback to p1; --回退到指定位置

commit; --一旦执行commit之后,数据就是永久的了

数据库都有一个锁机制,当一个事务在修改某一条数据的时候,数据库会将被修改的那条数据锁住,不让其它事务修改

delete from student where sid='';

select * from student for update;

删除的时候可以锁,查询的时候也可以锁

序列 一个自动增长的对象

create sequence 序列名称;

create sequence sq1;

序列的使用

select sq1.nextval from dual; --每用1次就增加1

insert intd student values(sq1.nextval,'java',3);

increment by 1 --每次加几个

start with 1 --从1开始计数

nomaxvalue --不设置最大值

nocycle --一直累加,不循环

cache 10 --内存缓冲

查询当前序列sq1.currval

select sq1.currval from dual;

查询下一个序列sq1.nextval

select sq1.nextval from dual;

同义词

create synonym emp11 for emp; --给emp表取别名emp11

select * from emp11;

create synonym sq11 for sq1; --给序列sq1取别名sq11

select sq11.nextval from dual;

作用:一个表可以有多个别名;不想把真名告诉其它用户,删除别名,就查不了

drop synonym 别名; --删除别名

视图★

视图是一张虚拟表,数据来自于真实表,修改视图会影响真实表

作用:保护一些需要权限的字段不被其它用户看到;简化查询操作

建立视图

create view 视图名称 as 查询语句

create view v1 as select ename,sal from emp;

比如不想让行政部的人看到工资,但又想他管理员工(把视图的权限赋予给行政部就看不到工资了)

create view xz_emp as select empno,ename,job,hiredate,deptno from emp;

select * from xz_emp;

简化

--保存查询语句

create view student2 as

select sname,sid,cname from student s inner join myclass m on s.cid=m.cid

select * from student2

删除视图

drop view 视图名称;

索引(目录)

优化查询,提高sql语句执行性能(数据查询时,速度会提高一些)

简化磁盘读写

在逻辑上和物理上都独立于表的数据

索引只能建在列上面,每列只能建一个索引

系统会给主键建一个索引,不能手动给主键建立索引

如果每列都建一个索引,会提高查询效率,会降低增删改效率

一般是作为条件的列,比如:where后面的列 order by后面的列等

给ename列创建一个索引

create index inx_ename on emp(ename);

不需要手动调用,系统会自动使用

删除索引

drop index inx_ename;

唯一索引(确保定义索引的列中没有重复值)

create unique index 索引名 on 表名(字段名);

组合索引

create index 索引名 on 表名(字段1,字段2,...);

反向键索引(用于模糊查询的列)

create index 索引名 on 表名(字段名) reverse;

比如很长的字符串 需要模糊查询

select text from 表 where text like %张三%; --模糊查询效率比较低 少用

位图索引

适合创建在低基数列上(取值较少,重复值较多)

关于oracle数据库(11)的更多相关文章

  1. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  2. AppFuse3.5对接oracle数据库

    AppFuse是一个使用Java语言开发web应用系统的集成框架.java开发人员最头痛的事情就是面对大量的框架不知该如何选择.这些框架性能如何,兼容性如何等等都需要筛选比较.Appfuse作者Mat ...

  3. P6 EPPM手动安装指南(Oracle数据库)(一)

    P6 EPPM手动安装指南(Oracle数据库) P6 EPPM Manual Installation Guide (Oracle Database) 1.      内容... 1 1.1.    ...

  4. Oracle数据库的版本变迁功能对比

    Oracle数据库自发布至今,也经历了一个从不稳定到稳定,从功能简单至强大的过程.从第二版开始,Oracle的每一次版本变迁,都具有里程碑意义. 1979年的夏季,RSI(Oracle公司的前身,Re ...

  5. oracle数据库常用SQL语句(11.29更新)

    笔者日常工作中常用到的sql语句,现总结如下,留作日后查看. 1.按照两列中的最大值取 ,只取两列其中的一列 SELECT * FROM t_doc T ORDER BY GREATEST(T.Loa ...

  6. 探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1)

    探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言:       Oracle 12c公布距今已经一年有余了,其最大亮点是一个能够插拔的数据库(PD ...

  7. Oracle安装11.2.0.4.180116补丁及如何检查数据库安装补丁

    最近做了一个安装11.2.0.4.180116补丁的实验,突然想起之前和同事讨论的一个问题:如何检查数据库安装补丁的版本,之前搜到的是去查dba_registry_history,有的说在操作系统中执 ...

  8. Oracle 数据库 Database Express Edition 11g Release 2 (11.2) 错误解决集锦(安装方面)

    前言:第一次接触数据库,想下载个oracle试玩下(虽然听说一般大企业才用),到 官网下载 了个简易版 XE 版本,安装时要注意记住自己输入的数据库密码(口令)  还有安装路径不能含有空格(Do no ...

  9. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

随机推荐

  1. SVN中Branch的创建于合并

    SVN中Branch的创建于合并 在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本.但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的.比如在持续开发新功能的同时,需要发布一 ...

  2. html5 人物行走

    键盘方向键控制人物上下左右行走 演示地址 点击打开链接 MYCode <html> <head> <meta charset=utf-8> <title> ...

  3. Mac下chrome的webapp hostadmin 快速切换host

    首先是安装 app ,https://chrome.google.com/webstore/detail/hostadmin-app/mfoaclfeiefiehgaojbmncmefhdnikeg ...

  4. oracle中backup模式

    在数据库打开的情况下备份(归档模式),把表空间或者数据库置于backup 模式下, 如: SQL> alter database  begin  backup; Database altered ...

  5. Android开发中与服务器交互时,遇到java.io.IOException: Target host must not be null的问题

    当我遇到这个问题的时候,也在网上查找好半天.找到了一个和这个问题很类似的问题——java.lang.IllegalStateException: Target host must not be nul ...

  6. jQuery Mobile (整合版)

    jQuery Mobile (整合版) 前言 为了方便大家看的方便,我这里将这几天的东西整合一下发出. 里面的例子请使用手机浏览器查看. 什么是jQuery Mobile? jquery mobile ...

  7. [学习笔记] TensorFlow 入门之基本使用

    整体介绍 使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使 ...

  8. 调用一个Activity并返回结果

    一:在main.xml文件中设置布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  9. ASP.NET发送电子邮件源码示例

    using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Mail; try { ...

  10. Linux历史上线程的3种实现模型

    一.概述                                                   这里以Linux为例.Linux历史上,最开始使用的线程是LinuxThreads,但Li ...