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状态。
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状态。
相关文章推荐
- C#基础知识梳理系列十二:终结操作及资源清理
- Java软件开发基础知识梳理之(11)------Java中的GC操作及相关概念
- Java软件开发基础知识梳理之(3)------JDCB操作数据库性能优化策略
- JS基础知识梳理---Date(),常用操作
- shell基础知识梳理二
- python基础知识-通用序列操作
- 电商之梳理servlet知识---javaweb基础
- Hive基础知识梳理
- 最近想写一些基础知识梳理方面的博文
- PLSQL基础知识点总结 (2)
- C#基础知识梳理系列十三:线程之美
- WCF学习笔记之基础知识梳理(1)
- python基础知识-字符串的通用操作 分类: python 2012-11-29 19:57 252人阅读 评论(0) 收藏
- [C# 基础知识梳理系列]专题二:委托的本质论
- .NET简谈互操作(三:基础知识之DllImport特性)
- C#基础知识梳理系列索引
- 转:C#基础知识梳理
- C#基础知识梳理系列十五:反射
- Java软件开发基础知识梳理之(8)------Hibernate并发控制
- JAVA中的时间操作知识梳理