您的位置:首页 > 数据库

plsql知识梳理-基础操作

2011-09-02 16:18 316 查看
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状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: