当前位置:文档之家› PLSQL 基础教程 V1.0

PLSQL 基础教程 V1.0

PLSQL 基础教程 V1.0
PLSQL 基础教程 V1.0

目录

一、常用的数据库对象 (2)

二、表和视图的使用 (2)

1.表的建立和删除 (2)

a.建表语句 (3)

三、数据的增删改查 (4)

1.增加数据 (4)

a.通过Insert into增加数据 (4)

2.查询数据 (5)

3.修改数据 (8)

4.删除数据 (11)

四、常用函数举例 (12)

1.日期和字符串转换函数 (12)

2.DECODE 转码 (12)

3.NVL 空值替换 (13)

4.SUBSTR 字符串截取函数 (13)

5.REPLACE 字符串替换函数 (13)

6.分组函数返回基于多个行的单一结果. (13)

五、常用查询技巧 (14)

1.Union 和union all的使用 (14)

文档说明:

本文档用于描述基于PLSQL的一些SQL基础知识及使用技巧,便于相关人员了解基础SQL的语法知识及简单的使用技巧,以便于在实际的工作中能更好的处理遇到的一些问题。

通过本文档的学习希望可以到达能使用PLSQL进行基础的查询、新增、修改和删除等等的基本操作。

文档的最后还会介绍一些多表连接及自查询、常用函数等等的相关知识,便于进一步提高相关的SQL使用技巧,方便更好的解决实际中遇到的问题。

一、常用的数据库对象

oracle数据中的数据对象有很多,常用的包括表、视图、序列同义词、函数、包等等,本文档并中不一一举例介绍,主要是介绍一下表和视图的创建语句及使用,同时介绍一些常用的系统内置函数及使用技巧。

二、表和视图的使用

表和视图都是oracle数据库中的对象,其中,表主要是用于存储数据的数据存储单元,可以对表进行新增、修改、删除、查询等等操作;而视图是基于表建立的数据库对象,主要是为了查询获取相关的数据,不能对视图进行新增、修改、删除、查询等等操作。(此处说的增删改查操作是针对表存储的数据而言的,并不是针对表和视图结构本身)

1.表的建立和删除

a.建表语句

Oracle de 建表语句使用create table 关键字,具体格式如下:

Create table + 所属用户.表名+(字段名字段类型)

其中,多个字段使用“,”分隔开,如下

上述脚本执行之后的效果就是在apps用户下建立了一个名称为cux_sql_learn的数据表,包含两个字段,Id 数据字类型的和CLASS_NAME 字符串类型。

b.删除表

删除表和不同的删除数据不同。

删除数据是删除表中存储的满足条件的数据,只是删除表中的全部或者部分数据,但是表的结构还是存储在数据库中的;删除表是直接删除数据库中的表对象,删除之后表及其中的数据都不会存在于数据库了,因此一般实际操作中需要谨慎,切记不要轻易删除表。

删除表的语法为:

Drop + Table + 表名

以上语句执行之后将会删除数据库中的表,在使用该表执行

操作,例如查询,就是报错

应为该表已经不存在与数据库中了,所以执行drop之后对该表的任何操作都会报错。

三、数据的增删改查

数据的增、删、改操作主要是针对表来进行的,具体介绍如下:(此处的示例均已CUX_SQL_LEARN表为例)

1.增加数据

a.通过Insert into增加数据

格式为

insert into

()

Values

();

column_list 为表中的列,values中的column_list 为对应

的列的插入数值,需要与列的定义的数据类型一致。

一下脚本是向CUX_SQL_LEARN表中插入一条数据

上述SQL脚本执行之后需要执行红框中的commit操作,使得修改得以生效。

然后通过查询即可查询新插入的数据:

2.查询数据

通过SELECT 关键字进行查询操作,具体格式为

select

from

where

order by

select 后跟需要选择的字段,多个字段使用”,”分隔开来from 后边跟表名,多个表名使用”,”分隔

where 后边的是过滤条件(可以使用and或者or 连接多个条

件,and表示都的意思,即所有条件都满足;or表示或者的意思,多个条件满足其一即可)

order by 后边跟需要按照那些字段来排序,多个字段使用”,”分隔,升序使用asc 关键字表示,降序使用desc表示

具体使用示例如下:

未加过滤条件的查询

