文档库 最新最全的文档下载
当前位置:文档库 › PL_SQL

PL_SQL

select * from tab;

describe命令 描述基表的结构信息

describe dept

select *

from emp;

select empno,ename,job

from emp;

select * from dept

order by deptno desc;

逻辑运算符

= !=或<> > >= < <=

in

between value1 and value2

like

%

_

in null

not

no in,is not null

谓词in和not in

有哪些职员和分析员

select ename,job

from emp

where job in ('clerk','analyst');

select ename,job

from emp

where job not in ('clerk','analyst');

谓词between和not between

哪些雇员的工资在2000和3000之间

select ename,job,sal from emp

where sal between 2000 and 3000;

select ename,job,sal from emp

where sal not between 2000 and 3000;

谓词like,not like

select ename,deptno from emp

where ename like 'S%';

(以字母S开头)

select ename,deptno from emp

where ename like '%K';

(以K结尾)

select ename,deptno from emp

where ename like 'W___';

(以W开头,后面仅有三个字母)

select ename,job from emp

where job not like 'sales%';

(哪些雇员的工种名不以sales开头)

谓词is null,is not null

没有奖金的雇员(即commision为null)

select ename,job from emp

where comm is null;

select ename,job from emp

where comm is not null;

多条件查询

select ename,job

from emp

where deptno=20

and job!='clerk';

表达式

+ - * /

算术表达式

选择奖金高于其工资的5%的雇员

select ename,sal,comm,comm/sal from emp

where comm>.05*sal

order by comm/sal desc;

日期型数据的运算

add two days to 6-Mar-87

6-Mar-87 + 2 = 8-Mar-87

add two hours to 6-Mar-87

6-Mar-87 + 2/24 = 6-Mar-87 and 2hrs

add 15 seconds to 6-Mar-87

6-Mar-87 + 15/(24*60*60) = 6-Mar-87 and 15 secs

列名的别名

select ename employee from emp

where deptno=10;

(别名:employee)

select ename,sal,comm,comm/sal "C/S RATIO" from emp

where comm>.05*sal

order by comm/sal desc;

SQL命令的编辑

list or l 显示缓冲区的内容

list 4 显示当前SQL命令的第4行,并把第4行作为当前行,在该行号后面有个*。 change or c 用新的内容替换原来在一行中第一次出现内容

SQL>c/(...)/('analyst')/

input or i 增加一行或多行

append or a 在一行后追加内容

del 删除当前行 删除SQL缓冲区中的当前行

run 显示并运行SQL缓冲区中的命令

/ 运行SQL缓冲区中的命令

edit 把SQL缓冲区中的命令写到操作系统下的文本文件,

并调用操作系统提供的编辑器执行修改。

-------------

3 数据操纵

数据的插入

insert into dept

values (10,'accounting','new york');

insert into dept (dname,deptno)

values ('accounting',10);

从其它表中选择插入数据

insert into emp (empno,ename,deptno)

select id,name,department

from old_emp

where department in(10,20,30,40);

使用参数

insert into dept

values(&deptno,&dname,&loc);

执行时,SQL/PLUS对每个参数将有提示用户输入

参数对应日期型或字符型数据时,可在参数上加引号,输入时就可不用引号

insert into dept

values(&deptno,'&dname','&loc');

插入空值(NULL)

insert into dept

values(50,'education',null);

插入日期型数据

日期型数据缺省格式:DD-MON-YY

insert into emp

(empno,ename,hiredate)

values(7963,'stone','07-APR-87');

系统时间:SYSDATE

insert into emp

(empno,ename,hiredate)

values(7600,'kohn',SYSDATE);

数据更新

update emp

set job='manager'

where ename='martin';

update emp

set job='market rep'

where ename='salesman';

update emp

set deptno=40,job='market rep'

where job='salesman';

数据删除

delete emp

where empno=765;

更新的提交

commit

自动提交方式

set autocommit on

如果状态设为开,则使用inesrt,update,delete会立即提交。

更新取消

rollback

两次连续成功的commit之间的操作,称为一个事务

---------------

4 创建基表、视图

创建基表

create table dept

(deptno number(2),

dname char(14),

loc char(13));

数据字典会自动更新。

一个基表最多254列。

表名列名命名规则:

限制

