oracle10g 学习 方向DBA一

最近买了一本ORACLE DBA的书本,想熟悉一下ORACLE系列软件,谈到ORACLE(甲骨文)这几个字,真是无人不知,无人不晓。
一开始看这本书就很费劲,虽然接触过mysql,sqlserver,还有最简单的access等等数据库软件,但是多是很简单的在使用;涉及oracle还是第一次。
直接在LINUX平台安装ORACLE10g for linux。安装细节在我博客的LINUX系统中有详细过程,如果有问题,可以查看那个安装过程。
在架构后,直接通过IE登录oracle的OEM窗口,在里面可以直接使用sql命令,sqlplus命令,plsql命令来操作;在使用这些命令之前,还有一些基本资料需要了解。
oracle的数据类型:
PL/SQL有四种类型:标量类型,复合类型,引用类型(reference),LOB(Large Obejct)类型
一.标量类型
最常用的就是标量类型,是指只能存放单个数值的变量,包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含相应的子类型。
常量标量类型如下:
 
 VARCHAR2 (n) , CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG   RAW ,BOOLEAN,BINARY_INTEGER(仅PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的) 
定义标量:
identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]
使用标量需要注意的是=号被:=取代,与delphi一样的赋值符号@_@
例子:
 
 v_name  VARCHAR2 ( 10 );
v_rate CONSTANTS  NUMBER ( 4 , 2 ) : = 3.04 ;
 
为了防止定义的变量类型与表中的字段类型不一致,可以使用%TYPE来定义:
 
 v_name employee.name % TYPE; 
如上面所示,v_name的类型就与表employee中的name字段类型一样!!
二。复合变量:
用于存放多个值的变量称为复合变量,包括PL/SQL记录,PL/SQL表,嵌套表和VARRAY四种类型
1。PL/SQL记录
类似于C/C++中的结构概念:
 
 declare
   TYPE employee_record  is  RECORD(
     id employee.id % TYPE,
     name employee.name % TYPE,
     email employee.email % TYPE);
   em_record employee_record;
 begin
    select  id,name,email  into  em_record  from  employee  where  name =& name;
   dbms_output.put_line( ' 雇员名: ' || em_record.name || '  雇员ID: ' || em_record.id);
 end ;  
2。PL/SQL表,类似于数组概念,不同的是PL/SQL表允许负值下标,而且没有上下限,如:
 
 declare
   TYPE employee_table  is   table   of  employee.name % TYPE  index   by  BINaRY_INTEGER;
   em_table employee_table;
 begin
    select  name  into  em_table( - 1 )  from  employee  where  name =& name;
   dbms_output.put_line( ' 雇员名: ' || em_table( - 1 ));
 end ;  
3。嵌套表,与PL/SQL表相似,不同的是嵌套表可以做表列的数据类型,而PL/SQL表不能,使用嵌套表作为表列时,必须为其指定专门的存储表,如:
 
 create   or   replace  TYPE emp_type   as  OBJECT(
  name  VARCHAR2 ( 10 ),salary  NUMBER ( 6 , 2 ),hiredate DATE);
 CREATE   OR   REPLACE  TYPE emp_array  IS   TABLE   OF  emp_type;
  CREATE   TABLE  department(
    deptno  NUMBER ( 2 ),dname  VARCHAR2 ( 10 ),
    employee emp_array)NESTED  TABLE  employee STORE  as  employee_dept;
 
4。VARRAY(变长数组),与嵌套表相似,也可以做为表列的数据类型,但是嵌套表没有个数限制,而VARRAY有个数限制,如:
CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;
三。引用变量(reference)
类似于C++中的指针或者JAVA中引用的概念,用于存放数值指针的变量,使用此变量,可以使得应用程序共享相同对象,降低占用空间。此类有两种类型:游标(REF CURSOR)和对象类型(REF OBJECT)
1。REF CURSOR,定义时同时指定SELECT语句的游标称为显式或者静态游标,在打开时才指定SELECT语句的游标称为动态游标,如:
 
   DECLARE 
     TYPE c1  IS  REF  CURSOR ;
     emp_cursor c1;
     v_name employee.name % TYPE;
     v_sal employee.salary % TYPE;
     begin
      open  emp_cursor  for
        SELECT  name,salary  FROM  EMPLOYEE ;
     LOOP
        FETCH  emp_cursor  INTO  v_name,v_sal;
        EXIT   WHEN  emp_cursor % NOTFOUND;
       dbms_output.put_line(v_name);
      END  LOOP;
      close  emp_cursor;
     end ;     
