第一张 数据库的安装及体系结构
c:\oracle\product\10.1.0\oradata\test实例所在的目录
控制文件.ctl 数据文件.dbf ,日志文件.log
联机日志,归档日志文件
控制文件管理日志和数据文件
先启动控制文件-然后在打开数据文件
http://JLXXB-ADU:5500/em
以下的 J2EE 应用程序已经配置, 并且可用下面列出的 URL 来访问。
数据库管理器
sqlpuus "sys/test1234 as sysdba"
系统视图-控制文件
DESC v$controlfile
第二章 sql*plus基础
startup (no)mount 气动控制文件但是不启动日志文件
no启动实例控制文件都不打开,控制文件丢失
关闭
shutdown immediate理想的建议使用的 无参数的时候正常关闭
immediate每个用户执行完才关闭
transactional迫使每个用户执行后关闭
abort强行关闭数据,已造成文件丢失
oracle中的用户详解
oracle中的用户很多,也很令初学者费解.
oracle中的帐户分为两类:一类是必需的帐户,一类是存储各种应用的帐户
用户名 密码 描述
ANONYMOUS ANONYMOUS 访问http的匿名用户帐户
CTXSYS CTXSYS interMedia Text用户
DBSNMP DBSNMP 目录集成平台用户
EXFSYS EXFSYS 表达式过滤器用户
MDDATA MDDATA oracle空间数据帐户
MDSYS MDSYS oracle空间数据媒体管理员
MGMT_VIEW MGMT_VIEW
OLAPSYS MANGER 用于创建olap元数据
ORDPLUGINS ORDPLUGINS oracle ineterMedia,video用户
ORDSYS ORDSYS image管理员
OUTLN OUTLN 拥有connect和resource角色
SCOTT Tiger 样例帐户
SI_INFORMATN_SCHEMA 静止图像浏览帐户
SYS 用户指定 数据库管理帐户
SYSMAN OEM_TEMP 企业管理器帐户
SYSTEM 用户指定 数据库管理帐户
WK_TEST WK_TEST 同wksys
WKPROXY 代理帐户
WKSYS WKSYS 同wk_test
WMSYS WMSYS 工作空间管理帐户
XDB CHANGE_ON_INSTALL xml db帐户
默认情况下oracle指对sys,system,dbsnmp,sysman,mgmt_view5个帐户进行了解锁,如果希望其它用户也能登录需要手工进行解锁
show user 显示当前登录系统的用户名
select username,account_status,expiry_date from dba_user; 查看用户状态
alter user outln account unlock; 解锁帐户
grant connect 帖哦outln identified by 123; 用户授权
第二章SQLPlus
sqlplus/nolog
connect sys/dyf132025 as sysdba
startup
archive log list非归档方式
修改在归档方式进行热备份
数据库启动的情况下是不允许的
只能关闭之后在启动实例,启动实例的时候打开控制文件
但是不能打开数据文件
启动的时候要使用
startup mount
在这种情况下执行
alter database archivelog
alter database open
吧非归档方式改为归档方式
---------star
startup nomount
首先启动实例但是连控制文件都不打开(当我们的控制文件丢失的情况下)
-------关闭
shutdown immediate
建议使用--迫使每个用户执行完当前sql语句后立即断开连接
shutdown
正常关闭-只有等待所有用户断开连接的时候才关闭
shutdown transactional
迫使每个用户在当前执行完后断开连接,终止实例
恢复破坏的文件,数据文件不能同其他的数据库文件保持一致
shutdown abort
强行关闭数据库关闭实例,很可能造成破坏,例如着火什么的
支持空格会车行------set sqlblanklines on
语句部分分号结尾
l
查看缓冲区
a 添加缓冲区的内容
c 替换缓冲区的内容
@执行某一个文件
get 获取文件
save 保存缓冲区
edit编辑缓冲区语句
col标签
col deptno heading "编号"
desc 表 查看表结构
col dname format A10
以字符的方式显示10个字符
format 和 heading可以一起使用一前一后
break on pub 重复的显示一条
comp count label "计数" of books_name on pub ---统计工作
保存结果集
SPOOL 文件路径
SPOOL OFF
查看---edit 路径
第三章 sql语言
1DLL--数据定义语言
CREATE
ALTER
DROP
2DCL--数据控制语言
GRANT
REVOKE
3DML--数据操纵语言
SELECT
INSERT
DELETE
UPDATE
alter table abc drop column c;删除表的一个字段
授权----
crant select on dept to tt;
授权tt可以查询dept表
区销售权
revoke select on dept from tt;
---系统函数----
1字符
length,ltrim,replace,rtrim,substr,trim
1日期
sysdate,current_ate,next_day
3转换
to_char,to_date,to_number
4聚集函数
sum,avg,max,min,count
5其他
user,decode,nvl
dual,默认的表啊
字段的行数,表的函数
第三章2
having
select pub,sum(price*qty) from books group by pub having sum(price)>30;
select * from aa;
记录数大于一
select * from aa group by a1 having count(a1)>1;
模糊查询
select * from aa where a1 like 'a%';
内连接,匹配字段完全相同的
表 join 表 on 条件
外连接---不完全匹配
左外连接
空值替代
id(+)
右连接
条件后面放上(+) 无匹配用空值替代
子查询
where id IN (select id from d);
not in
select * from e where EXISTS (slect id from d);
判断d表有没有结果集,有的话就吧e表全部显示出来
not EXISTS
合并结果集
union 合并相同的行
instersect 返回两个sql语句中都出现的行
多条记录的插入
insert into e (eid,ename) select id,name from d;
第四章 PL/SQL的基础知识
PL/SQL 块结构
DECLARE
变量的声名
BEGIN
具体的操作
EXCEPTION
异常处理部分
END
变量的声名
赋予变量的适当名称
赋予变量正确的数据类型
定义变量(标准\记录)
控制变量的范围
命名规则
变量有字符开头:数字下划线$#等
长度1-30
大小写不区分
不是系统关键字
--------------------
分支语句
IF THEN
..
ELSIF THEN
..
ELSE
...
END IF
--------------------
CASE
WHEN....THEN....;
WHEN....THEN....;
ELSE
.......
END CASE;
----------------------
基本循环
LOOP
....
END LOOP
-----------------
WHILE expression LOOP
....
END LOOP;
-------------------
FOR counter IN [REVERSE] start_value..end_value LOOP
....
END LOOP;
-----------
异常处理
系统异常
自定义异常
异常结构
EXCEPTION
WHEN...THEN
...
系统常见异常
DUP_VAL_ON_INDEX 向有唯一约束的表中插入重复的行
NO_DATA_FOUND 在一个select into 语句中无返回值
TOO_MANY_ROWS select into 语句返回了多行
VALUE_ERROR 一个算法,转换,阶段活大小约束发生错误
ZERO_DIVIDE 发生被零除
---
自定义异常
declare
tname varchar2(10);
e exception;
begin
select name into tname from deptment where id='01';
if tname<>'B部门'THen
raise e;--抛出异常
end if;
DBMS_OUPUT.PUT_LINE(tname);
exception
when e then
DBMS.......
---------------------------------
符合变量:记录
TYPE type_name ID RECORD(
Variable_name datatype[,
Variable_name datatype[,
.....
)
Real_name type_name;
使用方式
DECLARE
TYPE myrecord IS RECORD(
id varchar2(10),----id emp.eid%TYPE,数据类型完全一致
name varchar2(10);
real_record myrecord;
begin
select eid,ename INTO real_record from emp where emp_id='001';
DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_record.name);
end;
/
---myrec emp%ROWTYPE 完全匹配记录,要用* 的方式查询
第五章 plussql高级应用
游标
游标是一种PL/SQL控制结构;可以对sql语句的处理进行
县式控制,便于队标的行数据逐条进行处理
显示-隐式
属性
%FOUND
%ISOPEN
%NOTFOUND
%ROWCOUNT
例子:
declare
corsor mycur is
select * from books;
myrecord books%ROWTYPE;
begin
open mycur;
FETCH mycur INTO myrecord;---第一条数据
------循环判断,去到底部
while mycur%FOUND loop
DBMS_OUTPUT.PUT_LINE(myrecord.books_id||''....);
FETCH mycur INTO myrecord;
end loop;
CLOSE mycur;
end;
/
---------------------
参数控制
declare
cursor cur_para(id varchar2) is
select books_name from books where books_id=id;
t_name books.booksname%type;
begin
open cur_para('001');
loop
FETCH cur_para into t_name;
exit when cur_para%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(t_name);
end loop;
close cur_para;
end;
/
----------------------
declare
cursor cur_para(id varchar2) is
select books_name from books where books_id=id;
t_name books.booksname%type;
begin
DBMS_..........
for cur in cur_para('0001') loop
DBMS.............---输出
END LOOP;----不需要open close
end;
/
%ISOPEN 为打开的时候为true;否则false;
%ROWCOUNT 返回迄今为止,从游标中取出的行数的值
游标修改数据
declare
cursor cur is
select name from deptment for update;---选项
text varchar2(10);
begin
open cur;
fetch cur into text;
while cur%found loop
update deptment set name =name||'_t' where current of cur;
fetch cur into text;
end loop;
close cur;
end;
/
------------------------
隐式游标
begin
for cur in(select name from deptment)loop
DBMS_OUT.........
END loop;
end;
/
没有声名,打开关闭
表中的数据很大的时候不建议使用游标
逐条取数据
方法很灵活,还是有必要的.