Oracle(base):
1. 表空间
a) 临时表空间(查询和存放一些缓冲区数据)
i.创建临时表空间
create temporary tablespace[temp_space_name:TEMPNAME]
tempfile [filepath:'D:\oracle\oradata\Oracle10g\temp.dbf']
size [INIT_SIZE:50m]
autoextend on
next [INCREASE_SIZE:50m] maxsize [MAX_SIZE:20480m]
ii.删除临时表空间
drop tablespace [temp_space_name:TEMPNAME] including contentsand datafiles cascade constraints
iii. 查看临时表空间
select * from dba_temp_files
iv. 修改临时表空间大小
alter database tempfile
[filepath:'D:\oracle\oradata\Oracle10g\temp.dbf']
resize [SIZE:100m]
i. 创建表空间
create tablespace [space_name:SPACENAME]
logging
datafile [filepath:'D:\oracle\oradata\Oracle10g\temp.dbf']
size [INIT_SIZE:50m]
autoextend on
next [INCREASE_SIZE:50m] maxsize [MAX_SIZE:20480m]
2. 用户模式
a) 用户权限
i. 实体权限
select, update, insert, alter, index, delete, all(包括所有权限) execute(执行存储过程权限)
ii. 系统权限
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构
b) 创建用户
create user [username] identified by [password]
default tablespace [user_data]
temporary tablespace [user_temp]
c) 给用户授权
grant connect,resource,dba to[username]
3. 基本增删改查语句
a) 查询
select * from [table]
b) 新增
insert into [table] (field) values(value)
c) 修改
update [table]set [field]=[value]
d) 删除
delete from [table]
drop table [table]
e) 清除水位线
truncate table [table]
4. select语句执行顺序
a) from
首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表virtualtable1.
b) on
接下来便是应用on筛选器,on 中的逻辑表达式将应用到virtualtable1中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表virtualtable2 .
c) join
如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 virtualtable3.
d) 多表
如果 from 子句中的表数目多余两个表,那么就将virtualtable3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 virtualtable3.
e) where
应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表virtualtable4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outerjoin中还可以把移除的行再次添加回来,而where的移除的最终的。
f) group by
分组,生成虚拟表 virtualtable4
g) having
对virtualtable4应用having筛选器,生成虚拟表 virtualtable5
h) select
处理select 列表,生成虚拟表virtualtable6
i) distinct
将virtualtable6 中重复的行去掉,生成虚拟表virtualtable7
j) order by
将virtualtable7中的行按order by 子句中的列列表排序,生成一个游标cursor1
k) top
从cursor1的开始处选择指定数量或比例的行,生成虚拟表virtualtable8,并返回给调用者
5. 创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEWview_name
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINTconstraint]]
[WITH READ ONLY]
其中:
OR REPLACE :若所创建的试图已经存在,ORACLE自动重建该视图;
FORCE :不管基表是否存在ORACLE都会自动创建该视图;
NOFORCE :只有基表都存在ORACLE才会创建该视图:
alias :为视图产生的列定义的别名;
subquery :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION :
插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY :
该视图上不能进行任何DML操作。
6. 创建存储过程
create or replace procedurerunbyparmeters (isal in emp.sal%type,
sname outvarchar,sjob in out varchar)
as icount number;
begin
select count(*) intoicount from emp where sal>isal and job=sjob;
if icount=1 then
....
else
....
end if;
exception
when too_many_rows then
DBMS_OUTPUT.PUT_LINE("<span style="color:#0000F0;">返回值多余一行</span>");
when others then
DBMS_OUTPUT.PUT_LINE('<span style="color:#0000F0;">在</span><span style="color:#0000F0;">RUNBYPARMETERS</span><span style="color:#0000F0;">过程中出错</span>');
end;