添加过滤条件的查询(and 和 or):

说明:

上述查询中在表明后边的N 表示当前查询中的表CUX_SQL_LEARN 的别名,在SELECT后边可以使用表的别名来代替表名获取字段信息,相对于书写完整的表名,比较方便使用。

3.修改数据

修改数据有两种方式,update和select ... for update,其区别及优缺点如下:

Update 比较常用,通过脚本修改数据,适合批量修改

Select … for update 适用于手动修改数据,即先查询出满足条件的数据,然后手动逐条修改,修改的时候可以看到查询出来的数据及修改后的数据,但是效率较低;

两者的共同点是修改之后都需要提交事务操作,否则修改不生效。

具体示例如下:

原始测试数据:

将Id为3的数据的CLASS_NAME修改为“修改测试”UPDATE 方式修改:

update

set

where ;

update 后边跟的是需要修改的表的表名,set 后边是需要修

改的字段,多个字段使用”,”分隔开,where 后边是限定条件,即只修改满足条件的数据

SELECT .. FOR UPDATE 方式修改

select

from

where

for update;

select 后边是需要展示的和修改的字段

form 后边是需要修改的数据表

where 后边是需要修改的限定条件,只修改满足条件的数据即可

for update 添加了for update的select 才允许修改数据

查询出来数据之后,点击红框中的锁子标识的按钮解锁数据后才可以修改

修改后需要再做三个步骤:

1.) 点击绿色对钩,保存修改

2.) 点击锁标识按钮,锁定记录

3.) 提交事务,使得修改生效

修改后的数据:

4.删除数据

删除表中的数据通过使用 Delete 关键字来执行,格式为:

delete

where ;

delete 后边是需要删除数据的表

where 后边是需要限定的条件

delete 操作也是需要提交事务的

以上脚本的目的就是删除数据表CUX_SQL_LEARN中的Id为3 的记录数据

四、常用函数举例

1.日期和字符串转换函数

TO_DATE---转换字符串为日期型

格式∶TO_DATE(STRING[,’FORMAT’])

TO_CHAR---转换日期型或数值型为字符串。最重要的函数之一.其FORMAT格

式多种多样

格式∶TO_CHAR(DATE [,’FORMAT’])

比较常用的是日期格式:YYYY-MM-DD HH24:MI:SS 及年月日

时分秒

其中:Y代表年份,M代表月份,D代表天,HH代表小时,HH24

代表24小时制的小时数,MI代表分钟,SS代表秒,可以在实

际使用中根据需要组合使用

2.DECODE 转码

DECODE---IF语句的另一形式。将输入数值与参数列表比较,返回对应值

例∶ DECODE(VALUE,1,100,2,300,500)

当VALUE=1时返回100

当VALUE=2时返回300

否则返回500

3.NVL 空值替换

格式: NVL(value,替换值)

4.SUBSTR 字符串截取函数

START为正数时从左开始、为负数时从右开始

格式∶ SUBSTR(STRING , START [ , COUNT])

例∶ SUBSTR(‘WORDSTAR’ , 2 , 3)=’ ORD’

5.REPLACE 字符串替换函数

格式∶REPLACE(string , substring , replace_string) 例∶ REPLACE(‘this is a test’ , ‘this’ , ‘that an’)=’that an is a test’

分组函数

6.分组函数返回基于多个行的单一结果.

常用函数:

AVG---求平均值

COUNT---返回查询的行数

MAX---返回查询列的最大值

MIN---返回查询列的最小值

SUM---返回查询列的总和

MAX, MIN常与GROUP BY配套使用

此处以MIN和MAX为例说明,其余使用与此类似

五、常用查询技巧

1.Union 和union all的使用

Union 和union all主要是用于连接两个获取相同列的查询的,其中union 是去掉重复项的,union all 如果两个SQL 中包含重复记录则会全部展示出来

此处使用相同的一段SQL来看看union和union all 的区别

Union 使用示例:

可以看到其中union 下边拼接了一个Id为2的查询语句,但是结果中只有一个Id为2的记录,因为union会去掉结果中的重复记录

Union all 使用示例:

select2id, '测试2' class_name from dual

该结果中的两个Id为2的记录都展示出来了,可见得union all并没有进行去重操作。

相关主题
文本预览
相关文档 最新文档