第一个字符必须是字母,后面可任意(包括 $ # _ 但不能是逗号)。

名字不得超过30个字符。

唯一

某一用户的基表名必须唯一,不能是ORACLE的保留字,同一基表的列名互不相同。

使用双引号

如果表名用双引号括起来,则可不满足上述规则;

只有使用双引号,才能区别大、小写;

命名时使用了双引号,在以后的操作也必须使用双引号。

数据类型:

char(n) (不得超过240字符)

number(n,d)

date

long (最多65536字符)

raw (二进制原始数据)

空值处理

有时要求列值不能为空

create table dept

(deptno number(2) not null,

dname char(14),

loc char(13));

在基表中增加一列

alter table dept

add (headcnt number(3));

修改已有列属性

alter table dept

modify dname char(20);

注:只有当某列所有值都为空时,才能减小其列值宽度。

只有当某列所有值都为空时,才能改变其列值类型。

只有当某列所有值都为不空时,才能定义该列为not null。

例:

alter table dept modify (loc char(12));

alter table dept modify loc char(12);

alter table dept modify (dname char(13),loc char(12));

创建视图

create view managers as

select ename,job,sal

from emp

where job='manager';

为视图列名取别名

create view mydept

(person,title,salary)

as select ename,job,sal

from emp

where deptno=10;

with check option选项

使用with check option,保证当对视图插入或更新数据时,

该数据必须满足视图定义中select命令所指定的条件。

create view dept20 as

select ename,job,sal,deptno

from emp

where deptno=20

with check option;

在做下述操作时,会发生错误

update dept20

set deptno=30

where ename='ward';

基表、视图的拷贝

create table emp2

as select * from emp;

基表、视图的删除

drop table 表名

drop view 视图名

------------

5 SQL*PLUS报表功能

SQL*PLUS的一些基本格式命令

column deptno heading department

column ename heading name

column sal heading salary

column sal format $99,999.00

ttitle sample report for|hitech corp

btitle strictly confidential

break on deptno

compute sum of sal on deptno

run

表头和表尾

ttitle sample report for|hitech corp

btitle right strictly confidential

“|”表示换行,结尾不必加分号

选项有三种:left right center

使用TTITLE,系统将自动地在每页的顶部显示日期和页号。

TTITLET和BTITLE命令有效,直至重新设置表头或表尾,或退出SQL*PLUS。

下面命令使标题语句失效

TTITLE OFF

BTITLE OFF

列名

column命令定义用于显示列名

若名字为一个单词,不必加引号

column ename heading employee

column ename heading 'employee|name'

(|为换行)

取消栏定义

column ename clear

列的格式

column ename format A15

column sal format $9,999.99

column comm like sal

like子句,使得某一列的格式参照另一列格式,它拷贝列名及其格式

控制记录显示分组顺序

break on deptno

(不显示重复值)

select deptno,ename

from emp

order by deptno;

(ORDER BY子句用于控制BREAK)

显示为

10 clark

niller

20 smith

scott

30 allen

blake

每次只有一个BREAK命令起作用,但一次可以在多个列上使用BREAK命令 break on 列名1 on 列名2

记录分组

break on deptno skip 2

select deptno,ename

from emp

order by deptno;

每个deptno之间空两行

clear break(取消BREAK命令)

break on page(每次从一新页开始)

break on report(每次从一新报表开始)

break on page on report(联合使用)

分组计算

break on deptno skip 2

compute sum of sal on deptno

计算每个部门的工资总和

skip子句使部门之间的信息分隔开

其他计算命令

compute avg of sal on deptno(平均值) count 非空值的总数

MAX 最大值

MIN 最小值

STD 标准偏差

VAR 协方差

NUMBER 行数

使compute命令失效

一旦定义了COMPUTE,则一直有效,直到

关闭COMPUTE(clear compute)

SQL/PLUS环境命令

show 选项

(显示当前参数设置情况)

show all(显示全部参数)

设置参数

set 选项 值或开关

set autocommit on

SET命令包括

set autocommit {off|on|immediate}

(自动提交,OFF缺省)

set echo {off|on}

(命令文件执行,是否在终端上显示命令本身,OFF缺省)

set feedback {off|on}

(ON:查询结束时,给出结果,记录数的信息,缺省; OFF:无查询结果,记录数的信息)

set heading {off|on}

(ON:列的头标在报表上显示,缺省;OFF:不在报表上显示)

set linesize {n}

一行显示的最大字符数,缺省为80

set pagesize {n}

每页的行数,缺省是14

set pause {off|on|text}

(ON:当报表超过一页时,每显示一屏就暂停显示,等待用户打回车键,再接着显示; OFF:页与页不停顿,缺省;text:页与页停顿,并向用户提示信息)

SET BUFFER buffer

设置当头的命令缓冲区,通常情况下,SQL命令缓冲区已为当前缓冲区。

由于SQL命令缓冲区只能存放一条SQL命令,

所以可用其它缓冲区来存放SQL命令和SQL*PLUS命令。

经常用到的设置可放在login.sql文件中。

SET NULL

set null 'no data'

select ename,comm

from emp

where deptno=30;

把部门30中无佣金雇员的佣金显示为“NO DATA”。

set null是SQL*PLUS命令,用它来标识空值(NULL),可以设置为任意字符串。

存盘命令SAVE

save 文件名

input

1 select empno,ename,job

2 from emp

3 where job='analyst'

save research

目录中会增加一个research.sql文件。

编辑命令EDIT

edit

EDIT编辑当前缓冲区中的内容。

编辑一个文件

edit research

调入命令GET

get research

把磁盘上的文件内容调入缓冲区,并显示在屏幕上,文件名尾不必加.sql。

START命令

运行指定的文件

start research

输出命令SPOOL

spool tryfile

不仅可以使查询结果在屏幕上显示,还可以使结果存入文件

停止向文件输出

spool off

把查询结果在打印机上输出,先把它们存入一个文件中,

然后不必使用SPOOL OFF,而用:

spool out

SPOOL OUT关闭该文件并在系统缺省的打印机上输出

制作报表举例

edit tryfile

set echo off

set autocommit on

set pagesize 25

insert into emp (empno,ename,hiredate)

values(9999,'geiger',sysdate);

insert into emp (empno,ename,deptno)

values(3333,'samson',20);

spool new_emp

select * from emp

where deptno=20

or deptno is null

/

spool off

set autocommit off

用start命令执行这个文件

--------

字符型函数

initcap(ename);将ename中每个词的第一个字母改为大写。

如:jack smith--Jack Smith

length(ename);计算字符串的长度。

substr(job,1,4);

其它

lower

upper

least 取出字符串列表中按字母排序排在最前面的一个串

greatest 取出字符串列表中按字母排序排在最后的一个串

日期函数

add_month(hiredate,5) 在雇佣时间上加5个月

month_between(sysdate,hiredate) 计算雇佣时间与系统时间之间相差的月数 next_day(hiredate,'FRIDAY') 计算受雇日期之后的第一个星期五的日期

select ename,sal,next_day(sysdate,'FRIDAY') as_of

from emp

where deptno=20;

(as_of是别名)

如果不用to_char函数,日期在ORACLE中的缺省格式是'DD_MON_YY'

to_char(date,date picture)

select ename,to_char(hiredate,'Dy Mon dd,yyyy') hired

from emp

where deptno=10;

to_date(字符串,格式)

insert into emp(empno,ename,hiredate)

values(7999,'asms',to_date('070387083000','MMDDYYHHMISS'));

日期型数据的格式

dd 12

dy fri

day friday

ddspth twelfth

mon mar

month march

yy 87

yyyy 1987

Mar 12,1987 'Mon dd,yyyy'

MAR 12,1987 'MON dd,yyyy'

Thursday MARCH 12 'Day MONTH dd'

Mar 12 11:00am 'Mon dd hh:miam'

Thu,the twelfth 'Dy,"the"ddspth'

算术函数

least(v1,v2)

select ename,empno,mgr,least(empno,mgr) lownum from emp

where empno0

trunc(sal,0)

取sal的近似值(截断)

空值函数

nvl(v1,v2)

v1为列名,如果v1不是空值,nvl返回其列值。

v1为空值,返回v2的值。

聚组函数

select sum(comm)

from emp;

(返回一个汇总信息)

不能把sum用在select语句里除非用group by

字符型、日期型、数字型的聚组函数

min max count可用于任何数据类型

select min(ename)

from emp;

select min(hiredate)

from emp;

select min(sal)

from emp;

有多少人有工作?

select count(job)

from emp;

有多少种不同的工种?

select count(distinct job)

from emp;

count distinct 计算某一字段中不同的值的个数

其它聚组函数(只用于数字型数据)

avg 计算平均工资

select avg(sal)

from emp;

stddev 计算工资的平均差

select stddev(sal)

from emp;

sum 计算总工资

select sum(sal)

from emp;

group by子句

select deptno,sum(sal),avg(sal)

from emp

group by deptno;

按多个条件分组

每个部门的雇员数

select deptno,count(*)

from emp

group by deptno;

每个部门的每个工种的雇员数

select deptno,job,count(*)

from emp

group by deptno,job;

满足条件的分组

(where是针对select的,having是针对group by的)

哪些部门的工资总和超过了9000

select deptno,sum(sal)

from emp

group by deptno

having sum(sal)>9000;

select小结

除去职员,哪些部门的工资总和超过了8000

select deptno,sum(sal)

from emp

where job!='clerk'

group by deptno

having sum(sal)>8000

order by sum(sal);

---------

7 高级查询

等值联接

select empno,ename,job,emp.deptno,dname

from emp,dept

where emp.deptno=dept.deptno;

外联接

select ename,dept.deptno,loc

from emp,dept

where emp.deptno(+)=dept.deptno;

如果在dept.deptno中有的数值,在emp.deptno中没有(如deptno=40), 则作外联接时,结果中会产生一个空值

自联接:同一基表的不同行要做联接,可使用自联接

指出每个雇员的经理名字

select worker.ename,manager.ename manager

from emp worker,emp manager

where worker.mgr=manager.empno;

非等值联接

哪些雇员的工资属于第三级别

select ename,sal

from emp,salgrade

where grade=3

and sal between losal and hisal;

(基表salgrade:grade losal hisal)

集合运算

行的连接

集合运算把2个或多个查询结果合并为一个

union-set union

Rows of first query plus of second query, less duplicate rows

intersect-set intersection

Rows both queries have in common

minus-set difference

rows unique to the first query

介绍几个视图

account view

ename sal job

sales view

ename sal job

research view

ename sal job

union运算

返回一个查询结果中有但又不重要的行,它将基表或视图中的记录合并在一起

所有部门中有哪些雇员工资超过2000

对应列的数据类型必须相同

select ename,sal

from account

where sal>2000

union

select ename,sal

from research

where sal>2000

union

select ename,sal

from sales

where sal>2000;

intersect运算

返回查询结果中相同的部分

各个部门中有哪些相同的工种

select job

from account

intersect

select job

from research

intersect

select job

from sales;

minus运算

返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。 有哪些工种在财会部中有,而在销售部中没有?

select job from account

minus

select job from sales;

子查询

slect ename,deptno

from emp

where deptno=

(select deptno

from emp

where ename='smith');

多级子查询

select ename,job,sal

from emp

where job=

(select job

from emp

where ename='clark')

or sal>

(select sal

from emp

where ename='clark');

多个基表与子查询

select ename,job,sal

from emp,dept

where loc='new york'

and emp.deptno=dept.deptno

and sal>

(select sal

from emp

where ename='scott');

子查询中使用聚组函数

select ename,hiredate

from emp

where hiredate=

(select min(hiredate)

from emp);

------------

8 授权

系统权限

DBA 所有权限

RESOURCE 注册,创建新的基表

CONNECT,注册,查询

只有DBA才有权创建新的用户

grant connect to scott

identified by tiger;

DBA或用户自己可以改变用户口令

grant connect to scott

identified by leopard;

基表权限1

有两种方法获得对基表操作的权限

创建自己的基表

获得基表创建用户的许可

grant select,insert

on emp

to scott;

这些权限有

select insert update delete alter index

把所有权限授于他人

grant all on emp to scott;

同义词

select *

from scott.emp

创建同义词

为用户allen的EMP基表创建同义词employee create synonym employee

for allen.emp

基表权限2

你可以使其他用户有这样的权力,即其他用户可以把你的基表权限授予他人 grant all

on emp

to scott

with grant option;

收回权限

系统权限 只有被DBA收回

基表权限 随时都可以收回

revoke insert

on emp

from scott;

---------

9 索引

建立索引

create index emp_ename

on emp(ename);

删除索引

drop index emp_ename;

关于索引

只对较大的基表建立索引(至少50条记录)

建立索引之前插入数据

对一个基表可建立任意多个索引

一般是在作为主键的列上建立索引

建立索引之后,不影响SQL命令的执行

建立索引之后,ORACLE自动维护和使用索引

保证数据唯一性

提高执行速度的同时,索引还可以保证每个记录中的每个列值是不重复的。 create unique index emp_empno

on emp(empno);

--------

练习和答案

有没有工资比奖金多的雇员?如果有,按工资的降序排列。

如果有两个以上的雇员工资相同,按他们的名字排序。

select ename employee,sal salary,comm commision

经典plsql例子

setserveroutput on; --计算两个整数的和与这两个整数的差的商 declare aint:=100; bint:=200; c number; begin c:=(a+b)/(a-a); dbms_output.put_line(c); exception whenzero_divide then dbms_output.put_line('除数不能为零!'); end; / declare Num_sal number; --声明一个数值变量 Var_ename varchar2(20); --声明一个字符串变量 begin select ename,sal into Var_ename,Num_sal from scott.emp where empno=7369; --检索指定的值并保存在变量中 dbms_output.put_line(Var_ename||'的工资是'||Num_sal); --输出变量的值end; / --简单的插入一条语句 create or replace procedure pro1 is begin insert into scott.emp(empno,ename)values(1111,'1111'); end; / exec pro1; select * from scott.emp; --删除一条语句(传参) create procedure pro2(in_empno number) is begin delete from emp where empno=in_empno; end; /

--简单的插入一条语句(传参) create or replace procedure pro3(in_empnonumber,in_ename varchar2) is begin insert into scott.emp(empno,ename)values(in_empno,in_ename); end; / declare --定义变量的格式是变量名称变量的类型 v_enamevarchar2(8); begin select ename into v_ename from emp where empno=&empno; --将查询到的值存入v_ename变量中 --输出v_ename dbms_output.put_line('雇员名是'||v_ename); end; / --将上面的块改成过程 create procedure pro4(v_in_empno number) is v_enamevarchar2(8); begin selectename into v_ename from emp where empno=v_in_empno; dbms_output.put_line('雇员名是'||v_ename); end; / --编写一个过程,实现输入雇员名,新工资可以修改雇员的工资 create procedure pro5(in_ename in varchar2,in_newsal in number) is

plsql安装和配置连接教程(附一些常用设置)

plsql安装和配置连接教程 总体步骤:先安装oracle client端,然后安装plsql,配置tnsname.ora 一:安装oracle client端 下载地址: 1.加压文件,安装oracle客户端 打开安装包,找到setup.exe,开始安装。报错,具体原因和解决办法和安装oracle服务端方法一样。只是要多修改一个文件,在两个文件里添加同样的内容即可。 解决办法很简单,这是因为版本注册问题,默认oracle 11没有添加win10的注册信息,所以要讲win10的注册信息添加到oracle的配置文件里。打开oracle安装包,找到stage文件夹,找到cvu_prereq.xml文件,用记事本打开可以看到如下内容,在标签最后添加如下红色部分。

上面报错信息修改完成以后,重新setup.ext,下面界面选择“管理员”模式 安装以后在network\ADMIN文件夹中配置tnsnames.ora文件,如图:

如果client文件夹中没有network文件夹,说明安装client时安装类型没选对,这时也可以从instantclient包中,把network文件夹拷入client的目录下。 此时,基础环境已经配置完毕。 二:安装plsqldevlop 安装完毕后,不要输入账号密码先进入工具 点tools—preferences—输入client端的目录地址和oci.dll文件的地址 三:配置系统环境 右击我的电脑—属性—高级系统设置—环境变量 编辑Path,添加client端地址

PLSQL+Developer工具的使用(非常详细)

PLSQL Developer工具的使用 PLSQL Developer的安装十分简单,先安装PL.SQL.Developer.exe文件,然后安装chinese.exe文件进行汉化。安装成功后在桌面点击PLSQL Developer的快捷方式进入登录页面(如图1)。 图1 输入用户名和口令,选择好要连接的数据库,点击“确定”登录成功(如图2)。 图2 在成功登录后会进入到PLSQL Developer的操作界面(如图3)。

图3 用户可以在左边下拉菜单中选择“我的对象”,然后点击“Table”可以显示出项目所涉 及的数据库中所有表(如图4)。 新建表,点击Table文件夹,然后点击鼠标右键在列表中选择“新建”选项进入到创建

新表的页面(如图5),用户可以根据自己的需要来创建新表,但一定要遵循Oracle规范 信息填写完毕后点击“应用”按钮创建成功。 图5 修改表结构,可以选中要该表后点击鼠标右键在列表中选择“编辑”选项进入到修改表结构的页面(如图6),这里显示的都是该表的结构信息,如要进行修改操作请根据实际情况慎重修改,修改后点击“应用”按钮提交修改内容。 图6 修改表名,可以选中要该表后点击鼠标右键在列表中选择“重新命名”选项进入到重新

命名的页面(如图7),这里需要注意的是表名起的一定要有意义。 图7 查询表结构,可以选中要该表后点击鼠标右键在列表中选择“查看”选项进入到查看表结构的页面(如图8)。 图8 删除表,可以选中要该表后点击鼠标右键在列表中选择“删掉表”选项就可以删除已创

建的表了。 查询表中存储的数据,可以选中要该表后点击鼠标右键在列表中选择“查询数据”选项进入到查询结果页面(如图9),这里显示了所有已录入的数据。 图9 编辑数据,可以选中要该表后点击鼠标右键在列表中选择“编辑数据”选项进入到查询结果页面(如图10),这里显示了所有已录入的数据,用户可以对想要编辑的数据进行操作。 图10 修改数据,用户可以在页面中直接对想要修改的数据进行操作,修改后点击页面中的

plsql常用语句

说明:复制表(只复制结构,源表名:a 新表名:b) SQL: select * into b from a where 1<>1 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from b; 说明:显示文章、提交人和最后回复时间 SQL: select a.title,https://www.wendangku.net/doc/f57869387.html,ername,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b 说明:外连接查询(表名1:a 表名2:b) SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5 说明:两张关联表,删除主表中已经在副表中没有的信息 SQL: delete from info where not exists ( select * from infobz where info.infid=infobz.infid ) 说明:-- SQL: SELECT A.NUM, https://www.wendangku.net/doc/f57869387.html,, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1, (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦ '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X.NUM = Y.NUM (+) AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B WHERE A.NUM = B.NUM 说明:-- SQL: select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩 说明:从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源) SQL: SELECT https://www.wendangku.net/doc/f57869387.html,erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear, 说明:四表联查问题: SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 说明:得到表中最小的未使用的ID号 SQL:

PLSQLDev简介

PL/SQL Developer 5.0 User’s Guide 30 天试用版 November 2002 https://www.wendangku.net/doc/f57869387.html,/plsqldevorder.html

目录 目录2 1.简介 (3) 2.安装和连接数据库 (4) 3.编写PL/SQL程序(EDITOR窗口) (5) 3.1创建PL/SQL程序 (5) 3.2保存PL/SQL程序 (5) 3.3修改PL/SQL程序 (6) 3.4编译PL/SQL程序 (6) 4.调试 PL/SQL程序(TEST 窗口) (7) 5.数据库对象浏览器(TOOLS菜单的 BROWER) (9) 5.1查找、定位、过滤查看数据库对象 (9) 5.2查看数据库对象属性和创建脚本 (9) 6.SQL WINDOW(FILE菜单的NEW---->SQL WINDOW ) (10) https://www.wendangku.net/doc/f57869387.html,MAND WINDOW(FILE菜单的NEW----> COMMAND WINDOW ) (13) S UPPORTED COMMANDS (14) 8.EXPLAIN PLAN WINDOW和调整SQL语句 (16) 9.创建和编辑非PL/SQL程序的数据库对象 (18) 10.相关工具性功能(TOOLS) (19) 10.1P REFERENCES (19) 10.2编译失效对象(C OMPILE I NVALID O BJECTS) (19) 10.3比较用户对象(C OMPARE U SER O BJECTS) (20) 10.4事件监控(E VENT M ONITOR) (21) 10.5监控S ESSIONS (21) 10.6查询构建器(Q UERY B UILDER) (22) 11.模版编辑(TEMPLATES) (23) 12.帮助系统(HELP SYSTEMS) (24) 13.自定义功能(CUSTOMIZATION) (26)

PLSQL语法介绍(有例子带注释)

PLSQL语法介绍(有例子带注释) 关键字: oracle/plsql/游标/存储过程/触发器 --最简单的语句块 set serveroutput on; //用于输出显示 begin dbms_output.put_line('HeloWorld'); end; --一个简单的PL/SQL语句块 declare //声明变量,必须 v_ 开头 v_name varchar2(20); begin v_name := 'myname'; //变量的赋值格式 dbms_output.put_line(v_name); end; --语句块的组成 declare v_num number := 0; begin v_num := 2/v_num; dbms_output.put_line(v_num); exception //如果没有这部分,当出现异常的时候,就执行过不去 when others then dbms_output.put_line('error'); end; --变量声明的规则 1): 变量名不能够使用保留字,如from、select等 2): 第一个字符必须是字母 3): 变量名最多包含30个字符 4): 不要与数据库的表或者列同名 5): 每一行只能声明一个变量 --常用变量类型 1): binary_integer: 整数,主要用来计数而不是用来表示字段类型 2): number: 数字类型 3): char: 定长字符串 4): varchar2: 变长字符串 5): date: 日期 6): long: 长字符串,最长2GB 7): boolean: 布尔类型,可以取值为 true、false和null --变量声明,可以使用 %type 属性 declare v_empno number(4); v_empno2 emp.empno%type;//表示该变量的类型和emp表中的empno字

PLSQL安装及配置

PL\SQL Developer的安装和使用一、软件安装 1、准备安装。 安装文件总共有三个,如下图所示: 2、安装PL\SQL Developer的软件。 双击安装文件plsqldev803.exe文件,进入安装阶段: 点击“确定”。 点击“I Agree”。 选择安装路径,点击“Next”。

选择“Create PL\SQL Developer shortcuts”,“Create shortcut on DeskTop”,点击“Next”。 选择“Template files”,“Keyword files”,点击“Finish”。 进入安装过程,会看到安装的进度条,等到安装完成,点击“Close”。

PL\SQL Developer安装完成。 3、安装中文包 双击打开chinese.exe中文包的安装文件,点击“确定”。 选择安装目录,点击右箭头,进入到下一步操作。 进行选项的设置,保持默认即可,点击绿色的钩,进入到安装过程。

软件安装以后,点击灰色的钩,安装完成。 4、注册软件 第一次使用PL\SQL Developer软件是需要注册的,打开”PLSQL注册码.txt”,将相应的内容填入到对应的注册界面,点击“注册”即可。

二、PL\SQL Developer的使用 (在使用PL\SQL Developer之前要保证oracle的远程连接数据库的配置是正确的。 如果配置正确,继续向下看; 如果oracle的连接远程数据库还没有配置,请跳过这节看后面“三、Oracle Net 配置”。) 1、进入系统。双击PL\SQL Developer图标,出现Oracle登陆界面: 填入正确的用户名和密码,选择好对应的数据库,并选择用户的角色,点击“确定”,即可登录成功,进入如下操作界面: 2、PL\SQL操作。下面就最常用的脚本执行操作进行介绍。 1)新建“SQL窗口”。方式有两种:一种是直接点击“文件”→”新建”→”SQL窗口”;

