plsql知识梳理-基础操作

来源:互联网 发布:js类数组对象转为数组 编辑:程序博客网 时间:2024/06/05 23:03

1 plsql介绍

      SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。

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

    PL/SQL程序都是以块(block)为基本单位,整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本 结构就是由这三部分组成。

2 基本操作

   2.1 建立表空间,临时表空间,用户,权限的设置。

         以管理员的身份登录

//创建 表空间

//要创建的文件不能先存在 但文件所需要的路径一定要先存在,即文件夹一定要先建立起来。

    create tablespace my_data  

    logging  

    datafile 'F:\myOracTableSpa\my_data.dbf'  

    size 5m  

    autoextend on  

    next 5m maxsize 30m  

    extent management local; 

 //创建 临时表空间

//要创建的文件不能先存在, 但文件所需要的路径一定要先存在,即文件夹一定要先建立起来。

    create temporary tablespace my_temp  

   tempfile 'F:\myOracTableSpa\my_temp.dbf'  

   size 5m  

   autoextend on  

   next 5m maxsize 30m  

   extent management local; 

//创建用户

   create user weiguo identified by liweiguo 

  default tablespace my_data  

 temporary tablespace my_temp; 

//创建用户权限

grant dba,connect to weiguo;

以 weiguo/liweiguo 登录weiguoDb数据库,进行一般的数据库操作。

//解释说明

1, AUTOEXTEND表明是否自动扩展. OFF | ON 表示自动扩展是否被关闭.NEXT 表示数据文件满了以后,扩展的大小.

2, Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。

3, ORACLE可以创建的表空间有三种类型:

      (1)TEMPORARY: 临时表空间,用于临时数据的存放;

          创建临时表空间的语法如下:

                  CREATE TEMPORARY TABLESPACE "myTempSpa"......

     (2)UNDO : 还原表空间. 用于存入重做日志文件.

         创建还原表空间的语法如下:

                CREATE UNDO TABLESPACE "myUndoSpa"......

     (3)用户表空间: 最重要,也是用于存放用户数据表空间

           可以直接写成: CREATE TABLESPACE "myTableSpa"......

4 , LOGGING 有 NOLOGGING 和 LOGGING 两个选项,

      NOLOGGING: 创建表空间时,不创建重做日志.

     LOGGING 和NOLOGGING正好相反, 就是在创建表空间时生成重做日志.

     用 NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数 据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选 择 NOLOGGING,以加快表空间的创建速度.

5, EXTENT MANAGEMENT LOCAL 存储区管理方法

        在Oracle 8i以前,可以有两种选择,一种是在字典中管理(DICTIONARY),另一种是本地管理(LOCAL ),从9I开始,只能是本地管理方式.因为LOCAL 管理方式有很多优点.

        在字典中管理(DICTIONARY): 将数据文件中的每一个存储单元做为一条记录,所以在做DM操作时,就会产生大量的对这个管理表的Delete和 Update操作.做大量数据管理时,将会产生很多的DM操作,严得的影响性能,同时,长时间对表数据的操作,会产生很多的磁盘碎片,这就是为什么要做磁 盘整理的原因.

       本地管理(LOCAL): 用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘. 同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。

  2.2  创建,修改,删除表结构

       //创建一个表结构

        create table NEWTABLE
          (
                ID            NUMBER  not null,
                NAME     VARCHAR2(20),
                AGE        VARCHAR2(20) default 23 not null,
                BIRTHDAY DATE
           )

     

       //修改一个表的结构的语法

            alter table tablename add (column datatype [default value][null/not null],….);

            alter table tablename modify (column datatype [default value][null/not null],….);

            alter table tablename drop (column);

            //添加一个列的信息

  alter table test1   add ( name varchar2(30) default '卫国' not null);

           //修改一个列的信息

  alter table test1  modify (name varchar2(16) default '你好');

           //删除一个列

  alter table test1  drop column name;

   // 删除表结构

           删除test1表如下:drop table test1;

2.3  创建,修改,删除表数据

   // 插入数据操作

       INSERT  INTO   表名(列名列表)   VALUES(值列表);

      insert  into newTable(id,name)values (11,'卫国');

//修改数据操作

     UPDATE  表名称 SET  列名称 = 新值 WHERE 列名称 = 某值

      update newTable set age=13 where salary='1234';

      update newTable set age=14,city='武汉' where salary='1234';

//删除数据操作

      delete from newtable where salary='111' ;  

      delete 删除数据 最小单位是以一条记录为单位的。就是一个查询删除的过程,不用 * 符号。

//解释说明

truncate,delete,drop

1, truncate table 命令将快速删除数据表中的任何记录,但保留数据表结构。这种快速删除和delete from 数据表的删除全部数据表记录不相同,delete 命令删除的数据将存储在系统回滚段中,需要的时候,数据能够回滚恢复,而truncate 命令删除的数据是不能够恢复的。 truncate 操作 同没有where 条件的delete 操作十分相似。

2,truncate 不触发任何delete 触发器,当表被truncate 后,这个表和索引所占用的空间会恢复到初始大小,而 delete 操作不会减少表或索引所占用的空间。

3,drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态。