数据库高级(oracle)
1、sql基础
1.1 sql语言:structure query language
DDL:(data define language) create \drop\alter\truncate(截断)
ddl默认自带事务,自动提交
DML:(DATA MANAGEMENT LANGUAGE) INSERT \DELETE\UPDATE\SELECT
dml 自带事务,非主动提交;
TCL:(transaction controll language) commit\rollback\savepoint
savepoint是的对事务的控制更细;
ACID:
DCL:(data controll language) grant\revoke
1.2 drop、delete、truncate的区别与联系
drop:删除表 (表结构、记录) 写工作日志 可找回
delete:删除记录(记录) 写工作日志 可找回
truncate:截断表(删除记录) 不写工作日志 不可找回
1.3 数据类型
字符型: 数值: 日期: 大对象
char: int date blob
varchar: number(p,s) timestamp clob
long:(2G) flob
日期类型的本质:长整数
1.4 常用函数
日期类型:sysdate、date、to_date(a,b)
控制处理:nvl、nvl2
聚合函数():avg、sum、min、max、count
1.5 复杂查询
多表连接
子查询
层次查询(递归查询)
行列倒置:
记录去重:
2、常用对象(序列、视图、索引);
2.1 序列
作为一个对象存在,多表使用一序列,一个表可以拥有多列的自增长;
create sequence 序列名
start with 起始数 不可更新
minvalue 最小值
maxvalue 最大值
increment by 间隔数
cycle Yes|No 是否循环
cache 缓冲数
2.2 视图
view:虚表,存在于内存中,不占存储空间;
a、分类:
简单视图(单表视图)
*对视图的操作等同与对基表的操作,前提不违反基表的约束;
复杂视图(多表视图)
多表连接查询生成的视图,为复杂视图
*键保留表:在复杂视图中如果一个表的主键在视图中也当主键则,
该主键所在的基表为键保留表的
所有键保留表的字段在视图中可修改,非键保留表字段不可修改;
*对复杂视图实现crud需要触发器的介入;
物理视图
b、优势:
将数据库设计与使用分离;
将数据来源隐藏;
更改字段名称;
冗余对数据表的维护;
c、基表:物理表、视图
2.3 索引
index :索引占用空间
局部扫描与全局扫描
a、特点:有效索引可以提高查询性能,但会降低增删改的性能;
b、单表索引一般不超过5个;
c、主键、外键、经常查询的字段;
d、导致索引失效:not 、or、函数、伪列
e、oracle索引(B树)
标准索引、唯一索引、反向键索引、位图索引
1234 4321
1235 5321
1236 6321
1237 7321
性别:男、女、未知
字段的取值数/记录数=0-1
f、create index idex on 表(索引字段);
h、索引对使用者完全透明;
i、索引存什么》
记录标识+索引字段(主键+索引字段)
3、pl/sql基础
3.1 语义: procedure language/structure query language
3.2 基本语法;
[declare
局部变量 数据类型 ;
局部变量 数据类型 :=默认值;
局部变量 数据类型 default 默认值;
常量 constant 数据类型 default 默认值;]
begin
执行语句;
[exception]
end ;
属性类型:
表名.字段%type
表名%rowtype
3.3 逻辑处理;
if else 、if elsif
for
while
loop end loop
3.4 异常捕获;
a、预定义异常 :too_many_rows\no_data_found\others
b、自定义异常:
定义异常类型
主动抛出异常
c、oracle错误信息
3.5 不记名块;
a、在plsql中只能出现增删改操作,不能出现查询操作;(DML)
b、ddl语法只能以动态指令的形式出现;
c、tcl语法可以出现;
3.6 purge recyclebin; 清空回收站