• PL/SQL轻量版(一)——入门介绍


    一、概述

      1.概念对比:

    SQL:
    结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;
    差异原因:
    各种不同的数据库对SQL语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。

    PL/SQL:
    PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言

    T_SQL:
    T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL 的 DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。

    PLSQL developer:
    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。

      2.PL/SQL简介

      是Oracle对标准数据库语言SQL的过程化扩充,它将数据库技术和过程化程序设计语言联系起来(通俗的说,SQL与编程语言的混血儿),是一种应用开发语言,可使用循环,分支处理数据,将SQL的数据操纵功能与过程化语言数据处理功能结合起来.PL/SQL的使用,使SQL成为一种高级程序设计语言,支持高级语言的块操作,条件判断,循环语句,嵌套等,与数据库核心的数据类型集成,使SQL 的程序设计效率更高.
    ⒈1 PL/SQL的作用
    使用PL/SQL可以编写具有很多高级功能的程序,虽然通过多个SQL语句可能也能实现同样的功能,但是相比而言,PL/SQL具有更为明显的一些优点:
        ⒈能够使一组SQL语句的功能更具模块化程序特点;
        ⒉采用了过程性语言控制程序的结构;
        ⒊可以对程序中的错误进行自动处理,使程序能够在遇到错误的时候不会被中断;
        ⒋具有较好的可移植性,可以移植到另一个Oracle数据库中;
        ⒌集成在数据库中,调用更快;
        ⒍减少了网络的交互,有助于提高程序性能。
      通过多条SQL语句实现功能时,每条语句都需要在客户端和服务端传递,而且每条语句的执行结果也需要在网络中进行交互,占用了大量的网络带宽,消耗了大量网络传递的时间,而在网络中传输的那些结果,往往都是中间结果,而不是我们所关心的。
    而使用PL/SQL程序是因为程序代码存储在数据库中,程序的分析和执行完全在数据库内部进行,用户所需要做的就是在客户端发出调用PL/SQL的执行命令,数据库接收到执行命令后,在数据库内部完成整个PL/SQL程序的执行,并将最终的执行结果反馈给用户。在整个过程中网络里只传输了很少的数据,减少了网络传输占用的时间,所以整体程序的执行性能会有明显的提高。

    二、PL/SQL基本语法

      1.PL/SQL中可以使用的SQL关键字:

    INSERTUPDATEDELETESELECTINTOCOMMITROLLBACK,SAVEPOINT。
    -----------------------------------------------------------------------
    提示:在 PL/SQL 中只能用 SQL 语句中的 DML  部分,不能用 DDL  部分,如果要在 PL/SQL 中使用 DDL( 如
    CREATE table 等 ) 的话,只能以动态的方式来使用。

      2.PL/SQL块

    PL/SQL  块的结构如下:
    DECLARE
    /*  声明部分 :  在此声明 PL/SQL 用到的变量 , 类型及游标,以及局部的存储过程和函数 */
    BEGIN
    /* 执行部分 : 过程及 SQL  语句 ,  即程序的主要部分 */
    EXCEPTION
    /*  执行异常部分 :  错误处理 */
    END;

      // 执行部分必须存在

      Hello World入门示例:

        在plsql developer中,需要先设置一项,才能看到输出(注意没有分号):

    SQL> set serveroutput on
    SQL> 

        程序:

    DECLARE
      --声明变量
    BEGIN
      --程序真正执行部分(类似main方法)
      dbms_output.put_line('Hello World');
    --EXCEPTION
      --异常处理部分(when...then),没有异常处理,则无需写出
    END;

     // 提示 : 一般不要把变量名声明与表中字段名完全一样 , 如果这样可能得到不正确的结果 

       结果:

    Hello World
     
    PL/SQL procedure successfully completed

        查询员工工资示例:变量定义等后续将会介绍

    --查询id为100的员工的工资
    DECLARE
      --可以动态获取表字段的类型
      V_sal employees.salary%type;
      V_hdate DATE;
    BEGIN
      SELECT salary,hire_date INTO V_sal,V_hdate FROM employees WHERE employee_id = 100;
      --注意使用||作为连接符
      dbms_output.put_line(V_sal||','||V_hdate);
    END;

       3.变量命名建议

      

      4.变量类型

      

      

      更多完整数据类型介绍,参见http://ajita.iteye.com/blog/1424143

       运算符

        重点运算符:

          等于—— =

          赋值—— :=

        完整运算符:  

        

        

            

        

       5.记录类型  

        记录类型是把 逻辑相关 的数据作为一个单元存储起来 ,称作 PL/SQL RECORD 的域(FIELD) ,其作用是存放互不相同但逻辑相关的信息。

      通俗的说,就是“类”的概念。

      语法:

    TYPE record_type IS RECORD(
    Field1 type1 [NOT NULL] [:= exp1 ],
    Field2 type2 [NOT NULL] [:= exp2 ],
    . . . . . .
    Fieldn typen [NOT NULL] [:= expn ] ) ;

      示例:注意RECORD的写法(别写成RECODE了/笑哭)

    DECLARE
      --声明记录类型
      TYPE emp_record IS RECORD(
           V_sal NUMBER(10),
           V_hdate employees.hire_date%type);
      --声明记录类型对象
      V_emp_recode emp_record;
    BEGIN
      SELECT salary,hire_date INTO V_emp_recode FROM employees WHERE employee_id = 100;
      --注意使用||作为连接符
      dbms_output.put_line(V_emp_recode.V_sal||','||V_emp_recode.V_hdate);
    END;

       6.使用%使用对应类型      

        使用%TYPE    

          定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。

        示例:

    DECLARE
      --声明记录类型
      TYPE emp_record IS RECORD(
           V_sal NUMBER(10),
           V_hdate employees.hire_date%type);  

        使用%ROWTYPE
          PL/SQL 提供%ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致

        示例:

        

      7.PL/SQL嵌套表

        语法:

    TYPE type_name IS TABLE OF
    {datatype | {variable | table.column} % type | table%rowtype};

        更多嵌套表介绍与实例,参考http://blog.csdn.net/shangboerds/article/details/42386647

      8.注释

        支持两种注释: 

    --这是单行注释
    /*
     *这是多行注释
    */

       

  • 相关阅读:
    Python语言基础03-分支和循环结构
    Python语言基础01-初识Python
    李宏毅深度学习笔记08---Bert、ELMO、GPT
    李宏毅深度学习笔记07---Transformer
    李宏毅深度学习笔记06---word embedding(词嵌入也称词向量)
    李宏毅深度学习笔记05---RNN 循环神经网络02
    李宏毅深度学习笔记04---RNN 循环神经网络01
    李宏毅深度学习笔记03---CNN 卷积神经网络
    李宏毅深度学习笔记02---深度学习的发展历程、3大研究步骤、
    李宏毅深度学习笔记---课程介绍
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8228314.html
Copyright © 2020-2023  润新知