PLSQL查询语句

一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是

PLSQL使用详细介绍

PL/SQL Developer使用指南 一、安装 PL/SQL Developer不需要执行安装程序,只要从其他机上copy一个来就可以使用。 二、登录 在使用PL/SQL Developer之前,首先需要在本机上配置数据库客户端(在oracle自带工具Net8Assistant中可配置)。配置完成后,在以下窗口中敲入用户名和密码就可进入PL/SQL Developer了。 进入PL/SQL Developer以后,会见到以下窗口: 在这里,可以对数据库中的任何对象(包括函数、存储过程、包、表、触发器等等)进行编辑、修改、运行等。(要视乎该用户的权限而定)。 如果用户要重新登录另一数据库,则可以按下“”重新输入本地数据库标识和用户及密码重新登录。

三、修改对象或编译存储过程 我们以存储过程为例: 双击菜单项“procedures”,按右键即可选择新建存储过程(new)或是修改存储过程(edit)等等。选择完毕后则用oracle的PL/SQL语句对存储过程进行编辑,在编辑完以后 按下可以对它进行编译,如果编译未通过,会在窗口中出现错误提示(如下图所示), 用户可根据提示进行修改和再次编译。 当完全编译通过后,用户可单击存储过程并按右键,选择“test”(执行存储过程),出现以下窗口:

