plsql guide(基础详解)(2)

2019-04-01 23:16

UNIT2 数据查询

单元培训目标

?

理解Oracle数据查询的概念和作用; 掌握数据查询的基本方法;

通过函数、子查询的学习,能写一些较复杂的数据查询。

?

?

LESSON 1简单的数据查询

为了检索数据库中的数据,必须使用SQL建立相应的查询语句。本节从最基本的SELECT语句结构出发,讲述如何建立简单的数据查询。 基本结构:

SELECT [distinct] {*, column [alias], ……} FROM TABLE SELECT: 选择要查询的数据列 FROM: *:

数据列所在的表 选择所有的列

COLUMN:选择的列名 ALIAS:

给选定的列一个别名

例:SELECT * FROM s_dept

SELECT last_name, first_name, address FROM s_emp 算术表达式:

除了单一的获取数据库数据,也可以在检索的数据列中,可以做各种的算术表达式,以获取所需数据,常用算术运算符有:

加:+ 减:- 乘:* 除:/ 例:

SELECT last_name, salary * 12, base_salary + salary FROM tablename

3

Company Confidential - For internal use only

字符串处理

字符串可以做最简单的“加”法,即合并运算:|| 例:

SELECT column1||‘.‘||column2 ||‘$‘ FROM tablename

注:column1、column2必须位字符型数据列

SELECT first_name ||‘ ?|| last_name||‘,‘|| title ―Employees‖ FROM s_emp 空处理

在Oracle数据库中,常会用到一种空处理,对于数据列中的空值,要做特定处理,就会用到下面空处理函数:

NVL: 例:

NVL (start_date, sysdate) NVL (name, ?no name‘) NVL (base_salary, 2000)

在数据列的值为空时(并非为零),以真实的值进行替代处理

注:任何未被声明为NOT NULL或PRIMARY KEY的列都可包含空值,注意,空值就是空值,并不是值为零或空格,零是一个数值,空格是一个字符,而空值就是不具有任何类型的值。 例:

select first_name, nvl(base_salary, 2000) from s_emp; 消除重复行:

对于数据检索中的重复行,可用如下方法去掉:

SELECT DISTINCT column1, column2 … FROM TABLE 例:SELECT item_id from t_onhand

SELECT DISTINCT item_id FROM t_onhand 选择多列非重复:

例:SELECT DISTINCT warehoused_id, item_id FROM t_onhand 显示表结构:

对于一个并不熟悉的数据表,要检索其数据,必须知道它的结构和例的数据类型,否则,就无法在SELECT语句中,写出其数据列表达式,通过如下方法,可以显示该数

4

Company Confidential - For internal use only

据表的结构:

格式:

DESC[RIBE] tablename Oracle常用数据类型: number(p, s): varchar2(s): date: char(s): 例:

浮点类型,最大精度p,小数位s位 可变长字符类型,最大长度s位 日期型

定长字符类型,长度为s

SQL>desc t_item Name -------- item_id Null ------ Type ------- number varchar2(20) number, varchar2(100) number NOT NULL NOT NULL item_name base_price description class_id LESSON 2 SQL*Plus的使用

本节介绍Oracle最常用的一个工具SQL*Plus,在它的环境中,可以通过命令方式执行数据检索、PL/SQL块编辑和编译等等。 SQL*Plus的使用:

I.

文件命令

a) SAVE filename 把当前SQL缓冲区的内容存储在文件filename中 b) GET filename 把文件filename中的内容写入当前SQL缓冲区 c)

START filename 执行存储在filename中的内容

d) @ filename 执行存储在filename中的内容 e)

EDIT filename 打开文本编辑器,把当前SQL缓冲区的内容写入文件afiedt.buf

SPOOL filename 把查询的数据结果存储在filename中

f)

5

Company Confidential - For internal use only

g) EXIT 退出SQL*Plus 例:在SQL*Plus中敲入如下命令: SQL>@e:\\test\\demo.sql

SQL*Plus则自动运行存储在e:\\test\\demo.sql中的PL/SQL代码。 II.

文本编辑命令 a) A[PPEND] text

在当前行末尾添加文本text

b) C[HANGE]/old/new 在当前行中以new替代old文本 c)

CL[EAR]buff[ER]

清空缓冲区的所有文本 删除当前行

插入行

d) DEL e) f)

I[NPUT] text L[IST] n

显示第n行

以文本text代替第n行

g) N text III.

在SQL*Plus中,可以预定一些列的输出格式,这样,有利于数据的整齐性,同时,也可通过这些格式的制定,做一些简单的SQL*Plus报表,其格式输出如下: 格式:

COL[UMN] [{column|alias}[option ……]] a)

b) 参数选项:

CLE[AR]、FOR[MAT]format、HEA[DING]text、

JUST[TIFY]{align}、NOPRI[NT]、NUL[L]text、PRI[NT]、TRU[NCATED]、WEA[PPEND]、WOR[D_WRAPPED]

例:

COLUMN last_name HEADING ?employee|name‘ FORMAT A15 COLUMN salary JUSTIFY LEFT FORMAT $99,999.00 COLUMN start_date FORMAT A9 NULL ?Not hired‘

c)

字符和数值格式: 格式 An 描述 设置字符串或数据类型的显示长度 代表非零数值位 限定以零带头 举例 N/A 输出结果 N/A 9 0 999999 099999 1234 01234

6

Company Confidential - For internal use only

$ L . ,

数据控制输出

代表美元符号 代表本地货币符号 代表小数点位置 代表千位分割符 $9999 L9999 9999.99 9,999 $1234 L1234 1234.00 1,234 对于检索的数据集,可以使用ORDER BY语句指定其排序方式,即输出方式:

SELECT expr FROM table [WHERE condition(s) [ORDER BY expr ]; ] 在expr后可指定其排序方式,缺省为升序排列输出,添加参数desc则为降序排列输出。 例:

SELECT employee_id, first_name, last_name, salary FROM t_emp

ORDER BY first_name, salary 逻辑比较

Oracle常用的逻辑比较操作如下:

=、>=、<=、>、<

between…and…、in、like、is null and、or、not 例:

SELECT last_name, employee_id FROM t_emp

WHERE start_date>to_date(?2001-01-01‘,‘yyyy-mm-dd‘) And last_name like ?%H%‘

注意:在逻辑比较中,NOT的级别最高,其次是AND,最后是OR

负操作:(通过与not组合,产生非值)

NOT BEWTEEN …AND NOT IN (list) NOT LIKE

7

Company Confidential - For internal use only


plsql guide(基础详解)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小区高清数字监控系统技术方案书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: