现在的位置: 首页 > 综合 > 正文

oracle 学习笔记(三)

2012年04月12日 ⁄ 综合 ⁄ 共 2360字 ⁄ 字号 评论关闭

  在oracle数据库中,有一个概念:表空间。表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中,从逻辑上讲,数据库是存放在表空间中,表空间是由一个或多个数据文件组成。逻辑结构包括表空间、段、 区、 块,那么为什么要将数据库分的这么细呢,我想主要是为了提高数据库效率,至于是为什么,各位自己考虑吧!

  通过建立表空间有以下好处
   一:控制数据库占用的磁盘空间(好像最大是500M);
     二:dba可以将不同数据类型部署到不同的位置,这样有利于提高I/O性能,同时利于备份和恢复等管理操作;

  当然,一个用户不是想建表空间就建立表空间的,他必须拥有create tablespace 的权限,否则不能建立表空间。据了解,一个优秀的DBA在建立好数据库后,会立刻建立表空间的,以便于管理。而我现在只是一个程序员,没有考虑到这方面,但了解一点很好。命令行如下

  create tablespace 表空间名 datafile 'd:\sp001.dbf'(路径名) size(大小) 5m uniform size(最小区域大小) 128k;

  如果你希望将建立的表放在某个表空间下面,那么只需要这样 create table 表名(....字段名 tablespace 表空间名) 即可。

  

alter tablespace 表空间名 offline --表空间脱机,这样别人不能访问数据库
alter tablespace 表空间名 online --表空间联机
alter tablespace 表空间名 read only --设置表空间只读
alter tablespace 表空间名 read write --设置表空间可读可写

  那么接下来,就是一些很很重要的知识了,个人理解!

  块:前面讲过,是数据库逻辑结构中的一种,那什么是块呢??引用别人的话:

  数据块概述Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block)。数据块是数据库中最小的(逻辑)数据单位。与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte)。每种操作系统都有一个被称为块容量(block size)的参数。Oracle每次获取数据时,总是访问整个数(Oracle)数据块,而不是按照操作系统块的容量访问数据。原文链接:http://soft.chinabyte.com/database/56/12199056.shtml

  在oracle 中,我们常用它来定义一个块,作为所有的编程语言,输出 hello.world 是第一课,在oracle也可,命令如下

begin   --表示开始执行
dbms_output.put_line('hello,world!'); --执行的代码
end; --结束执行

 如果你没有看见 hello,world!,那么有可能是你的输出器关闭了,命令语句是  set serveroutput on 。

下面的例子是定义了一个块,从scott用户中读取数据,代码如下

declare 
v_ename varchar2(5); --定义了两个变量 用来传送两个值
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from emp where empno=&empno; --这里表示用户输入的的 员工编号
dbms_output.put_line('用户名是:'|| v_ename|| '薪水是:' || v_sal);
end;

  大致一看没什么问题 ,其实这个块是很有问题的,比如 用户输入的员工号的数位大小不同,定义的变量的类型与表中的数据类型不同,这都是一些问题。那么请看下面一段语句

declare
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
select ename,sal into v_ename,v_sal from emp where empno=&empno;
dbms_output.put_line(v_ename ||'薪水是:' || v_sal);
exception --如果有异常
when no_data_found --当没有数据找到时
then dbms_output.put_line('error');
end;

  从这个命令,我没有明确定义变量 v_ename,v_sal的类型,而是用了%type 这个很有意义,这样让两个值的类型一样。其次,我定义了异常的处理,当no_data_found 即没有数据时,则执行下面语句。关于异常,我会在后面具体讲讲几种异常。

  函数:用于返回特定的数据,当建立函数时,在函数头部必须包含return字句,而在函数体内必须包含return语句返回的数据,必须要有关键字 function代表我们创建的是一个函数。比如我们写一个函数,或得一个用户的年薪。当然,个例子只返回了一个值,且用户名师唯一的,语句如下。  

create function sp_fun1(spName varchar2) --定义了函数名和函数所带的参数
return number is yearSal number(7,2);  
--定义了返回值的类型是number 并且返回值的名称是 yearSal 这里两个值的类型并然是一样的 
begin
select sal*12 into yearSal from emp where ename=spName;
return yearSal;
end;

如何调用这个函数呢??

var yearSal number; --定义一个变量,接受返回值
call sp_fun1('SCOTT') into:yearSal; --调用存储过程
Method called

yearSal
---------
36000 ---返回结果

  恩 这些知识今天我就总结到这里了!

    

 

  

抱歉!评论已关闭.