在执行前,首先按“”进行调试,然后按“”执行该存储过程;如果用户在执行过程 中发生错误异常退出了,PL/SQL Developer会在窗口中显示错误,并提示退出。在发生错误后,用户可以选择在存储过程中添加“DBMS_OUTPUT.put_line(字符串)”语句来进行错 误跟踪或是通过一步步执行存储过程(按)来查看执行过程中数据的变化从而进行纠错。 除了存储过程之外,还可以通过PL/SQL Developer对数据库中的其他对象进行修改和授权,情况和以上存储过程的修改大同小异。 四、SQL语句的执行 如果用户要在oracle中执行sql语句,可以点击工具栏上的“new”()中的“SQL window”,这时会弹出一个sql语句的输入窗口,用户就可以在此窗口中敲入sql语句了。并按“F8”或是“”执行,执行后的结果会在下面显示出来,但默认情况下一次只能显 示一页,可以按“”显示下一页;如果用户需要显示全部,则可以按下“”;而按下 “”则可以输入查询条件。如下面两张图所示:

PLSQL怎么执行SQL语句

通过f5查看到的执行计划,其实是pl/sql developer工具内部执行查询 plan_table表然后格式化的结果。 select * from plan_table where statement_id=...。其中 description列描述当前的数据库操作, object owner列表示对象所属用户, object name表示操作的对象, cost列表示当前操作的代价(消耗),这个列基本上就是评价sql语句的优劣,cardinality列表示操作影响的行数, bytes列表示字节数篇二:plsqldeveloper工具使用教程 plsql入门 pl/sql的概述 pl/sql的优势 pl/sql是一种块结构的语言,允许你将业务逻辑封装在一起,这是到目前为止使用pl/sql的最大优势 pl/sql是在服务器上运行,可以与数据库和sql引擎直接进行交互, pl/sql是什么? (procedural language/sql) 是oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用列外处理各种错误,这样使得它的功能变得更加强大。 特性: 减少java程序的复杂性 一.过程,函数,触发器是pl/sql编写的 二.过程、函数、触发器是在oracle中 三. pl/sql是非常强大的数据库过程语言 四.过程,函数可以再java程序中调用 为什么学? a) 提高应用程序的运行性能 b) 模块化的设计思想[分页的过程,订单的过程,转账的过程] c) 减少网络传输量(传统的方法,用sql语句传输!现在就只需要调用存储过程) d) 提高安全性(传统sql 可以看到表名字段等…) 不好: 移植性不好,(你写好的存储过程,函数等当我们要换数据库时,这些东西就没用了)开发工具: 1. sqlplus 开发工具 是oracle公司提供的一个工具,这个因为我们在以前介绍过: 2. pl/sql developer开发工具 pl/sql developer是用于开发pl/sql块的集成开发环境(ide) 它是一个独立的产品,而不是oracle的一个附带品, createprocedure sp_pro1//存储过程名字 is begin ---执行部分 insert into mytest values(‘’,’’); end; / 查看错误信息

