51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx

上传人:b****2 文档编号:1123527 上传时间:2023-04-30 格式:DOCX 页数:29 大小:29.23KB
下载 相关 举报
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第1页
第1页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第2页
第2页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第3页
第3页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第4页
第4页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第5页
第5页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第6页
第6页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第7页
第7页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第8页
第8页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第9页
第9页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第10页
第10页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第11页
第11页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第12页
第12页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第13页
第13页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第14页
第14页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第15页
第15页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第16页
第16页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第17页
第17页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第18页
第18页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第19页
第19页 / 共29页
51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx

《51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx》由会员分享,可在线阅读,更多相关《51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx(29页珍藏版)》请在冰点文库上搜索。

51CTO下载中科院ORACLE数据库视频教程总结Word格式.docx

grantupdate(name)onmytabtolisi;

//把更新name列的权限授权给lisi(将权限限定到列)

(updatewuangwu.mytabsetname='

lihuoming'

whereid=1;

grantinsert(id) 

onmytabtolisi;

revokeselectonmytabfromlisi;

altertablemytabaddnamevarchar(10);

//修改表结构

oracle默认的是手动提交数据(commit)

ddl:

数据定义语言(创建,修改表)

dml:

数据操纵语言(插入,删除,更新等)需要提交

dcl:

数据控制语言(授权和撤销权限)

权限的传递:

把权限给A,A在传递给B

showuser;

查看当前用户

sys把alter权限给lisi:

grantalteranytabletolisi;

默认lisi不能把alter权限给wangwu

可以这样:

grantalteranytabletolisiwithadminoption;

对象权限传递:

sys创建表A,sys把查询的权限给lisi,但是lisi不能把该权限授给其他人

grantselectonAtolisiwithgrantoption;

角色:

createrolemyrole;

grantcreatesessiontomyrole;

grantcreatetabletomyrole;

createuserzhangsanidentifiedbyzhangsan;

grantmyroletozhangsan;

droprolemyrole;

有些系统权限不能够放在角色里面:

比如:

grantunlimitedtablespacetomyrole;

会出现无法将该权限放在myrole里面

只能直接将该权限给用户!

createanytable的权限:

不仅可以给自己创建表还可以给其他人创建表

不过要先给他赋予使用空间的权限

表是属于某一个用户的,角色不属于某个用户

丢失管理员密码:

比如普通用户的密码丢失了:

sys登陆,然后alteruserscottidentifiedby新密码

如果sys密码丢失:

oracle三种验证机制:

操作系统验证:

密码文件验证:

数据库验证:

普通用户

sys用户可以启动和关闭数据库,那么数据库没有启动sys就可以进入数据库里面去(但是监听和实例必须启动,否则会出现协议适配器错误),所以sys用户采用操作系统和密码文件验证

linux下oracle的启动过程

lsnrctlstart(监听程序)

sqlplussys/密码assysdba

startup启动数据库实例

windows下oracle的启动过程

lsnrctlstart

oradim-startup-sidorcl

conn/assysdba为什么不写密码也能够进入数据呢?

因为sysdba是操作系统验证,右击我的电脑,选择管理,组,双击ora_dba,在这个组里的用户都是sysdba,所以不用密码,那么你可以将改组的用户给删除了,那么conn/assysdba就不能进去了!

然后conn用户名/密码assysdba就采用密码文件验证

为了安全应该删除操作系统验证,那么只能采用密码文件验证,如果密码忘记了.......

密码文件在d:

\database\PWDorcl.ora,可以先把他删除,然后在建立:

orapwdfile=d:

\database\PWDorcl.orapassword=123456entries(允许在该文件中建立特殊用户的个数)=10

createuserabc

indentifiedbyabc

defaulttablespaceUsers(默认表空间,存放用户的数据)

TemporaryTablespaceTemp(临时表空间,比如排序,将临时数据放在这个空间里面)

Quota50Monusers(abc用户只能用50M表空间)

临时表空间上不能使用限额

限制用户:

用户加锁:

alteruser用户名accountlock

用户解锁:

alteruser用户名accountunlock

注意:

commit

用户口令失效:

alteruser用户名passwordexpire

删除用户:

dropuser用户名[cascade强制删除用户下的所有文件]

中科院oracle视频:

1.oracle体系结构:

a.实例和数据库

.数据库实例也称为服务器,是指用于访问数据库文件集的存储结构(统称为SGA)和后台进程的集合,一个数据库可以被多个实例访问,数据库的物理结构和存储结构之间的关系是由后台进程来维持的,数据库拥有多个进程.........

.数据库指的是一个数据容器,包含了表,索引,视图,过程,函数,包等对象,并对其进行统一管理,用户只有和一个确定的数据库连接,才能使用和管理该数据库中的数据,数据库的内部结构:

表空间,表,列,分区,用户,索引,视图权限,角色,段,盘区,块等;

外部结构有:

控制文件(.ctl),日志文件(联机日志文件(redo01.log,第一个写满之后,写在第二个,然后写在第三个,然后再写在第一个,默认此时第一个文件被覆盖掉),归档日志文件是在进行热备份时候选择的日志文件格式),数据文件(.dbf).....

控制文件管理和控制数据文件和日志文件,启动实例后-->

启动控制文件-->

打开数据文件

.查看控制文件:

DESCv$controlfile 

selectstatus,namefromv$controlfile

.查看数据文件:

DESCv$datafile 

selectfile#,namefromv$datafile

.查看日志文件:

DESCv$logfile 

selectmemberfromv$logfile

.参数文件(并不是数据里面的有效组成部分,数据库启动时候参数文件不直接参与工作,不过控制文件是由参数文件来寻找的):

物理结构

参数文件

控制文件 

控制文件

数据文件 

日志文件 

日志文件

b.内存结构

.当oracle的一个实例运行的时候,他分配了一个称为SGA(系统全局区)的大的内存块,实例的SGA被该实例的所有后台进程所共享,整个SGA的区里面有:

数据库高速缓存池,大共享区,共享池,日志缓存池,固定SGA。

.数据库高速缓存池:

如果每执行一个sql查询的时候,oracle都从磁盘读取数据块,并且在改变之后,又必须把每一个数据块写入磁盘,那么oracle执行效率会非常慢,而oracle的缓存区经常能够使用内存里的数据块,在那里访问数据,内存中用来频繁访问数据的区域叫数据库的高速缓存池!

数据库高速缓存池包括:

默认缓存池(),保持缓存池(对于想在内存中长期保存的,频繁访问的使用该缓存池,这个缓存池在数据库关闭之前一直保留,并不释放内存空间),再生缓存池(想尽快从内存中排除的对象我们可以使用再生缓存池,例如频繁访问的大表,除此之外还可以考虑默认缓存池)!

.共享池:

主要由库缓存区和字典缓存区构成!

用来缓存pl/sql的程序单元,sql语句的执行版本以及相关的执行计划。

共享池的规模对于数据库的性能有着非常重要的影响!

库缓存区中包括:

PL/SQL区(保留了pl/sql的过程,函数等程序单元的编译版本,以便于所有的用户能够共享)和共享SQL区(保留了sql语句的解释版本,以便再次使用的时候,不用重新解释)

c.逻辑结构

.主要由块(block),盘区(extent),段(segment),表空间(tablespace)组成!

.其中一个表空间对应一个或者多个数据文件,在物理结构时候,知道我们存储的对象信息,记录,数据都是存储在oracle的数据文件中的,但是在逻辑上,我们是将这些的表和表中的数据存储在表空间中

.一个表空间可以包含多个段

.段和物理的数据文件并不存在一一对应关系,一个段可能跨的不同的数据文件来存储

.一个段可以包含多个盘区

.一个盘区可以包含多个块

.oracle存储数据的基本单位是块,windows下默认块的大小是8k,oracle的块大小一定是操作系统的块大小的整数倍

2.sql*plus基础

.sys登陆必须以sysdba身份

.startup启动数据库实例-打开控制文件-打开数据文件,参数mount(启动数据库实例的时候,打开控制文件,不启动数据文件),nomount(启动实例,连控制文件都不打开,一般在控制文件丢失的时候使用此参数,然后ALTERDATABASEMOUNT,alterdatabasesopen)

.我们进行热备份的时候,是不允许进行非归档方式的!

我们要修改在归档模式下进行热备份,但是在数据库已经启动的情况下是不允许修改的,那么我们只能先关闭数据库,关闭之后在启动实例startupmount打开控制文件,但是不能打开数据文件,然后:

alterdatabasesarchivelog然后alterdatabasesopen

.关闭:

shutdownimmediate(迫使每个用户执行完当前的sql语句后立即断开连接)/abort(强迫关闭数据库,很可能造成文件破坏)/transactional(迫使用户在当前执行完程序后,断开连接,终止实例,恢复破坏的文件和数据文件,不能同其他的数据库文件保持一致)

.想使用oracle数据库,那么首先就得启动两个服务:

一个是启动监听程序lsnrctlstart,一个是启动实例oradim-startup-sidorcl

.sql*plus也可以在浏览器中控制,建议使用这中方式

常用的一些sql*plus命令:

保存缓存区的命令:

savec:

\oracle\test.txt

编辑缓存区的命令:

edit

执行外部文件:

@c:

查看外部文件:

getc:

列出缓存区的命令:

list

再一次执行缓存区的命令:

/

查看命令的用法:

?

命令

对部门的名称给一个标签:

coldeprnoHeading"

编号"

或者是格式化输出:

coldepartmentformatA10(显示10个字符)/999,999,999(整型的格式化) 

heading"

设置报表:

设置行宽:

setlinesize50

标题居中并且指定名称:

ttitlecenter"

我的主题"

skip1-(指的是报表空一行)

left"

测试报表"

right"

页"

-(指sql语句换一行写)

format999sql.pnoskip2(页和数字之间空2行)

关闭标题:

ttitleoff

报表的重要的命令:

break和comp

重复的记录值显示一条:

breakonpub

select*frombook

统计:

compcountlable"

计数"

ofbooks_name(字段)onpub

将数据保存起来:

spoolc:

\orcle\test.txt

select*.....

spooloff

3.sql语言基础:

.语言分类:

DDL(数据定义语言):

create,drop,alterDCL(数据控制语言):

grant,revokeDML(数据操纵语言):

selectinsertdeleteupdate

.常用的系统函数:

字符:

查看字符个数selectlength('

abcdef'

)fromdual;

截掉左边空格:

selectltrim('

截掉右边空格:

selectrtrim('

截掉空格:

selecttrim('

abcdef'

查看字节个数:

selectlengthb('

取子字符串(从第二个位置取三个bcd):

selectsubstr('

2,3)fromdual;

右取三个:

length('

abcdefg'

)-3+1,3)

时间:

查看当前时间:

selectsysdatefromdual;

selectcurrent_datefromdual;

设定当前时间的格式:

altersessionsetnls_date_format='

dd-mon-yyyyhh:

mi:

ss'

;

当前日期为准,星期三是多少号:

selectnext_day(sysdate,'

星期三'

转换类型:

日期转换为字符串24小时制:

selectto_char(sysdate,'

yyyy24-mm-ddhh:

日期转换为字符串16小时制:

yyyy-mm-ddhh:

字符串转化为日期:

selectto_date('

12-3月-04'

字符型转换为整型:

selectto_number('

99'

聚集函数:

sum:

selectsum(price)frombooks;

max:

......

min:

........

avg:

平均值

count:

count(*)表的行数count(price):

字段的行数 

其他:

查看当前登陆用户:

selectuserfromdual;

查看性别为男和女分别有多少人:

selectsum(decode('

sex'

'

男'

1,0)),sum(decode('

女'

,1,0))frome;

decode和if差不多

selecta1,nvl(a2,'

没有输入'

)a2fromaa;

nvl查看是否为空值

分组语句:

selectpub,sum(price*qty)frombooksgroupbypub;

groupby后面可以多于前面select中的字段,但是不能少!

聚集函数不能出现在where下面,只能用having

selectpub,sum(price*qty)frombooksgroupbypubhavingsum(price)>

50;

模糊查询:

select*fromaawherea1like'

a_'

'

a__'

a%'

__a'

%a'

%a%'

连接查询:

selecteid编号,ename姓名,sex性别,d.name所在部门frome,dwheree.id=d.id

内连接(完全匹配):

selecteid编号,ename姓名,sex性别,d.name所在部门fromejoindone.id=d.id

外连接(不完全匹配):

左外连接:

selecteid编号,ename姓名,sex性别,d.name所在部门frome,dwheree.id=d.id(+)

右外连接:

selecteid编号,ename姓名,sex性别,d.name所在部门frome,dwheree.id(+)=d.id

子查询:

无关子查询:

select*fromewhereidin(selectidfromd);

select*fromewhereexists(selectidfromd);

相关子查询:

select*fromewhereidin(selectidfromdwhereid=e.idandid='

03'

);

select*fromewhereexists(selectidfromdwhereid=e.id);

把符合的查询出来

select*fromewherenotexists(selectidfromdwhereid=e.id);

把不符合的查询出来

合并行数据:

selecteid,enamefromeunionselectid,namefromd;

选出都有的数据:

selectidfromeintersecselctidfromd;

每次插入多条记录:

insertintoe(eid,ename)selectid,namefromd;

把另外一个表中的数据写入e表中,类型要匹配。

复制表:

createtablettas(select*frome);

4.PL/SQL基础

pl/sql块结构如下:

declare

...(变量声明)

begin

....(代码处理)

exception

....(异常处理)

end;

变量声明:

赋予变量适当名称

赋予变量正确的数据类型

定义变量(标准,记录)

控制变量范围

变量长度范围:

1~30

例子:

Declare

xvarchar2(10);

x:

='

thisis..'

DBMS_OUTPUT.PUT_LINE('

xis'

||x);

END;

让服务器的输出打开:

setSERVEROUTPUTONSIZE10000

上面的DBMS_OUTPUT是个包

行注释:

--

块注释:

/* 

*/

赋初值:

xvarchar2(10):

abcde'

xSTRING(10):

yINTEGER:

=123;

yNUMBER:

分支语句:

if分支

.....

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2