Oracle学习笔记(一)

本系列笔记为本人过去学习所写,适合有一定数据库(sql server等)基础的读者,希望对初学者有所帮助。

 

    1.变量的定义

    简单数据类型: 与数据库中创建表定义字段有点类似,前面是变量名,后面是数据类型,比如 id number;

                  需要注意的是,所有变量的定义必须是在declare块中.

    复合数据类型: 有两种:

                 1.v_ename emp.ename%type 表示将v_emp的类型定义为emp表中的ename字段类型,这种定

                   义方式可不需知道emp表中的字段具体的类型.

                 2.v_emp emp%rowtype 表示将emp表中的各个字段数据类型定义给v_emp

    2.程序流程

            顺序结构:所有程序都是以 begin开始 以end结束的,顺序结构就是从上到下,直接运行.

            分支结构:基本语法如下:

                    ①if 条件 then 执行的语句 end if;

                    ②if 条件 then 执行的语句 elsif 条件 then 执行的语句 end if

                 在上两种结构中一般我们会在最后一个if执行语句后加上一个else分支作今后的扩展

                 用,可先用null;

                    ③case 变量 when 常量 then 执行的语句 end case
                    ④case when 条件 then 执行语句 end  case

                 在上两种结构中一般我们会在最后一个执行语句后加上一个else语句,目的是防止case语

                 句中无条件匹配的情况

            循环结构:

                    ①先判断,再循环: while (条件) loop 循环块 end loop;

                    ②先执行一次,再判断循环: loop 循环块 end loop,注意在循环块中需要我们自己定

                    义一个跳出循环的条件,当条件满足时通过exit;语句来跳出循环

                    ③循环固定次数:for 变量名字 in 变量的起始和结束值(比如:1..100) loop 循环块

                      end loop;

      3.异常处理

          异常处理我们需要用到exception关键字,一般格式为:

              exception  when 处理类型 then 处理的方法

          一般情况下,只要一个程序中可能会出现异常,那不管我们是否将所有可能的异常处理完,我们都需要在最后一个异常处理位置加上exception when others then XXX,目的是为了防止人为操作出现的漏掉的异常处理.

     在异常处理的方法块中我们可以利用 sqlcode和sqlerrm 得到该异常的异常号,异常描述等信息.

     自定义异常:raise_application_error(number,varchar2);其中number表示该异常的异常号,ORACLE允许用户定义的异常号范围为:-20001到-29999.varchar2表示对异常的描述,注意该定义方式并不是处理了异常,而是将异常抛出.

     还有一种异常很容易出现,经常使用,但为了方便用户不去记忆异常号等信息,ORACLE公司将他们定义成了预定义异常,这些异常都有自己的异常名字,一般来说见名知意,很容易使用.

 

扩展与提升:

    1.如何使用&和&&:目前看来除了在PL/SQL的测试窗口不能用以外,其他地方都能用,他们都会弹出一个可供用户输入的对话框,区别在于:每次运行的时候&都会要求输入,而&&只在第1次运行的时候要求输入.

    2.伪列:有两种rowid和rownum,区别在于:rowid是显示该数据在磁盘上的位置,而rownum是显示在该数据库中的行号;

    3.哑表dual:多用于计算,个人认为该表其实不存在,就像sql server中计算列一样不需要引用表,但这又是ORACLE在计算列时不可缺少的操作.

    4.ORACLE中常见的函数:

         ①to_char(date,String),其中,date是一个日期类型的参数,String表示需要将date参数中的哪部分以字符串形式输出,比如:'yyyy'表示输出年份.注意该函数是将date类型转换为String类型.

         ②to_date(String,String),第一个字符串表示需要转换为date类型的字符串,比如'2005-01-03',第2个字符串参数表示转换成什么格式,比如'yyyy-mm-dd'表示年-月-日,两个字符串是一一对应的

         ③空值nvl函数,是很重要的函数之一:格式为nvl(name,value),表示如果所在字段name中的数据为null,则将他赋值为value的值,在数据库中null值有3个重要的特点:不能比较,不能运算,不能统计

         ④decode

 背都写痛了,不过有收获就是很好的........

<!-- -->

你可能感兴趣的:(数据结构,oracle,sql,SQL Server)