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
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安装和配置连接教程 总体步骤:先安装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的安装十分简单,先安装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 修改数据,用户可以在页面中直接对想要修改的数据进行操作,修改后点击页面中的
说明:复制表(只复制结构,源表名: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:
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语法介绍(有例子带注释) 关键字: 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字
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窗口”;
一、简单查询 简单的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是
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”或是“”执行,执行后的结果会在下面显示出来,但默认情况下一次只能显 示一页,可以按“”显示下一页;如果用户需要显示全部,则可以按下“”;而按下 “”则可以输入查询条件。如下面两张图所示:
通过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; / 查看错误信息
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
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使用技巧详解 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 美化器)
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(‘’,’’);
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安装使用手册 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常用方法 在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总结 基本数据类型变量 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:将其他类型数据转换为数值型。继续追加中..