oracle数据库的字节,Oracle数据库期末总结

Sql分为

DDL:(Data Definition Language) 修改数据库对象,create,alter,drop,grant,revoke..

DML:(Data Manipulation Language)数据操纵,insert,update,delete

DQL:(Data Query Language)数据检索,select

事务控制:commit,rollback,savepoint

SID(Oracle服务标识符):orcl

重要的服务:OracleserviceORCL(必开服务)/OracleOraDb11g_home1TNSListener(监听)

网络配置:服务器端监听:listener.ora 客户端本地网络配置tnsnames.ora

登录sqlplus /切换conn

文件命令:save(保存缓冲)/spool(保存屏幕内容)

环境变量:linesize,pagesize,show linesize;set linesize 300 pagesize 15;

显示表结构:desc

Oracle体系结构:

图1

3c9fbd0904b2743a9fd758a70e3ba2c4.png

物理结构:数据文件,重做日志文件,控制文件

逻辑结构:表空间>段>区>数据块

数据块->Oracle最小逻辑存储单元,数据库执行输入输出的最小单位,有一个或多个操作系统块组成,块默认8k

区->Oracle存储空间分配的最小单位,默认64k

表空间与数据文件之间的关系:

图二

71c3634606df2268b7481a047d0d8a76.png

内存结构(SGA ,PGA)

SGA 高速缓存区工作过程 图三

14d88ad12993ffefb1b419b6f4412e4e.png

重做日志缓冲区:循环使用

共享池:库缓存和数据字典缓存区

Oracle后台进程

(用户进程,服务器进程,后台进程)

后台进程:DBWR(数据写),LGWR(日志写),CKPT,SMON,PMON,ARCH(日志归档)

数据字典

存于system表空间,属于sys模式

静态数据字典表和视图(dba_tables,dba_data_files,user_tables)

动态(v$datafile,v$database,v$instance)

表空间概念:

数据库可划分为若干逻辑存储单元称为表空间

每个数据库必有SYSTEM(系统表空间) && SYSAUX(辅助表空间)

表空间(大题)(tablespace)

创建

Create tablespace T_NAME Datafile 'location\F_NAME.dbf' size ?M

Extent Management Local Uniform size ?M //区定制分配

Segment Space Management Manual; //段手动

修改

添加数据文件:

Alter tablespace T_NAME Add Datafile 'F_NAME' size ?M;

自动拓展:

Alter Database Datafile 'F_NAME' Autoextend On Next ?M Maxsize Unlimited;

修改数据文件大小:

Alter Database Datafile 'F_NAME' Resize ?M;

删除,查询

drop tablespace T_NAME including contents and datafiles;

v$tablespace,dba_tablespaces

数据文件(大题)(.dbf)

改变数据文件名称和内容(4步)

修改表空间可用性(脱机):Alter tablespace T_NAME Offline;

操作系统修改文件名称或位置:host copy

重命名:

Alter tablespace T_NAME Rename Datafile 'F_NAME1' to 'F_NAME2';

表空间联机 Alter tablespace T_NAME online;

查询数据文件:v$datafile,dba_data_files

数据文件可用性:alter database datafile 'F_NAME' offline|online

控制文件,记录和维护数据库的物理结构 ()

多路复用控制文件(4)

逻辑上增加控制文件alter system set control_files=.. scope=spfile

shutdwon immediate

host copy

startup

Oracle数据库启动(startup)步骤:

shutdown

nomount:读初始化参数文件(init.ora),启动实例(instance)SGA和后台进程启动

mount:打开控制文件,可执行日志归档,数据文件联机脱机,数据库介质恢复

open:所有文件打开

重做日志文件(选择)(redo.log)

默认三组,至少需2组,每组至少一个文件,组内文件不同盘,大小一致

查询:v$log,v$logfile

重做日志文件切换 alter system switch logfile

创建重做日志组

alter database add logfile group 4 ('redo1.log','redo2.log') size 10m;

创建重做日志文件

alter database add logfile member 'redo.log' to group 4;

归档文件(选择)

archivelog/noarchivelog(非归档状态)

模式(schema)

概念:是指一系列逻辑数据结构或对象的集合,在创建用户时会生成一个同名模式。

在数据库中一个对象的完整名称为schema.object

创建表(table)

create table table_name( rowname type key )

约束(constraint)

primary key(主键约束),check(检查约束),unique(唯一性约束),null/not null(空约束)

primarykey,unique区别?

primary key:

定义主键,起惟一标识作用,其值不能为NULL,也不能重复;