2。REF OBJECT,与JAVA的引用概念相同,存储的是指向对象的指针
 
四。LOB类型
LOB类型是指用于存储大批量数据的变量,包括内部的3种(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。
CLOB,NCLOB用于存储大量的字符数据。
BLOB用于存储大批量二进制数据(如图象)。
BFILE则存储指向OS文件的指针。
数据类型
取值范围
描述
备注
Char(n)
n=1 to 2000 字节
存储固定长度的字符串。默认长度为 1
 
Varchar2(n)
高亮为常用字段
n=1 to 4000 字节
可变长的字符串,具体定义时指明最大长度 n ,这种数据类型可以放数字、字母以及 ASCII 码字符集 ( 或者 EBCDIC 数据库 系统接受的字符集标准 ) 中的所有符号。如果数据长度没有达到最大值 n Oracle 会根据数据大小自动调节字段长度,如果你的数据前后有空格, Oracle 8 会自动将其删去。 VARCHAR2 是最常用的数据类型。可做索引的最大长度 3209 Varchar2 类型的字段长度可以达到 4000 字节, Varchar2 类型的变量长度可以达到 32676 字节。
节省表空间:一个空的 varchar2(2000) 字段和一个空的 varchar2(2) 字段所占用的空间是一样的。
举例:当语言环境为中文( SIMPLIFIED CHINESE_CHINA.ZHS16GBK )时,一个 VARCHAR2 200 )的数据列可以保存 200 个英文字符或者 100 个汉字字符。
Nchar(n)
n=1 to 2000 字节
Unicode 数据类型 只能存储 utf-16 utf-8 的数据。存储固定长度的字符串
 
Nvarchar2(n)
n=1 to 4000 字节
Unicode 数据类型 只能存储 utf-16 utf-8 的数据。存储变长字符串
 
Long[ 会消失 ]
最大 2G
可变长字符列,最大长度限制是 2GB ,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用 varchar2 类型。
long 是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
在不同系统间移动需要进行转换。
Clob
最大 4G
存储单字节字符型数据。适用于存储超长文本。
 
Nclob
最大 4G
存储多字节国家字符型数据。适用于存储超长文本。
 
Blob
最大 4G
存储二进制数据。适用于存储图像、视频、音频等。
 
Bfile
最大长度是 4GB
在数据库外部保存的大型二进制对象文件,最大长度是 4GB 。这种外部的 LOB 类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
Oracle 可以读取、查询 BFILE ,但是不能写入,不参与事务。
 
Number(m,n)
m=1 to 38
n=-84 to 127
存储整数或浮点数。可变长的数值列,允许 0 、正值及负值, m 是所有有效数字的位数, n 是小数点以后的位数。
如: number(5,2) ,则这个字段的最大值是 99,999 ,如果数值超出了位数限制就会被截取多余的位数。
如: number(5,2) ,但在一行数据中的这个字段输入 575.316 ,则真正保存到字段中的数值是 575.32
如: number(3,0) ,输入 575.316 ,真正保存的数据是 575
 
Date
 
数据类型 用来存储日期和时间格式的数据。默认格式: DD-MON-YYYY 。从公元前 4712 1 1 日到公元 4712 12 31 日的所有合法日期
  放心使用,不会有千年虫问题
Row(n)[ 会消失 ]
n=1 to 2000
可变长二进制数据,在具体定义字段的时候必须指明最大长度 n Oracle 用这种格式来保存较小的图形文件或带格式的文本文件,如 Microsoft Word 文档
raw 是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
 
LongRow[ 会消失 ]
最大长度是 2GB
可变长二进制数据,最大长度是 2GB Oracle 用这种格式来保存较大的图形文件或带格式的文本文件,如 Miceosoft Word 文档,以及音频、视频等非文本文件。在同一张表中不能同时有 long 类型和 long raw 类型, long raw 也是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
 
Rowid
 
数据类型 ORACLE 数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。
 
数据类型
取值范围
描述
备注
Char(n)
n=1 to 2000 字节
存储固定长度的字符串。默认长度为 1
 