PLSQL使用方法

1.1PLSQl远程连接oracle数据库 1.1.1配置tnsnames.ora 路径:X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client\tnsnames.ora tnsnames.ora配置: orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) ) (CONNECT_DATA = (SID = orcl) ) ) 其中HOST为主机IP地址,红色字体处 PORT为oracle开放端口号 SERVICE_NAME为连接数据库名字,蓝色字体处 *此配置参数可以配置多个,也就是可以配置多个连接字符串(全局名称) 1.1.2添加连接环境变量 变量名:TNS_ADMIN 变量值:X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client 1.1.3添加ORACLE的语言环境变量: 变量名:NLS_LANG 变量值:AMERICAN_AMERICA.ZHS16GBK(设置ORACLE的语言) 重新连接,即可正常显示中文。 如果想转换为UTF8字符集,可以赋予"NLS_LANG"为"AMERICAN_AMERICA.UTF8",其他编码同上

1.1.4下载并安装PL.SQL.Developer,配置应用: 配置tools->preferences->connection PLSQL 设置 Oracle Home=X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client OCI library=X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client\oci.dll 1.1.5重启plsql 再次打开plsql则会在database中有oracledata选项输入用户名密码就可以登陆。 1.2导入基础数据 1.2.1输入用户名密码登录plsql

