Oracle 10G 了解

第一张 数据库的安装及体系结构
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;
  /
  没有声名,打开关闭
  表中的数据很大的时候不建议使用游标
  逐条取数据
  方法很灵活,还是有必要的.
 

原文地址:https://www.cnblogs.com/whitetiger/p/1050231.html