Varchar2(n)
高亮为常用字段
n=1 to 4000 字节
可变长的字符串,具体定义时指明最大长度 n ,这种数据类型可以放数字、字母以及 ASCII 码字符集 ( 或者 EBCDIC 数据库 系统接受的字符集标准 ) 中的所有符号。如果数据长度没有达到最大值 n Oracle 会根据数据大小自动调节字段长度,如果你的数据前后有空格, Oracle 8 会自动将其删去。 VARCHAR2 是最常用的数据类型。可做索引的最大长度 3209 Varchar2 类型的字段长度可以达到 4000 字节, Varchar2 类型的变量长度可以达到 32676 字节。
节省表空间:一个空的 varchar2(2000) 字段和一个空的 varchar2(2) 字段所占用的空间是一样的。
举例:当语言环境为中文( SIMPLIFIED CHINESE_CHINA.ZHS16GBK )时,一个 VARCHAR2 200 )的数据列可以保存 200 个英文字符或者 100 个汉字字符。
Nchar(n)
n=1 to 2000 字节
Unicode 数据类型 只能存储 utf-16 utf-8 的数据。存储固定长度的字符串
 
Nvarchar2(n)
n=1 to 4000 字节
Unicode 数据类型 只能存储 utf-16 utf-8 的数据。存储变长字符串
 
Long[ 会消失 ]
最大 2G
可变长字符列,最大长度限制是 2GB ,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用 varchar2 类型。
long 是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
在不同系统间移动需要进行转换。
Clob
最大 4G
存储单字节字符型数据。适用于存储超长文本。
 
Nclob
最大 4G
存储多字节国家字符型数据。适用于存储超长文本。
 
Blob
最大 4G
存储二进制数据。适用于存储图像、视频、音频等。
 
Bfile
最大长度是 4GB
在数据库外部保存的大型二进制对象文件,最大长度是 4GB 。这种外部的 LOB 类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
Oracle 可以读取、查询 BFILE ,但是不能写入,不参与事务。
 
Number(m,n)
m=1 to 38
n=-84 to 127
存储整数或浮点数。可变长的数值列,允许 0 、正值及负值, m 是所有有效数字的位数, n 是小数点以后的位数。
如: number(5,2) ,则这个字段的最大值是 99,999 ,如果数值超出了位数限制就会被截取多余的位数。
如: number(5,2) ,但在一行数据中的这个字段输入 575.316 ,则真正保存到字段中的数值是 575.32
如: number(3,0) ,输入 575.316 ,真正保存的数据是 575
 
Date
 
数据类型 用来存储日期和时间格式的数据。默认格式: DD-MON-YYYY 。从公元前 4712 1 1 日到公元 4712 12 31 日的所有合法日期
  放心使用,不会有千年虫问题
Row(n)[ 会消失 ]
n=1 to 2000
可变长二进制数据,在具体定义字段的时候必须指明最大长度 n Oracle 用这种格式来保存较小的图形文件或带格式的文本文件,如 Microsoft Word 文档
raw 是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
 
LongRow[ 会消失 ]
最大长度是 2GB
可变长二进制数据,最大长度是 2GB Oracle 用这种格式来保存较大的图形文件或带格式的文本文件,如 Miceosoft Word 文档,以及音频、视频等非文本文件。在同一张表中不能同时有 long 类型和 long raw 类型, long raw 也是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
 
Rowid
 
数据类型 ORACLE 数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。
 
数据类型
取值范围
描述
备注
Char(n)
n=1 to 2000 字节
存储固定长度的字符串。默认长度为 1
 
Varchar2(n)
高亮为常用字段
n=1 to 4000 字节
可变长的字符串,具体定义时指明最大长度 n ,这种数据类型可以放数字、字母以及 ASCII 码字符集 ( 或者 EBCDIC 数据库 系统接受的字符集标准 ) 中的所有符号。如果数据长度没有达到最大值 n Oracle 会根据数据大小自动调节字段长度,如果你的数据前后有空格, Oracle 8 会自动将其删去。 VARCHAR2 是最常用的数据类型。可做索引的最大长度 3209 Varchar2 类型的字段长度可以达到 4000 字节, Varchar2 类型的变量长度可以达到 32676 字节。
节省表空间:一个空的 varchar2(2000) 字段和一个空的 varchar2(2) 字段所占用的空间是一样的。
举例:当语言环境为中文( SIMPLIFIED CHINESE_CHINA.ZHS16GBK )时,一个 VARCHAR2 200 )的数据列可以保存 200 个英文字符或者 100 个汉字字符。
Nchar(n)
n=1 to 2000 字节
Unicode 数据类型 只能存储 utf-16 utf-8 的数据。存储固定长度的字符串
 