PLSQL界面中英文对照

PL/SQL界面中英文对照File:文件 New 新建 Program Window 程序窗口 Blank 空白 Function 函数 Java source Java源代码 Package 包 Package body 主体包 Package specification 包说明 Procedure 过程 Trigger 触发器 Type 类型 Type body 类型主体 Type specification 类型说明 Test Window 测试窗口 SQL Window SQL窗口 Report Window 报告窗口 Command Window 命令窗口 Explain Plan Window 解释计划窗口 Diagram Window 图标窗口 View 视图

Materialized view 物化窗口 Table 表 Sequence 序列 Synonym 同义词 Library 库 Directory 目录 Job 作业 Queue 队列 Queue table 队列表 User 用户 Role 角色 Profile 概要文件 Database link 数据库连接Open 打开 Program File 程序文件 Test Script 测试脚本 SQL Script SQL脚本 Report File 报告文件 Command File 命令文件 Diagram File 图标文件Reopen 重新打开

Save 保存 Save as 另存为 Save all 全部保存 E-mail 电子邮件 Close 关闭 Close All 全部关闭 Print 打印 Print Setup 打印设置 Page Setup 页面设置 New Instance 新建实例 Authorization 授权 Exit 退出 VCS: Open Project 打开工程 Close Projcet 关闭工程 Check Out 签出 Check in 签入 Undo Check Out 撤销签出 Get 获取 Add 添加 Remove 移除 Properties 属性

plsql使用技巧详解

