Oracle总结【视图、索引、事务、用户权限、批量操作】 一

简介: 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了…那么本篇主要总结关于Oralce视图、序列、事务的一些内容…在数据库中,我们可以把各种的SQL语句分为四大类…(1)DML(数据操纵语言):select,insert,update,delete(2)DDL(数据定义语言):create table,alter table,drop table,truncate table(3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott(4)TCL(事务

批量操作

何为批量操作,就是一次性插入多条数据….在SQL中,我们查询出来的数据可看成是一张表,那么我们在插入数据的时候,可以根据查询出来的数据进行插入…这就可以看成是批量操作…

值得注意的是,如果没有指定插入哪些字段的话,那么查询出来的全部字段均会插入表中..

将xxx_emp表中所有20号部门的员工,复制到emp表中,批量插入,insert into 表名 select ...语法
insert into emp
select * 
from xxx_emp
where deptno=20;



删除操作对比

我们的删除语法有三种:

  • delete from
  • truncate from
  • drop from

我们来对比一下他们的区别:

drop table

  • 1)属于DDL
  • 2)不可回滚
  • 3)不可带where
  • 4)表内容和结构删除
  • 5)删除速度快

truncate table

  • 1)属于DDL
  • 2)不可回滚
  • 3)不可带where
  • 4)表内容删除
  • 5)删除速度快

delete from

  • 1)属于DML
  • 2)可回滚
  • 3)可带where
  • 4)表结构在,表内容要看where执行的情况
  • 5)删除速度慢,需要逐行删除



事务

事务其实我们在JDBC章节中已经讲解过了,详情可查看我JDBC的博文。

再次明确一下:事务就是让一个不可分割的子操作形成一个整体,该整体要么全部执行成功,要么全部执行失败

我们值得注意的是Oracle中的事务与Mysql中的事务操作是有些不同的:

Oracle的事务开始:

  • 第一条DML操作做为事务开始【并不需要手动开启事务】

Oracle的提交事务

  • (1)显示提交:commit    
  • (2)隐藏提交:DDL/DCL/exit(sqlplus工具)【注意】

Oracle的回滚事务

  • (1)显示回滚:rollback
  • (2)隐藏回滚:关闭窗口(sqlplus工具),死机,掉电

因为Oracle有实例池这个概念,所以Oracle支持回滚

1.jpg


Oracle默认支持的隔离级别是:read commited

Mysql默认支持的隔离级别是:reapatable read

Oracle中设置事务隔离级别为serializable
set transaction isolation level serializable;




访问其他用户的对象

在上一篇博文已经说了,Oracle将表/用户都看成是对象…那么我们怎么在scott用户下访问hr用户下的表呢???

其实,我们只要在访问表的时候,指定具体的用户.数据库表就行了,但是呢,还要看看该用户有没有权限查询别的用户的数据表,于是就需要赋予权限了

声明:scott或hr叫用户名/方案名/空间名
      scott--tiger
      hr-----lion
查询当前用户是谁
show user;
查询scott自己表空间下的所有对象时,可加,或不加用户名select * from emp;
select * from emp;
select * from scott.emp;
以sysdba身份解锁hr普通帐户
alter user hr account unlock;
以sysdba身份设置hr普通帐户的密码
alter user hr identified by lion;
当scott查询hr表空间下的所有表时,必须得加用户名
select * from hr.jobs;
在默认情况下,每个用户只能查询自已空间下的对象的权限,不能查询其它用户空间下的对象
以sysdba身份角色,授予scott用户查询所有用户空间下的对象权限
grant select any table to scott;
以sysdba身份,撤销scott用户查询所有用户空间下的对象权限
revoke select any table from scott;
scott自已查看自己所拥有的权限
select * from user_sys_privs;
从scott用户空间导航到sysdba用户空间
conn / as sysdba;
从sysdba用户空间导航到scott用户空间
conn scott/tiger;
从scott用户空间导航到hr用户空间
conn hr/lion;
查询hr用户空间中的所有对象
select * from tab;
从hr用户空间导航到scott用户空间
conn scott/tiger;
在scott用户空间下,查询hr用户空间下的jobs表,必须加上hr用户空间名
select * from hr.jobs;



视图

视图是一种基于数据表的一种虚表

  • (1)视图是一种虚表
  • (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
  • (3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELECT 语句
  • (4)视图向用户提供基表数据的另一种表现形式
  • (5)视图没有存储真正的数据,真正的数据还是存储在基表中
  • (6)程序员虽然操作的是视图,但最终视图还会转成操作基表
  • (7)一个基表可以有0个或多个视图


目录
相关文章
|
3月前
|
SQL Oracle 关系型数据库
Oracle-index索引解读
Oracle-index索引解读
74 0
|
6月前
|
存储 Oracle 关系型数据库
9-3 Oracle数据字典和动态性能视图介绍
9-3 Oracle数据字典和动态性能视图介绍
|
1月前
|
存储 SQL Oracle
Oracle系列十二:视图、记录、同义词、序列
Oracle系列十二:视图、记录、同义词、序列
|
5月前
|
索引
Oracle-序列、索引和同义词
Oracle-序列、索引和同义词
26 0
|
2月前
|
SQL Oracle 关系型数据库
[Oracle]索引
[Oracle]索引
65 0
[Oracle]索引
|
3月前
|
SQL Oracle 关系型数据库
Oracle-动态性能视图解读
Oracle-动态性能视图解读
86 0
|
5月前
|
存储 SQL Oracle
Oracle优化避免索引失效
Oracle优化避免索引失效
178 0
|
6月前
|
存储 Oracle 关系型数据库
9-6 Oracle 管理索引
9-6 Oracle 管理索引
|
7月前
|
Oracle 关系型数据库
oracle基础|什么是事务控制|事务的ACID原则|什么是不可重复读、幻影读、脏读
oracle基础|什么是事务控制|事务的ACID原则|什么是不可重复读、幻影读、脏读
|
SQL 存储 监控
oracle 常用视图 简短说明
v$system_event :本视图概括了实例各项事件的等待信息。v$session_wait显示了系统的当前等待项,                v$system_event则提供了自实例启动后各个等待事件的概括。
870 0