Nvarchar2(n)
n=1 to 4000 字节
Unicode 数据类型 只能存储 utf-16 utf-8 的数据。存储变长字符串
 
Long[ 会消失 ]
最大 2G
可变长字符列,最大长度限制是 2GB ,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用 varchar2 类型。
long 是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
在不同系统间移动需要进行转换。
Clob
最大 4G
存储单字节字符型数据。适用于存储超长文本。
 
Nclob
最大 4G
存储多字节国家字符型数据。适用于存储超长文本。
 
Blob
最大 4G
存储二进制数据。适用于存储图像、视频、音频等。
 
Bfile
最大长度是 4GB
在数据库外部保存的大型二进制对象文件,最大长度是 4GB 。这种外部的 LOB 类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
Oracle 可以读取、查询 BFILE ,但是不能写入,不参与事务。
 
Number(m,n)
m=1 to 38
n=-84 to 127
存储整数或浮点数。可变长的数值列,允许 0 、正值及负值, m 是所有有效数字的位数, n 是小数点以后的位数。
如: number(5,2) ,则这个字段的最大值是 99,999 ,如果数值超出了位数限制就会被截取多余的位数。
如: number(5,2) ,但在一行数据中的这个字段输入 575.316 ,则真正保存到字段中的数值是 575.32
如: number(3,0) ,输入 575.316 ,真正保存的数据是 575
 
Date
 
数据类型 用来存储日期和时间格式的数据。默认格式: DD-MON-YYYY 。从公元前 4712 1 1 日到公元 4712 12 31 日的所有合法日期
  放心使用,不会有千年虫问题
Row(n)[ 会消失 ]
n=1 to 2000
可变长二进制数据,在具体定义字段的时候必须指明最大长度 n Oracle 用这种格式来保存较小的图形文件或带格式的文本文件,如 Microsoft Word 文档
raw 是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
 
LongRow[ 会消失 ]
最大长度是 2GB
可变长二进制数据,最大长度是 2GB Oracle 用这种格式来保存较大的图形文件或带格式的文本文件,如 Miceosoft Word 文档,以及音频、视频等非文本文件。在同一张表中不能同时有 long 类型和 long raw 类型, long raw 也是一种较老的数据类型,将来会逐渐被 BLOB CLOB NCLOB 等大的对象数据类型所取代。
 
Rowid
 
数据类型 ORACLE 数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。
 
sqlplus环境变量设置
  以前常用sqlplus做操作,每次都要手工设置一下环境变量,看了Tom的新书,才知道了编辑一个login.sql的脚本文件,就可以让sqlplus每次运行时自动读取配置参数(很弱智吧,估计很多人早已经用上了^_^)。
---login.sql,将该脚本放在$SQLPATH路径下---
  show和set命令是两条用于维护SQL*Plus系统变量的命令
  SQL> show all    --查看所有68个系统变量值
  SQL> help index  --查看所有可以set的变量名称
  SQL> show user   --显示当前连接用户
  SQL> show error --显示错误
  SQL> set heading off --禁止输出列标题,默认值为ON
  SQL> set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON"   这里为了安全关闭
  SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
  SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "
  SQL> set linesize 1000 --设置屏幕显示行宽,默认100
  SQL> set autocommit ON --设置是否自动提交,默认为OFF
  SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
  SQL> set arraysize 1 --默认为15
  SQL> set long 1000 --默认为80
  SQL> set serveroutput on   显示 DBMS_OUTPUT.PUT_LINE 的输出
  SQL> set autotrace on Autotrace 显示SQL语句成功执行的报告,explain 类似于SQL 查询分析器的“显示执行计划”, statistics 类似于“显示客户统计”。
 
 

你可能感兴趣的:(oracle,学习,职场,dba,休闲)