4曾经Oracle课堂笔记.docx
《4曾经Oracle课堂笔记.docx》由会员分享,可在线阅读,更多相关《4曾经Oracle课堂笔记.docx(39页珍藏版)》请在冰点文库上搜索。
4曾经Oracle课堂笔记
第一章Oracle(甲骨文)
数据库分类:
1>DDL:
数据定义语言
2>DML:
数据操作语言
3>DCL:
数据控制语言
4>事务控制
8i/9i:
internet
10g:
grid(网格):
特点:
由表与表组成
C/S:
客户端与服务器端—>胖客户端(程序安装完以后使用)
B/S:
浏览器—>瘦客户端(不用安装可以浏览使用)
x
1,以dba身份登陆(sqlplus"/assysdba"),
2,创建表空间(creattablespace)
3,创建用户(creatuser)
4,给用户授权(grant)
数据库:
Access:
多面数据库(小型)50m
sqlserver:
中型数据库--》微软
mysql:
开源版数据库(10g)(小型)
db2:
(IBM公司)超大型数据库,存储量大,操作安全,面向企业
Oracle:
适于中大型,大型公司
vF:
小型数据库
数据库鼻祖:
拉里.艾利森
Administrator:
用户
assistant:
助手
documentation:
文件
manager:
管理
console:
控制台
application:
应用程序
SQLplus:
编程工具
p-procedrual的缩写
系统用户:
1:
sys(sysdba:
包括sysoper的所有权限和创建数据库的权限
sysoper:
不能创建数据库)
2:
system(normal:
普通用户
sysdba:
身份)
3:
scott:
密码:
tiger(普通用户)
localhost:
本地
连接:
http:
//localhost/isqlplus
编写代码(4种):
1—命令行
2—sqlplus
3—walletManager
4—IE
登录方式:
输入:
cmd或sqlplus
cd\
sqlplus"sys/密码assysdba"
select*fromscott.dept;
更换用户:
connscott/tiger
指定数据库连接:
sqlplus"sys/密码@数据库assysdba"
用浏览器登录:
http:
//localhost:
7778/isqplus
http:
//localhost/isqlplus
第二章
体系结构:
(物理存储、逻辑存储、内存存储、进程存储)
1:
物理存储(看的到的)
包括:
控制文件(ctl)、数据文件(dbf)、日志文件(log)、参数文件(ora);
1>控制文件:
控制和管理数据文件和日志文件的-ctl
2>数据文件:
存储数据的文件-dbf
3>日志文件:
记录对数据文件操作的记录-log
{联机日志(重做日志)
归档日志(备份日志)
}
4>参数文件:
提供控制文件的一个具体路径-ora;
查找参数文件:
cd\
sqlplus"sys/密码assysdba"
descV$controlfile;
selectnamefromv$controlfile;
查找文件:
v$controlfile
v$detafile
v$logfile
文件组:
把次要文件放入文件组,便于管理
describe:
描述
2:
逻辑存储
包括:
表空间、段、盘区、块
表空间:
相当于SQL中的文件组,方便管理,可以分为多个段,段里可以划分盘区,盘区下可以划分块;
块:
标题、表目录、行目录、自由空间、行数据
3:
内存存储:
1:
实例:
oracle启动时,在内存当中开辟一个空间,并把所有进程启动
2:
内存结构:
1】系统全局区(SystemGlobalArea--SGA)
包括:
共享池、数据缓冲区、日志缓冲区、大共享池、Java池
1>数据缓冲区:
1.保持缓冲区:
当打开oracle实例直到关闭期间不能释放的信息或数据
2.再生缓冲区:
当需要的情况下,放入内存,不需要是,则释放掉
3.默认缓冲区:
支持oracle一些默认数据(时间、日期)
2>共享池:
『1.库缓存{sql区:
sql执行版本和各种语法规则
/PL/SQL区:
PL/SQL执行版本、语法规则和存储过程、函数、包和触发器的代码法规则}
2.字典缓存:
数据字典(dictionary)
数据字典:
描述数据的信息,存放表和视图(所有用户、所有数据、所有对象的信息)』
(Mback:
回滚、commit:
提交)
3>日志缓冲区:
存放对数据缓冲区操作数据的记录(必须提交:
commit)
『DBWR:
数据写进程
LGWR:
日志写进程
CKPT:
监测点(检测状态是否一致)
ARCH:
归档进程』
脏数据:
没有写入数据文件之前存放在数据缓冲区和日志缓冲区的文件(在内存缓冲区的数据)
2】程序全局区(ProgramGlobalArea-PGA)
4:
进程存储:
1:
用户进程:
当用户运行一个应用程序时,就建立一个用户进程
2:
服务器进程:
处理用户进程的请求
处理过程:
分析SQL命令并生成执行方案,从数据缓冲区存储区中读取数据,将执行结果返回给用户
3:
后台进程:
为所有数据库用户异步完成各种任务
『主要的后台进程有:
DBWR:
数据库写进程;
LGWR:
日志写进程;
CKPT:
检查点写进程,
SMON:
系统监控进程;
PMON:
进程监控进程;
ARCH:
归档进程;
RECO:
回复进程;
LCKN:
封锁进程』
第三章基本命令
一、支持命令:
helpindex(查看您命令)
?
帮助
?
set
*没有打开
无*打开
sqlblankline:
空行
:
setsqlblanklineon
list:
罗列、清单(list)
del:
删除(del)
append:
追加(afromdept;)
/或run:
运行
save:
保存
edit:
编辑
例如:
保存文件:
save+路径;(savec:
123.txt)
查看保存的代码:
get+路径
运行:
@+路径
编辑:
edit+路径
select*fromdeptwheredeptno=&a;
入a的值:
20:
节省内存和执行速度(用变量代替数值)
列:
column(col)-标签
?
col:
查看col的所有内容
col列号heading"部门号":
将部门号改写为中文
『ttitle:
页眉
Btitle:
页脚』
关闭页眉/页脚:
ttitleoff;
例如:
ttitlecenter"员工表"skip(换行)1left"测试"right"页"format(格式99占2位)sql.pno(生成页号)skip2;
存放文件:
spool(所写内容,开辟的文件里)
例如:
spoolC:
\emp.txt
保存内容;
spooloff;(结束)
例如:
setpagesize1000
select*fromemp;
?
set
pagesize:
页的大小
setpagesize100;
select*fromemp;
setlinesize:
行大小(设置)
break:
去掉重复列
compute:
在break的基础之上执行
例如:
selectdistinct*fromemporderbyjob;
breakonjob;
selectdistinct*fromemporderbyjob;
compcountlabel"计数"ofenameonjob;
select*fromemporderbyjob;
每个工作有多少人:
selectjob,count(*)fromempgroupbyjob;
distinct——去掉重复行的行
break---去掉重复项
selectdistinctjobfromemp;
排序:
orderby(desc:
降序,arc:
升序)
selectlinesize100
select*fromemporderbyjob;
分组:
groupby
selectjob.count(*)fromempgroupbyjob;
二、开启和关闭Oracle数据库
开启:
1:
开启:
startup『
1:
打开数据库实例
2:
打开控制文件
3:
打开数据文件和日志文件
』
2:
装载打开:
startupmount『
1:
开辟一个实例
2:
打开控制文件(没有打开数据文件和日志文件)』
装载过程:
『
1:
关闭数据:
shutdownimmediate;首先关闭数据库
2:
用装载模式开启:
startupmount;用装载模式打开数据库
3:
更改:
alterdatabasearchivelog;-将归档模式更改未存档模式
4:
打开更改:
alterdatabaseopen;打开更改后的数据库
5:
查看:
archiveloglist;查看数据库模式
』
3:
不装载打开:
startupnomount
『实例-启动』
4:
强迫打开:
startupforce(强迫)
『
1:
打开数据库实例
2:
打开控制文件
3:
打开数据文件和日志文件
』
查看数据库模式:
archiveloglist;
关闭:
1:
正常关闭:
shutdownnormal;-等待当前连接的所有用户断开与数据库的连接
2:
事务处理:
shutdowntransactional;-在完成事务处理后断开所有用户连接
3:
立即关闭:
shutdownimmediate;-回退活动的事务处理并断开所有用户连接
4:
中止:
shutdownabort;-立即关闭,中断数据库例程
第四章用户管理—安全
SQL操作系统的安全性:
用户、组
Oracle操作系统的安全性:
用户、角色
查看当前用户:
selectuserfromdual(当前用户);
connscott/tigerassysdba
selectuserfromdual;
创建用户:
2种『企业管理器、代码』
temp:
临时
profile:
概要
grant:
授权(grant+权限+to+用户)
创建用户:
createuser用户名identifiedby密码;
所有权限:
all
grantallonscott.deptto用户名;
conn用户名/密码;
select*fromscott.dept;
delectfromscott.deptwheredeptno=50;
commit;
授权首先连接sys
1:
grantconnectto用户;
2:
grantselectonscott.deptto用户;
insert
update
delete
3:
grantallonscott.deptto用户;
quota:
额度+单位
程序步骤:
1:
cd\
2:
sqlplus"sys/limengassysdba"
3:
创建用户:
createuser用户名identifiedby密码;
4:
grantconnectto用户名;授权
5:
connsys/zsyassysdba
6:
grantinsertonscott.deptto用户名;
7:
conn用户名/密码;
8:
insertintoscott.deptvalues(50,'shoulshi','ORCcle');
9:
commit;(提交)
10:
select*fromscott.dept;(查看)
修改表字段:
1.connsys/limengassysdba
2.grantallonscott.depttoxiaomeng;
3.connxiaomeng/xiaomeng
4.updatescott.deptsetdname='haha'wheredeptno=20;
mit;
6.select*fromscott.dept;
赋予用户创建用户的权限:
1.connsys/liemgassysdba
2.grantcreateuserto用户;
3.conn用户/密码;
4.createuser新用户identifiedby用户;
赋予用户创建表的权限:
connsys/limengassysdba;
alteruserxiaomengquota10monusres;
用户已创建
connxiaomeng/l123
createtablemm(idnumber,usernamevarchar2(20),pwdnumber)
表已创建
所有权限:
connsys/limengassysdba;
grantallonscott.depttogril;
conngril/l123;
二、逐一授权:
1:
对象授权:
(对表的操作—增、删、改、查)-可以对该用户下的用户授予权限
grantallonscott.deptto用户withgrantoption
例如:
1.connsys/limengassysdba
2.revokeallonscott.deptfrom用户;
撤销成功
3.grantallonscott.deptto用户withgrantoption;
授权成功
4.conn用户/密码;
5.select*fromscott.dept;
6.grantallonscott.deptto用户2;
7.connsys/limengassysdba;
8.grantconnectto用户2;
9.conn用户2/密码;
10.select*fromscott.dept;
2:
系统授权:
grantcreate...to...withadminoption;
1.connsys/limengassysdba;
2.grantcreateuserto用户withadminoption;
3.conn用户/密码;
4.grantcreateuserto用户2;
授权成功(即mm具有创建用户的权限)
撤销授权:
revoke;
revokeallonscott.deptfrom用户;
修改、删除用户:
1:
修改用户:
数据字典
descdba(管理员)-users(用户)
descdba_users;-查看所有用户信息
2:
selectusername,passwordfromdba_users;
alteruser用户identifiedby新密码accountlock;
例如:
用户在不知道密码的情况下登录
cd\
(1)sqlplus"sys/随便写assysdba"
(2)sqlplus"sysassysdba"---口令随便写
descdba_users;-查看所有用户信息
alteruser用户identifiedby新密码;
conn用户/密码;
connsys/limengassysdba;
锁定用户:
alteruser用户名mmaccountlock;
conn用户/密码;
撤销锁定:
connsys/limengassysdba
alteruser用户名accountunlock;
conn用户/密码;
3:
删除用户、表(drop)
『dropuser用户名
droptable表名
角色(Role):
1>createrolemy_role;
角色已创建
2>grantallonscott.depttomy_role;
授权
3>grantmy_roletoj1(用户);
概要文件:
概要文件用于限制由用户使用的系统和数据库资源,如果数据库中没有
创建概要文件,将使用默认概要文件。
概要文件一般信息的内容:
CPU/会话:
一个会话占用CPU的时间总量(以s/100为单位);
CPU/调用:
一个调用占用CPU的时间总量(以s/100为单位);
连接时间:
一个会话持续的时间最大值(以min为单位);
空闲时间:
一个会话处于空闲状态的时间最大值(以min为单位);
并行会话数:
一个用户进行并行会话的最大数量;
读取数/会话:
一个会话读取的数据块总量;
读取数/调用:
一个调用在处理一个PL/SQL语句时读取数据块的最大数;
专用sga:
在系统全局区(SGA)的共享池中,一个会话可分配的专用空间
最大值(以KB为单位);
组合限制:
一个会话耗费的资源总量。
它包括会话占用CPU的时间、连接
时间、会话中的读取数和分配的专用SGA空间量。
·口令选项界面的内容:
有效期:
多少天后口令失效;
最大锁定天数:
口令失效后多少天内可以更改此口令;
保留口令历史记录:
保留:
口令能被重新使用前必须被更改的次数;
保留时间:
口令失效后经过多少天才可以重新使用;
启用口令复杂性函数:
登录失败后锁定账户:
用户在登录失败几次后,该帐户将被锁定,并可
指定锁定天数。
第五章客户端与服务器端的连接
机制
Oracle:
默认端口(1521)
SQLServer:
默认端口(1433)
mysql:
默认端口(3306)
本地监听器:
1:
添加端口
2:
重启监听器(在根录下启动:
lsnrctlstatr监听器名)
例如:
cd\
lsnrctlstartlistener1;
3:
设net服务名
第六章SQL基础
数据库中的对象:
视图:
(虚表)不占内存空间
表与索引:
占内存空间
序列、同义词:
不占内存空间
数据类型:
char:
静态开辟空间
varchar2(20):
动态开辟空间』—字符型
number(p—整个数字的长度(99位),s—小数部分)
Date:
日期类型
Long:
长整型(动态开辟空间—2G)
clob
blob—>二进制或字符,每个单元格可存放4G
Rawandlongraw:
纯二进制存放(4000字符)
查
Sqlserver修改属性:
altertable表名
altercolumn列名
建表、修改属性:
1:
createtabletext(anumber,bvarchar2(20),cdate);
2:
desctext;
3:
altertable表名
add列名类型;(添加)
4:
desctext;
5:
altertable表名
dropcolumn列名;(删除)
6:
altertable表名
modify列名varchar2(50)(修改内容);(修改属性)
更改表名:
1:
rename旧名to新名;
2:
altertable表名renameto新表名;
更改列名
altertable表名renamecolumn旧列名to新列名;
删除表:
droptable表名;
表的命名规则:
必须以字母开头
1-30个字符
可以包含字母,数字,下划线,#,$
不能使用保留字
不能同名
查询数据字典:
Selecttable_namefromuser_tables;
Selectdistinctobject_typefromuser_objects;
Select*fromuser_catalog;
数据类型:
Varchar2(size);0~4000
Char(size);0~2000
Number(p,s);
Date(日期)
Long(4G)
Clob
Rawandlongraw(二进制)
blob
截断表:
truncatetabletest2;
第七章约束
『1:
表depart:
字段:
dept_id,dept_name
2:
表employ:
字段:
emp_id,emp_name,dept_id,title,mgr_id,hire_date
3:
表emp_details
字段:
ed_idnumber,emp_id外键,sex默认、检查,phonevarchar2(20),email检查约束,addr
4:
表emp_salary
字段:
es_id,emp_id,salarynumber(10,2)
5:
表sal_details
字段:
sd_id,emp_id,salary,sal_date』
外键:
当输入某一列时,必须参照某一表的列;
『1:
做外键的列与参数表中列类型一致
2:
当验证这一列是否存在,另一表中一列为主键』
1:
主键约束:
『1:
这一列能决定其他列的输入
2:
表中找不出这样的一列,在id上创建主键』
constraint:
约束
创建约束:
constraintpk_dept(逻辑名字,适用于一列或两列充当主键)primarykey();
主键创建方法:
(默认创建一个非空约束和唯一索引)
1>在列名后+primarykey
2>在下面创建constraint约束+逻辑名+primarykey();
3>修改表,添加约束;
altertabledepartaddconstraintpk_deptprimarykey(dept_id);
4>删除主键:
altertable表名dropconstraint逻辑名;
2:
空约束:
(notnull)
1>列名+notnull
2>altertable表名modify列名notnull;
3>删除空约束