02.oracle体系结构
1、数据库
oracle数据库是数据的物理存储,包括数据文件ORA或DBF、控制文件、联机文件、参数文件。oracle数据库概念和其他数据库不一样,这里的数据库是一个操作系统只有一个库。
2、实例
一个oracle实例(oracle instance)有一系列的后台进程(background process)和内存结构(memory structure)组成,一个数据库可以有n个实例。
3、数据文件(dbf)
数据文件是数据库物理存储单位,数据库的数据是存在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个文件,只能删除其所属于的表空间才行。
4、表空间
表空间是oracle对物理数据库上相关数据文件的逻辑映射。一个数据库在逻辑上被划分成一个到若干个表空间,每个表空间包含了在逻辑上相关的一组结构。每个数据库至少有一个表空间(system表空间)。每个表空间由同一磁盘上的一个或多个数据文件组成,一个数据文件只能属于一个表空间。
表空间下分段、段下分区、区下分数据块。
逻辑结构:数据块、表空间、段、区、数据块
物理结构:数据文件、磁盘块
5、用户
用户是在表空间下建立的,用户登录后只能看到和操作自己的表。每建立一个应用需要创建一个用户。
一个实例包含多个表空间、一个表空间下有多个用户。orale之所以性能这么强大,归功于表空间的设计。我不管理数据文件存在哪个磁盘上了,都用表空间来管理。
08.创建表空间
create tablespace space1
datafile ‘I:\app\Administrator\oradata\orcl\tablespace1.dbf’
size 100m
autoextend on
next 10m
09.创建用户并赋权
create user GB
identified by 123456
default tablespace tablespace1;
grant dba to GB;
37.什么是视图
视图是一种数据库对象,是从一个或多个数据表中导出的虚表,视图所对应的数据并不真正存储在视图中,而存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。使用视图的优点,简化数据操作、着重于特定数据、提供了简单有效的安全机制、提供后向兼容性。
create view view_name as
select * from t_student where s_sex= 0
– 修改视图数据就会改变源表额数据
update view_name set s_name = ‘萧蔷’ where s_id = ‘12’
– 只读视图
– 物化视图
50.序列
create sequence seq_test;
select seq_test.nextval from dual;
select seq_test.currval from dual;
create sequence seq_test2
start with 1
increment by 10
maxvalue 10000
minvalue 1
cycle
cache 20
62.什么是PL/SQL
Produce Language SQL,在sql命令语言中增加了过程处理语句,分支、循环等,使sql语言具有过程处理能力。
基本语法结构
declare
begin
exception
end;
66.异常(意外)
预定义异常,自定义异常
NO_DATA_FOUND TOO_MANAY_ROWS等
exception
when 异常类型 then
异常逻辑处理
67.条件判断
if 条件 then
end if;
if 条件 then
else
end if;
if 条件 then
else if 条件 then
else
end if;
68.循环
1、无条件循环
loop
end loop;
-- 循环输出1-100
declare
v_num number;
begin
v_num:=1;
loop
dbms_output.put_line(v_num);
v_num:=v_num+1;
if v_num>100 then
exit;
end if;
end loop;
end;
2、有条件循环
DECLARE
v_num number;
BEGIN
v_num:=1;
while v_num<100
loop
dbms_output.put_line(v_num);
v_num:=v_num+1;
end loop;
END;
3、for循环
DECLARE
BEGIN
for v_num in 1 .. 100
loop
dbms_output.put_line(v_num);
end loop;
END;
69.游标语法
73.存储函数
create or replace function fn_getdatestr
(offset number)
return varchar2
is
v_date varchar2(30);
begin
select TO_CHAR(sysdate+offset,'yyyymmdd') into v_name from dual;
return v_date;
end;
select fn_getdatestr(-7) from dual;
74.存储过程
存储函数中有返回值,存储过程没有返回值,可以用过传出参数返回多个值。存储函数可以在select语句中直接使用,过程多数是被应用程序所调用。存储函数一般都是封装一个查询结果,而存储过程一般都封装一段事务代码。
1、创建不带传出参数的存储过程
create or REPLACE PROCEDURE pro_add_student
(s_name VARCHAR2, --姓名
stu_no number,
sex number,
age number
)
is
begin
insert into t_student values(seq_student.nextval,s_name,stu_no,sex,age);
commit;
end;
call pro_add_student('李敏',112,1,10);
79.触发器
可用于数据确认、实施复杂的安全性检查,做审计,跟踪表上所做的数据操作等,数据逇备份和同步。前置触发器和后置触发器。
create trigger or repalce trigger trigger_name
before | after
delete or insert or update of row_name
on table_name
declare
...
begin
PLSQL
end;