plsql使用技巧详解 1.记住登陆密码 为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码;设置方法: PL/SQL Developer 7.1.2 ->tools->Preferences->Oracle->Logon History ,“Store history”是默认勾选的,勾上“Store with password”即可,重新登录在输入一次密码则记住了; 2.登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables 目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的。 设置方法: Tools菜单 --> Brower Filters,会打开Brower Folders的定单窗口,把“My Objects”设为默认即可。 Tools菜单--Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短。 3.类SQL PLUS窗口 File->New ->Command Window 这个类似于oracle的客户端工具sql plus,但用比它好用多了; 4.关键字自动大写 Tools->Preferences->Editor,将Keyword case选择Uppercase。这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写。这样阅读代码比较容易,且保持良好得编码风格,同理,在 Tools->Preferences->Code Assistant里可以设置数据库对象的大写、小写,首字母大写等。 5.查看执行计划 选中需要分析的SQL语句,然后点击工具栏的Explain plan按钮(即执行计划),或者直接按F5;这个主要用于分析SQL语句执行效率,分析表的结构,便于为sql调优提供直观依据。 6.使用自定义快捷键 PL/SQL Developer也可以像其他IDE那样使用自定义快捷键提高编写代码效率,节省时间。 如我们平时在sql窗口中使用最频繁的 select * from 我们就可以设置一个快捷键来简化select * from的输入。 1)。建立一个文本文件shortcuts.txt,并写入如下内容: s = SELECT * FROM sc = SELECT count(*) FROM 复制代码另存到PL/SQL Developer的安装路径下的~/PlugIns目录下 2)。Tools-->Preferences-->User Interface-->Editor-->AutoReplace,选中Enable复选框,然后浏览文件选中之前创建的shortcuts.txt,点击Apply 3)。重启PL/SQL Developer,在sql窗口中输入s+空格,sc+空格做测试 7.执行单条SQL语句 PL/SQL Developer 7.1.2 -->tools->Preferences-->Window types ,勾上“AutoSelect Statement”。在使用 PL/SQL Developer的SQL Window时,按F8键,PL/SQL Developer默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句。 8.PL/SQL Beautifier(PL/SQL 美化器)

PLSQLdeveloper工具使用教程汇总

PLSQL入门 PL/SQL的概述 PL/SQL的优势 PL/SQL是一种块结构的语言,允许你将业务逻辑封装在一起,这是到目前为止使用PL/SQL 的最大优势 PL/SQL是在服务器上运行,可以与数据库和SQL引擎直接进行交互, PL/SQL是什么? (procedural language/sql) 是oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用列外处理各种错误,这样使得它的功能变得更加强大。 特性: 减少java程序的复杂性 一.过程,函数,触发器是pL/SQL编写的 二.过程、函数、触发器是在oracle中 三.pL/SQL是非常强大的数据库过程语言 四.过程,函数可以再java程序中调用 为什么学? a)提高应用程序的运行性能 b)模块化的设计思想[分页的过程,订单的过程,转账的过程] c)减少网络传输量(传统的方法,用sql语句传输!现在就只需要调用存储过程) d)提高安全性(传统sql 可以看到表名字段等…) 不好: 移植性不好,(你写好的存储过程,函数等当我们要换数据库时,这些东西就没用了) 开发工具: 1.Sqlplus 开发工具 是oracle公司提供的一个工具,这个因为我们在以前介绍过: 2.Pl/SQL developer开发工具 Pl/sql developer是用于开发pl/sql块的集成开发环境(ide) 它是一个独立的产品,而不是oracle的一个附带品, Create procedure sp_pro1//存储过程名字is Begin ---执行部分 Insert into mytest values(‘’,’’);

PLSQL Developer使用手册

PL/SQL Developer使用手册

文档目录 文档控制 ................................................................................................. 错误!未定义书签。文档内容 .. (1) PLSQL Developer的日常使用 (2) 安装 (2) 启动 / 登录 (3) SQL窗口 (3) 命令窗口 (7) 表定义编辑器 (8) 编写程序 (10) 美化SQL语句及程序 (14)

文档内容 1. PLSQL Developer的日常使用

PLSQL Developer的日常使用 PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境 (IDE),使用 PL/SQL Developer 你能方便地创建你的客户/服务器应用程序的服务器部 分。日常使用中,可以用来完成如下工作: ●查询数据 ●使用文本编辑器写程序单元(过程、触发器等等)。 ●执行SQL脚本创建表或视图等。 ●修改表结构或数据。 ●查找问题的原因并纠正错误。 ●使用解释计划工具或tkprof工具优化你的SQL语句。 ●使用PL/SQL Beautifier功能美化SQL语句。 安装 1.系统需求 PL/SQL Developer 是 32 位的 Windows 应用程序,因此你的工作站上必须至少安 装了 Windows 95 或 Windows NT 4。要连接到 Oracle 数据库,PL/SQL Developer 需要 32 位版本的 SQL*Net、 Net 8、 Net 9 或 Net 10。 2.本地安装 要在本地工作站上安装 PL/SQL Developer,运行来自于安装媒体的 setup 程序, 然后下面的对话框将会显示出来: 你可以为程序文件选择一个目的目录、一个开始菜单的文件夹、一个 PL/SQL Developer 在桌面上的快捷方式的位置以及安装选项,然后根据向导按Next按钮, 这样程序文件就会被复制,快捷方式也会被创建。 3.卸载PL/SQL Developer 若因为某些原因你希望卸载 PL/SQL Developer,你可以使用控制面版里的添加/ 移除程序来移除它。

PLSQL_Developer安装使用手册[全]

北京中讯爱乐科技有限公司PLSQL Developer安装使用手册 v1.0.0 2010年4月6日

修订历史

目录 1.PL/SQL Developer介绍 (4) 2.安装PLSQL Developer (4) 3.Oracle10g客户端的安装 (6) 4.Oracle Net Configuration Assistant的使用 (10) 5.配置Oracle数据库连接 (12) 6.使用PLSQL Developer (13) 6.1.连接Oracle数据库 (13) 6.2.执行SQL语句 (14) 6.2.1.在SQL窗口中执行 (14) 6.2.2.在命令行窗口中执行 (18) 6.3.创建数据库中的对象 (20) 6.3.1.在SQL窗口中创建 (20) 6.3.2.在命令行窗口中创建 (20) 6.3.3.用模板创建 (20) 6.4.查看数据库中的对象 (24) 6.4.1.从SQL窗口中打开查看窗口 (24) 6.4.2.从对象浏览器中打开查看窗口 (25) 6.5.调试函数/存储过程 (26) 7.优化SQL语句 (31) 7.1.使用解释计划窗口 (31)