一个表只能定义一个主键约束

unique:

定义为惟一性约束的某一列或多个列的组合的取值必须惟一;

如果某一列或多个列仅定义惟一性约束,而没有定义非空约束,则该约束列可以包含多个空值;

相同点:

建立同时在该列上建立一个唯一性索引

可以是列级也可以是表级约束

※不同点:

在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;

对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。

不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。

修改表 alter

alter table sub_emp2 add(phone varchar2(10))

alter table sub_emp2 add(hiredate date default sysdate not null)

alter table player add constraint p_ck1 check(sage between 20 and 30)

索引(选择)(index)

索引作用:加快行的检索,减慢更新

平衡树索引和位图索引

平衡树索引(B-Tree):高基数,重复率低

位图索引:适合索引值取值范围小,重复率高,如性别。

创建索引:create index emp_name_index on emp(ename);

视图

虚表,来自一个或多个基表

创建:create view emp_base_info_view (empno ... ) as select empno from emp;

序列(概念):产生唯一序号的数据库对象,生成不重复连续整数

分区表(大题)

范围分区

Create Table student_range(

sno number primary key

score number )

Partition by Range(score)

( Partition p1 values less than(60) tablespace tbs1

partition p2 values less than(80) tablespace tbs2

partition p3 values less than(MAXVALUE) tablespace tbs3

);

列表分区

Create table student_list(

sno number primary key

sex char(2) check(sex in('M','F')))

Partition by List(sex)

( Partition stu_male values('M') tablespace tbs1

Partition stu_female values('F') tablespace tbs2

);

散列(了解一哈)by Hash(sno) (partition p1 tablespace tbs1)

DML 增删改

insert

update

delete

事务处理:commit,rollback,savepoint

数据查询(基本查询,分组查询,多表查询,无关子查询)

基本查询:

空值判断:select * from s where sno is (not) null

模糊查询:where ename like '%s%' //含s

排序:order by

统计:select count(*) from s group by sno;

分组查询:group by having

多表查询:select from table1 a,table2 b where a.sno = b.sno;

子查询(无关子查询):select from where sno in (select sno from where)

pl/sql语句(两道)

执行部分必需,声明与异常可选

select ..into..(只能查一条记录!)

控制结构:循环选择(小题)

if

if condition1 then statement1

elsif condition2 then statement2

else statement3

end if;

case

case

when condition1 then state1

else state2

end case;

Loop

Loop

statement

EXIT when condition --Exit

end loop;

While

while condition loop

statement

end loop;

For

for i in [reverse] 1..10 loop

statement

end loop;

游标(定义,打开,检索,关闭)(必考)

定义:cursor c_emp IS select empno,sal from emp;

打开:open c_emp;

检索:

loop

fetch c_emp into v_emp; -- v_emp c_emp%ROWTYPE

exit when c_emp%NOTFOUND

do sth.

end loop;

关闭:close c_emp;

显示游标的属性(%isopen,%fount,%notfount,%rowcount)

exit when c_emp%notfound

异常 exception

451b1cacb71c611bb32265b6fa4a80ef.png

raise user_define_exception

存储过程(Procedure),函数(Function),触发器(Trigger)(2题) (定义)

DML触发器(!!)

Create or replace Trigger trigger_name [before|After]

trigger_event[insert|update|delete] or trigger_event

on table_name

[for each row]

Begin --Trigger body

if to_char(sysdate,'DY','NLS_DATE_LANGUAGE=AMERIVAN')

in ('SAT','SUN') then

Raise application_error(-20001,'error');

END if;

END trigger_name;

CREATE OR REPLACE TRIGGER trg_emp_update_row

BEFORE UPDATE OF sal

ON emp

FOR EACH ROW -- get your attention here

WHEN(new.sal<=old.sal)

BEGIN

RAISE_APPLICATION_ERROR(-20001,'The salary is lower! ');

END trg_emp_update_row;

/* old.field 修改前, new.field 修改后*/

语句级触发器

安全过程

用户管理

创建 :Create User user_name identified by user_passwd account lock;

修改:Alter User user_name identified by new_passwd account unlock;

权限管理

系统权限 grant creat session,create table to user_name;

对象权限 grant update,select on scott.emp to user_name;

回收权限 revoke create table from user_name;

概要文件管理

创建

create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

create profile password_1 limit password_life_time 10 password_grace_time 2 password_reuse_time 10;

分配

Alter user user_name profile lock_acount;

Create User user_name identified by password profile password_1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值