第一章 Oracle入门
*1.Oracle的物理结构
1.1 内存(SGA,PGA)
1.2 进程(用户进程,服务器进程,后台进程)
2.Oracle的逻辑结构
2.1 表空间-->段-->区-->数据块
*3.表空间创建与管理
3.1 表空间的创建
语法:
create tablespace 表空间的名称
datafile 表空间物理的路径
size 文件的初始化大小
autoextend on|off;
3.2 管理表空间
----修改表空间文件的大小
alter database
datafile 表空间的文件路径
resize 大小;
----设置表空间文件的自动扩展
alter database
datafile 文件的路径
autoextend on next 5m maxsize 100m
----修改表空间的名称
alter tablespace 表空间名称
rename 表空间新名称
*4.用户与权限
4.1 新创建用户
语法:
create user 用户名
identified by 密码
default tablespace 表空间
4.2 管理用户
---修改用户密码
alter user 用户名
identified by 新密码
---锁定用户
alter user 用户 account lock;
alter user 用户 account unlock;
4.3 权限
grant 角色 to 用户
revoke 角色 from 用户
第二章 SQL查询与函数
*1.数据类型
1.1 数字型---NUMBER(<P>,<s>)
1.2 字符类型-
char varchar varchar2 nchar nvarchar2
1.3 日期类型
date
1.4 Null类型
注意:null+数字=null
1.5 特殊类型
rowid
2.SQL符号
---注意 == %
3.操作语言
数据库定义语言 DDL create drop alter
数据操作语言 DML insert update delete select
数据控制语言: DCL grant revoke
事务控制语言:TCL commit rollback savepoint
4.集合运算
并集 union [all] 交集 intersect 剪集minus
5.伪表 和 伪列
dual rowid rownum
*5.函数
6.1 字符函数 to_char
6.2 日期函数 to_date
6.3 算术函数 mod
6.4 排序函数 row_number() over() rank() dense_rank()
第三章 分区表与锁
*1.分区表的分类:范围分区 列表分区 散列分区 复合分区
2.分区表的使用
2.1 范围分区
语法:
create table table_name
(
......
)
partition by range(列名)
(
partition p1 values less than(1001),
partition p2 values less than(2001),
partition p3 values less than (maxvalue)
)
2.2 列表分区
create table table_name
(
.......
)
partition by list(列名)
(
partition p1 values ('wuhan','shanghai') tablespace 表标间名称,
partition p2 values (default)
)
2.3 散列分区
create table table_name
(
.....
)
partition by hash(列名)
partitions 4;
或者
create table table_name
(
.....
)
partition by hash(列名)
(
partition p1,
partition p2
)
3.锁
锁定数据
第四章 数据对象
1.数据对象:同义词 序列 试图 索引
*2.同义词管理
2.1 创建同义词
语法:
私有同义词:
create synonym s_name for 对象
注意:创建同义词的用户一定有使用对象的权限
公有同义词:
create public synonym s_name for 对象
删除同义词:
drop synonym s_name
*3.序列管理
3.1 创建序列
语法:
create sequence s_name
[start with ]
[increment by ]
[minvalue]
[maxvlaue]
[nocycle|cycle]
[cache 10|nocache]
*4.试图管理
4.1 试图创建
create [or replace] view v_name
as
查询语句
4.2 通过试图操作数据
键保留表:在创建试图中依然是主键 的表
注意:利用试图操作不能操作非键保留表的字段
5.索引
第五章 PL/SQL
1.SQL的数据类型在PL/SQL全部支持,在PL/SQL 支持DML TCL 但不支持DDL
*2.PL/SQL 特殊类型 %type %rowtype
*3.PL/SQL 结构
语法:
declare
begin
excpetion
end;
*4.控制
4.1 条件控制
语法:
if then
end if;
if then
条件为 真的执行语句
else
条件为假执行语句
end if;
if then
elsif then
else
end if;
case:
case 表达式
when 常量 then
......
else
........
end case;
case
when 条件表达式 then 执行语句
else
end case;
4.2 循环控制
语法:
loop
exit when 循环退出条件
。。。。。
end loop;
for 变量(不需要声明) in 起始值 ..结束值
loop
end loop;
while 条件表达式
loop
end loop;
4.3 goto控制
*5. 动态SQL
执行动态SQL
execute immediate SQL字符串
带参数
execute immediate SQL字符串 using 参数
6.异常
6.1 异常分类:内部异常 和 自定义异常
内部异常:预定义异常(编号和名称) 和 非预定义异常(只有编号没有名称)
6.2 使用异常:
declare
begin
exception
when 异常名称 then
处理异常语句
end ;
declare
---把没有编号异常跟自定义名称关联起来
myerror exception;
pragma exception_init(myerror,-1);
begin
exception
when myerror then
处理异常
end;
raise_appliction_error(-20001,'异常说明');
第六章 游标
1.理解游标原理:每一次处理一行数据
2.游标分类:静态游标(隐式游标 显示游标) 引用游标(弱类型游标 强类型游标)
显示游标:普通游标 带参数游标 循环游标
游标功能:可以利用游标操作数据
游标4个属性:isopen found notfound rowcount
使用游标4个步骤:定义游标 打开游标 读取数据 关闭游标
3.隐式游标--当执行DML语句
SQL%属性
*4.游标使用
4.1 普通游标
语法:
declare
cursor 游标名称 is 查询语句
begin
open 游标名称
fetch 游标 into 变量(列与在定义游标查询语句的列一定对应)
循环读取....
close 游标名称
end;
4.2 带参数游标
语法:
declare
cursor 游标名称(参数) is 查询语句;
begin
open 游标名称(实参)
.......
end;
4.3 循环游标
语法:
declare
.....
begin
for 变量(不需要声明) in 游标名称
loop
end loop;
end;
4.4 利用游标操作数据
语法:
declare
cursor 游标 is 查询语句 for update;
begin
....
操作语句 where current of 游标
end;
4.5 弱类型引用游标
引用游标的使用必须先定义游标类型
语法:
declare
--先定义游标类型
type 游标类型名称 is ref cursor;
--定义游标
begin
--打开游标
open 游标名称 for 查询语句
.....
end;
4.6 强类型引用游标
引用游标的使用必须先定义游标类型
语法:
declare
--先定义游标类型
type 游标类型名称 is ref cursor return 游标类型(确定游标操作列);
--定义游标
begin
--打开游标
open 游标名称 for 查询语句
.....
end;
第七章 子程序和程序包
*1.子程序包括:存储过程 和 函数
*2.存储过程管理
2.1 创建过程
语法:
create [or replace] procedure p_name(参数 in out inout)
is|as
[本地变量声明]
begin
过程执行语句
end [p_name]
2.2 删除过程
drop procedure p_name
2.3 调用
call ---如果有带输出的参数时候,不能使用
execute --只有在命令窗口中使用
pl/sql块
*3.函数管理
3.1 创建函数
语法:
create [or replace] function f_name(参数 in) return 类型
is|as
[本第变量声明]
begin
函数执行语句
end;
3.2 调用
通过select 语句调用
PL/SQL块---必须定义接受函数返回值变量
3.3 函数与过程区别
如果处理业务一般使用过程,如果处理简单数据使用函数
过程是没有返回值,但函数一定有返回值
过程参数有in out inout 但函数只有in
调用方式
4.程序包
4.1 程序包:包说明部分(包头)和包体
4.2 包头创建
语法:
create [or replace] package pkg_name
is|as
--没有begin关键字
变量(公有变量:包体中所有过程与函数都访问变量)或者函数或是过程声明部分
end;
4 .3 包体创建
语法:
create[or replace] package body pkg_name(包头与包体的名称一定对应)
is|as
函数与过程具体实现(一定实现所有在包头声明)
end;
包重载:根据参数个数 参数的类型 参数次序
第八章 触发器与内置子程序
*1.触发器分类:数据库触发器 DML触发器 模式触发器
DML触发器:行级触发器(:new :old) 和 语句级触发器
*2.DML触发器管理
2.1 DML触发器创建
语法:
create [or replace] trigger tri_name
is|as
before|after|instead of
insert [or] update [or] delete
on table or view
[for each row]
[when]
[declare]
定义本地变量
begin
end;
注意:
触发器中不能使用commit rollback 事务控制语句(TCL)
instead of触发器 只能引用在试图上
3 内置子程序
dbms_out
第九章 数据维护
1.导入或导出数据
2.语法:
2.1 数据库(在DOS命令窗口中使用)
--导出exp 管理员/密码@sid file=文件导出路径 full=y
---导入imp 管理员/密码@sid file=导入文件路径 full=y
2.2 根据用户或者模式
--导出: exp 管理员/密码@sid file=文件导出路径 owner=(用户,用户2..)
---导入:imp 管理员/密码@sid file=导入文件路径 fromuser=被导入用户 touser=导入到那个用户
2.3 根据表
exp 用户/密码@sid file=文件导出路径 tables=(table_name,...)
imp 用户/密码@sid file=导入文件路径 tables=(table_name....)