oracle学习笔记二

1、对象管理

面向对象编程.(对所有对象的增,删,改,查)

a.数据库:database(必须在超级管理员角色下使用)
默认都是在orcl实例下的数据库:表空间(tablespace):下面包含数据段(segment),数据区(area),数据块(block)

默认的数据放在system表空间 。另外还有temp临时表空间,user用户表空间.

create tablespace 表空间名 datafile "路径/文件名" [size integer MB] autoextend.
drop tablespace 表空间名
select * from V$tablespace

b.用户:  user

c.表:    table
1).建表:
create table  表名(
字段名 字段类型 [约束类型] 默认值,
....
constraint 约束名 约束类型) ;
create table 表名 as 查询语句;
2).修改:
alter table 表名 ...
add 字段名 类型 ;
drop column 字段名;
modify 字段名 类型;
alter table 表名 add constraint fk_表名 foreign key (字段名) references 表名(字段名);--增加外键约束


表的约束:
列级约束:约束指定的列. 一般跟在字段后说明。(not null,pk,fk,ck,uq)
表级约束:对整张表起作用。主键(pk),外键(fk),受查的(check) ck,唯一的(unique)uq

把表中的主键,非空,唯一,受查 的约束放到字段说明后,外键用alter table来添加。


3).查询:
select * from tab;
select * from user_tables;
desc 表名;查看表的结构
4).删除:
drop table 表名;//删除到回收站  --show recyclebin;查看回收站中的表,---purge table XXX;删除回收站中的表
drop table 表名 purge;//彻底删除
5).表分区:
create table XXX(
。。。。
)partition by range(分区字段)(
partition 分区名 values less than (),
....
);

范围分区:range
列表分区:list
哈希分区:hash
复合分区:以上三种分区中互相结合.
insert into xxx select 字段列表 from XXX;一次插入多条记录.
具体见PPT6。

d.约束:  constraint

select * from user_constraints;
e.序列:  sequence
自增长序列。
   创建:create sequence seq_名称 [start with 1 increment by 1];
   查看:select * from user_sequences;
   删除:drop sequence seq_名称;
  
   查看当前值,激活序列对象:
   select 序列名.nextval from dual;
   select 序列名.currval from dual;


DDL(create,alter,drop,truncate),DML(insert into ,update,select ,delete),DCL(grant ,revoke),TCL(commit,rollback,savepoint)


f.索引:  index(是物理存在的,会占用存储空间, 优点是加快查询速度)
分类:  B树(普通,唯一unique),---每张表中,自动对主键,唯一约束的字段做B树索引。
位图(bitmap)           ---在表中的某个字段的值中,变化的范围不大时,可用位图索引。
函数(对索引字段用函数)---针对字段的函数操作结果来做索引.



create [unique|bitmap]index idx_索引名 on 表名(字段名);/函数名
select * from user_indexes;
drop index idx_索引名;


g.视图:  view(非物理存在,它只是一个概念(虚拟表),只有在你对视图操作时,才会从指定的表中查询相应的数据并显示)
  主要为了保护表的一些结构。并且控制用户的权限。
分类:
可更新视图: with check option(默认)
只读视图: with read only
创建:  create [or replace] view  v_视图名 as 查询语句 [with check option|with read only];
select * from user_views;
drop view v_视图名;

h.同义词:synonym(简化对指定用户下的表的操作)
分类:

私有的:只在同一模式( 用户)内使用.
公有的:可以在多个模式内使用。
create [public] synonym syn_同义词名 for 模式名.表名;
drop synonym syn_同义词名;



i.存储过程,函数,触发器: procedure,function,trigger




2.事务JDBC




1). 概念: 一组相关的操作.共同完成一个功能。

2).属性:(ACID)
a.原子性:一组相关的SQL语句是一个整体。
b.一致性:这组SQL语句只有一个结果。
c.隔离性:多个事务是不相关的操作。哪怕是同一个用户都不行。
(1) read uncommitted   --读未提交的数据
(2) read committed     --读已提交的数据(oracle默认)
(3) repeatable read    --重复读数据
(4) serializable       --序列化(串行化)(oracle),数据库的并发变得不可能了。
d.持久性:将数据存放入数据库文件中。

        3).更改隔离级别:
set transaction isolation level read committed|serializable
alter session set isolation_level=....;

3.锁(让数据并发使用)

行级锁:锁定操作行。
select .... for update [of 字段列表];
insert into ,update,delete;
表级锁:
lock table 表名 in 锁表模式 mode;

a.共享锁 share
b.排它锁 exclusive
c.行共享 row share
d.行排它 row exclusive
e.共享行排它:row share exclusive
表的解锁时:commit,rollback;

猜你喜欢

转载自cwmdream.iteye.com/blog/1857717