1.PL/SQL Developer介绍 PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境(IDE),使用 PL/SQL Developer 可以方便地创建你的客户/服务器应用程序的服务器部分。主要的功能有: ·使用文本编辑器写程序单元(过程、触发器等等)。 ·使用 Oracle SQL*Plus 编译源文件。 ·如果有编译错误,你必须找出它位于源文件何处,纠正它,转回到 SQL*Plus 重新编译它,然后再找下一处错误。 ·使用 SQL*Plus 或你的客户端应用程序测试程序单元。 ·使用解释计划工具或 tkprof 工具优化你的 SQL 语句。 ·使用 SQL*Plus 或另外的工具在你的数据库里查看或修改其它对象和数据。 这些任务 - 编辑、编译、纠正、测试、调试、优化和查询,在不离开 PL/SQL Developer IDE 的情况下都能被完成。 2.安装PLSQL Developer 1.下载地址:ftp://219.137.226.174/office/ 2.运行安装程序,出现如下界面: 3.点Next,出现以下界面:

PLSQL函数

plsql常用方法 在SQLPLUS下,实现中-英字符集转换 alter session set nls_language='AMERICAN'; alter session set nls_language='SIMPLIFIED CHINESE'; 主要知识点: 一、有关表的操作 1)建表 create table test as select * from dept; --从已知表复制数据和结构 create table test as select * from dept where 1=2; --从已知表复制结构但不包括数据 2)插入数据: insert into test select * from dept; 二、运算符 算术运算符:+ - * / 可以在select 语句中使用 连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in 逻辑运算符:not and or 集合运算符:intersect ,union,union all,minus 要求:对应集合的列数和数据类型相同 查询中不能包含long 列 列的标签是第一个集合的标签 使用order by时,必须使用位置序号,不能使用列名 例:集合运算符的使用: intersect ,union,union all,minus select * from emp intersect select * from emp where deptno=10 ; select * from emp minus select * from emp where deptno=10; select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行 select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复行三,常用ORACLE 函数 sysdate为系统日期dual为虚表 一)日期函数[重点掌握前四个日期函数] 1,add_months[返回日期加(减)指定月份后(前)的日期] select sysdate S1,add_months(sysdate,10) S2, add_months(sysdate,5) S3 from dual; 2,last_day [返回该月最后一天的日期] select last_day(sysdate) from dual; 3,months_between[返回日期之间的月份数] select sysdate S1, months_between('1-4月-04',sysdate) S2, months_between('1-4月-04','1-2月-04') S3 from dual 4,next_day(d,day): 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日 select sysdate S1,next_day(sysdate,1) S2, next_day(sysdate,'星期日') S3 FROM DUAL 5,round[舍入到最接近的日期](day:舍入到最接近的星期日) select sysdate S1,

ORACLE 和PLSQL总结

Oracle之PLSQL总结 基本数据类型变量 1. 基本数据类型Number 数字型Int 整数型Pls_integer 整数型,产生溢出时出现错误Binary_integer 整数型,表示带符号的整数Char 定长字符型,最大255个字符Varchar2 变长字符型,最大2000个字符Long 变长字符型,最长2GB Date 日期型Boolean 布尔型(TRUE、FALSE、NULL三者取一)在PL/SQL中使用的数据类型和Oracle 数据库中使用的数据类型,有的含义是完全一致的,有的是有不同的含义的。 2. 基本数据类型变量的定义方法变量名类型标识符[not null]:= 值; declare age number(3):=26; --长度为3,初始值为 26 begin commit; end; 其中,定义常量的语法格式:常量名constant 类型标识符[not null]:=值; declare pi constant number(9):=3.1415926;--为pi的数字型常量,长度为9,初始值为3.1415926 begin commit; end; 表达式 变量、常量经常需要组成各种表达式来进行运算,下面介绍在PL/SQL中常见表达式的运算规则。 1. 数值表达式PL/SQL程序中的数值表达式是由数值型常数、变量、函数和算术运算符组成的,可以使用的算术运算符包括+(加法)、-(减法)、*(乘法)、/(除法 )和**(乘方)等。命令窗口中执行下列PL/SQL程序,该程序定义了名为result的整数型变量,计算的是10+3*4-20+5**2的值,理论结果应该是27。――――――――――――――――――――――――――――――――――――― set serveroutput on Declare result integer; begin result:=10+3*4-20+5**2; dbms_output.put_line('运算结果是: '||to_char(result)); end; ――――――――――――――――――――――――――――――――――――― dbms_output.put_line函数输出只能是字符串,因此利用to_char函数将数值型结果转换为字符型。 2. 字符表达式字符表达式由字符型常数、变量、函数和字符运算符组成,唯一可以使用的字符运算符就是连接运算符“||”。 3. 关系表达式关系表达式由字符表达式或数值表达式与关系运算符组成,可以使用的关系运算符包括以下9种。< 小于> 大于= 等于(不是赋值运算符:=)like 类似于in 在……之中<= 小于等于>= 大于等于!= 不等于或<> between 在……之间关系型表达式运算符两边的表达式的数据类型必须一致。 4. 逻辑表达式逻辑表达式由逻辑常数、变量、函数和逻辑运算符组成,常见的逻辑运算符包括以下3种。NOT:逻辑非OR:逻辑或AND:逻辑与运算的优先次序为NOT、AND和OR。 PLSQL函数 PL/SQL程序中提供了很多函数供扩展功能,除了标准SQL语言的函数可以使用外,最常见的数据类型转换函数有以下3个。To_char:将其他类型数据转换为字符型。To_date:将其他类型数据转换为日期型。To_number:将其他类型数据转换为数值型。继续追加中..

相关文档