oracle常见脚本命令集锦

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用户篇:


创建用户:
create user user_name
identified by password
[default tablespace def_tbs
temporary tablespace tem_tbs];
修改用户密码:
alter user user_name
identified by new_password;

锁定或解锁用户:
alter user user_name account [lock|unlock];

修改用户默认表空间:
alter user user_name
default tablespace new_def_tbs
[temporary tablespace new_tem_tbs];

查看用户信息或删除用户:
删除用户:
drop user user_name [cascade];
cascade参数说明删除用户的同时,删除该用户拥有的所有对象;

查看用户信息:
desc dba_users;
select * from dba_users;

授权与收权:
授权:
授予系统权限:
grant system_privilege(or role)
to user_name
[with admin option];
with admin option:这个参数加上的话,意味着这个用户拥有把这个权限授权给其他的用户;

授予对象权限:
grant object_privilege(column_name)
on object_name
to user_name
[with grant option];

收权:
收回系统权限:
revoke system_privilege(or role)
from user_name;

收回对象权限:
revoke object_privilege
on object_name
from user_name;

查看用户拥有的权限:
user_sys_privs;(查看系统权限的数据字典表)
user_tab_privs_made,user_col_privs_made,user_tab_privs_recd,
user_col_privs_recd等(查看用户的对象权限的数据字典表)





同义词篇:

创建同义词:
create [public] synonym synonym_name
for object_name;
public:该参数表示创建所有用户都可以使用的公用同义词;







角色篇:

创建角色:
create role role_name
[identified by role_password];

为角色授权:
grant dba to role role_name;

查看角色信息:
user_role_privs,role_sys_privs,role_tab_privs等数据字典中可以查到。

删除角色:
drop role role_name;





表对象篇:

创建表:
create table table_name(
column_name type,
column_name type
、、、、、、
)
tablespace tablespace_name;

查看表的系统信息:
desc table_name;(查看表结构)
通过user_tables,all_tables,user_tab_columns,
all_tab_columns等数据字典来查看相关信息

修改表结构:
增加列
alter table table_name add column_name type;
更新列
alter table table_name modify column_name type;
删除列
alter table table_name drop column column_name;

约束:
增加约束
alter table table_name modify column_name [constraint constraint_name] {not null|null};

增加主键约束
alter table table_name add constraint constraint_name primary key (column_name,column_name);

增加惟一性约束
alter table table_name add const

raint constraint_name unique(column_name,column_name);

增加外键约束
alter table table_name add constraint constraint_name foreign key(column_name)
references ref_table_name(ref_column_name)
[on delete [cascade|set null]]
[on update [cascade]];

检查约束:
alter table table_name
add constraint constraint_name
check(expression);

缺省约束:
alter table table_name
modify column_name type
default(constraint_expression);

禁止和激活约束:
禁止约束:
alter table table_name
disable constraint constraint_name;
激活约束:
alter table table_name
enable [novalidate] constraint constraint_name;
novalidate:表示在激活约束时不验证表中已有的数据是否满足约束的定义。如果没有使用该关键字,那么激活约束时系统将要验证表中的数据是否满足约束的定义。

查看约束信息:
user_constraint,user_cons_columns等数据字典视图;

删除约束:
alter table table_name
drop constraint constraint_name;

更改表名称:
rename old_table_name to new_table_name;

注释表
comment on table_name
is table_comment;

comment on column table_name.column_name
is column_comment;

删除表:
drop table table_name;






操纵数据篇:

插入数据:
insert into table_name[(column_list)]
values(value_list);

insert into table_name(column_list)
select_statement;

更新数据:
update table_name
set column_name=new_value,column_name=new_value
where condition_expression;

删除数据:
delete from table_name
where conditon_expression;

合并操作:
merge into table_name_1
using table_name_2
on(conditon_expression)
when matched then
update_statement
when not matched then
insert_statement;
说明:table_name_1表示将要吧数据合并起来的目标表名称;
table_name_2表示在合并数据时另外一个数据来源表名称;
conditon_expression表示合并数据是否相同的判断条件
update_statement表示当合并条件匹配时执行更新操作,否则,执行insert_statement插入操作;


闪回查询:
如果在表中误操作了数据,那么可以使用闪回查询回复误操作的数据,这些误操作包括误删除或误更新。在使用闪回查询时,首先,需要具有闪回查询的权限;然后,通过执行闪回查询可以恢复误删除或误更新的数据。

闪回查询分两类:
1、基于时间的闪回查询;将表中的数据恢复到先前的某个时刻 点;
2、基于系统改变号;可以将表中的数据恢复到先前的某个系统 改变号。

闪回查询时通过

使用dbms_flashback程序包完成,由sys用户拥有。必须拥有该程序包的execute权限才可以执行闪回查询。

为用户授予dbms_flashback程序包的execute权限的语句如下;
grant execute on dbms_flashback to user_name;

如果执行基于时间的闪回查询,那么可以使用一下的语法形式:
execute dbms_flashback.enabe_at_time(datetime);
(在上面的语法形式下,其中datetime表示将要闪回查询的时刻,一般情况下,可以这样确定datetime的值,即sysdate-minutes/1440.
其中,minutes表示将要闪回查询的时间(分钟),1440是每天的时间(分钟)。)

如果希望基于系统改变号(system change number,scn)来闪回查询,那么可以使用以下的语法形式:
execute dbms_flashback.enable_at_system_change_number(scn);
(在上面的语法中,scn表示要将数据闪回查询至的系统改变号。系统改变号使用dbms_flashback程序包的get_system_change_number()过程获得。
)

闪回查询执行完毕后,应该关闭闪回查询的功能。可以使用dbms_flashback.disable()过程关闭闪回查询功能。如果没有关闭闪回查询模式,重新启动闪回查询,则闪回查询操作失败。



事物操纵:

事物是一个单元的操作,这些操作要么全部成功,要么全部失败。当事物被提交后,该事物的操作才真正地写入到了数据库中。如果某个事物被取消了,那么该事物中的所有操作都被取消了。在Orace Database 10g系统中,可以使用commit命令提交完成的事物,使用rollback命令取消未完成的事物。
开始一个事物的标志是:
&连接到数据库,并且执行第一个数据操纵命令(select、insert、等)
&前一个事物结束,并且输入第一个数据操纵命令(select、update等)
结束一个事物的标志是:
&执行commit命令。
&执行rollback命令。
&执行一个数据定义命令(create table、drop table 等)。如果该命令执行成功,那么表示系统自动执行commit命令;如果这种操作失败,那么表示系统自动执行rollback命令。
&执行一个数据控制命令(grant、revoke等),这种操作表示自动执行commit命令。
&断开数据库的连接。如果使用exit命令正常退出SQL*PLUS,则系统自动
执行commit命令;如果异常退出SQL*PLUS,则系统自动执行rollback命令。





SQL*Plus篇:

使用set语句设置运行环境:
set 设置环境变量语句
help [topic] 如:help index
desc object_name 查询对象内部结构
prompt prompt_text; 在屏幕上输出一行数据。
如:prompt 显示用户和其默认的表空间清单
spool file_name[create|replace|append] off
把查询结果保

存在一个文件中,或者把查询结果发送到打印机中。
参数说明:加上create,代表创建一个新文件;replace代表替代一个旧文件;append代表吧假脱机内容附加在一个已经存在的假脱机文件中。
show 使用show命令可以得到许多有用的信息。这些信息包含SQL*PLUS的环境设置、创建PL/SQL代码的错误消息和init.ora参数等。使用该命令要求用户具有DBA权限。
show option;
option参数用于表示将要显示的选项名称。这些选项主要包括:系统变量、all、sga、lno、pno等。

show user 显示当前连接的用户名称;
show all 查看sql*plus的环境选项;
show recyclebin 显示回收站中的内容;
show errors 查看错误信息;
show parameters 查看init.ora文件中的参数名称、参数类型和参数值;





格式户命令:



格式化查询结果语句解析:
SQL*Plus提供了大量的命令用于格式化结果集。这些命令包括column、pause、pagesize、linesize、numformat、long等。
需要注意的是:
&格式户命令设置之后,一直起作用,直到该会话或下一个格式化命令的设置。
&每一次报表结束时,重新设置SQL*Plus为默认值。
&如果为某个列指定了别名,那么必须引用该别名,而不能使用列名。


column(控制某个列的显示格式)
命令格式:
column [column_name|alias][option];
*column_name参数用于指定将要控制的列的名称
*alias参数用于指定列的别名
*option参数用于指定某个列的显示格式。
&可用的option选项如下所示:
clear 消除所有列的格式
format format 改变列数据的显示格式。具体格式元素见下面:

元素 描述 示例
An 设置显示宽度 A5
9 数字 999999
$ 浮动的货币符号 $9999
L 本地货币符号 L9999
. 小数点位置 9999.99
. 千位分隔符 9.999

heading text 设置列标题
justify[align] 设置列标题(不是数据)的对齐方式。可选的对齐方式aglin的取值是left、center和right。
noprint 隐藏列标题
null text 指定列为空值时显示的内容
print 显示列标题
truncated 删除第一行的字符串
wrapped 换行

eg:设置列chinese显示名称为中国:
column chinese 中国 A30;
column chinese clear; (清除列chinese的格式)





title和btitle(可以设置报表的页眉和页脚)
命令格式:
title[text|off|on] 指定出现

在报表中每一个页面顶端的页眉
btitle[text|off|on] 指定出现在报表中每一个页面底端的页脚。
如不想让页眉页脚显示,可以通过title off 和btitle off关闭设置





pause(暂停操作。一个开关命令,告诉sql*plus在一页之后停止滚动屏幕上输出的数据。一页显示多少则由pagesize命令控制。)
命令格式:
set pause on; 打开暂停操作
set pause off;关闭暂停操作。
默认情况下,pause处于关闭状态。




pagesize(设置每一页的大小,控制每一页显示的数据量,默认为14行)
命令格式:
set pagesize n;(n表示每一页大小的正整数)



linesize(设置一行数据可以容纳的字符数量。默认为80)
命令格式:
set linesize n;(n的有效范围为1——32767)



feedback(告诉sql*plus在查询结果集的末尾输出一行,以便指出查询返回的数据行总量。默认情况下,feedback是6,其含义是:在返回的数据行的数量是6或者更多时显示返回的数据行数据。)
命令格式:
set feedback {n|on|off};
&n参数表示是否提示显示提示信息的分界线,如果大于等于n,显示
&on 如果使用on关键字,表示总是显示提示信息。
&off如果使用off关键字,表示不显示提示信息。





numformat(当用户在数据库中查询数值数据时,sql*plus所使用的格式可能会出现问题。例如,numformat的默认值是10,这表明sql*plus试图将所有的数值数据都放到10个字符的输出中。如果用户知道正在处理的字符数值超过10个字符,例如小数点右边有很多位的数值,那么可以尝试将numformat设置为一个更大的值。)
命令格式:
set numformat n;(参数n表示显示输出的字符数量。)



long(默认情况下,long的值为80,当用户查询具有long列的表或视图时,那么就只会显示这个特定列的前80个字符。如果设置long为更大,那么可以显示这个列中更多的数据)
命令格式:
set long n;








变量篇:

在oracle database 10g中,提供了两种类型的变量。即临时变量和定义的变量。临时变量是指仅在某个sql语句中有效地变量;定义的变量时值明确定义,其生命期至显示的删除、重新定义或退出sql*plus为止。



临时变量:
临时变量也被称为替代变量。在select语句中,如果在某个变量前面使用了&符号,那么表示该变量是一个临时变量。在执行select语句过程中,系统会提示用户为该变量提供一个具体的数据。

在select语句中,如果希望重新使用某个变量并且不希望提示重新输入该值,那么可以使用&&临时变量。为了避

免为同一个变量提供两个不同的值,而且使得系统为同一个变量值提示一次信息,那么可以使用&&符号。



定义的变量:
为了在sql语句中定义变量,可以使用define和accept命令。define命令用来创建一个数据类型为char的用户定义的变量,使用undefine命令可以清除定义的变量。
define命令的语法格式如下所示:
命令 描述
define variabl=value 创建一个char类型的用户变量,赋初值
define variable 显示指定变量的名称、值、数据类型
define 显示所有用户定义的变量

在10g中,sql*plus新增了3个已定义的变量,_date、_privilege和_user变量。_date变量是一个动态变量,可以提供基于当前nls_date_format设置的日期,它变量可以用在很多地方;_privilege变量包含了当前用户的权限;_user变量包含了连接到当前数据库的用户名称。

使用accept命令也可以定义变量,并且定制一个用户提示,用于提示用户输入指定变量的数据。在定义变量时,可以明确地指定该变量时number数据类型还是date数据类型。为了安全性的原因,还可以把用户的输入隐藏起来。

accept命令格式:
accept variable[datatype][prompt text][hide];
参数说明:
&variable用于指定接收值的变量。如果该名称的变量不存在,那么sql*plus将自动创建该变量。
&datatype表示数据类型。可以是number、char、date等。默认为char
&prompt text用于表示在用户输入数据之前显示的文本消息。
&hide表示是否隐藏用户的输入。
eg:accept var_first_name char prompt "请输入作者名:";




SQL*PLUS缓冲区篇:
SQL*Plus可以在缓冲区中存储用户最近执行的命令。通过在缓冲区中存储这些命令,用户可以重新调用、编辑或运行那些最近输入的SQL语句。可以使用两种方法修改在缓冲区中存储的你命令。
&第一种方法是,可以将最近缓冲区中的内容传递给Notepad(Windows系统)编辑器;
&第二种方法是,可以使用SQL*Plus的默认编辑器。这两种方法可以交互使用。
为了在SQL*Plus工具中利用Notepad作为用户的编辑器,可以使用define命令,执行以下操作:
SQL>define_editor=notepad;
执行完上面的设置之后,用户就可以使用edit命令来执行编辑操作,除了edit命令之外,还可以使用save命令。使用save命令可以把当前SQL缓冲区中的内容保存到指定的文件夹中。
save命令的语法形式如下:
save filename[replace append];
&在上面的语法中,filename参数用于指定将要保存的文件名称,默认的文件扩展名是sql。如果使用关键字replace

,表示覆盖当前已有的文件;如果使用append关键字,表示把当前的内容添加到已经存在的文件中。

实际上,在执行简单的编辑操作时,最经常使用的是使用的是SQL*PLUS提供的编辑命令进行编辑。由SQL*PLUS提供的编辑命令及其功能描述如下所示:
SQL*PLUS提供的编辑命令清单

命令 描述
a[ppend] text 把指定的文本text附加在当前行的末尾
c[hange]/old/new 把旧文本old替换成新文本new
c[hange]/text/ 删除当前行中指定的文本text
cl[ear] buff[er] 从SQL缓存区中删除所有的命令行
del 删除当前行
del n 删除指定的行
del m n 删除从第m行到第n行之间的命令行
i[nput] 插入不定数量的命令行
i[nput] text 插入一行指定的文本text
l[ist] 列出SQL缓存区中所有的行
l[ist] m 列出指定的第n行
l[ist] m n 列出指定范围的行,从第m行到第n行
r[un] 显示并且运行缓存区中的当前命令
n 指定该行为当前行
n text 使用指定的文本text替代第n行
0 text 在第一行之前插入指定的文本text









脚本篇:

用户没有必要在每次使用时都编写常用的SQL语句和PL/SQL语句块,而是可以将它们保存在被称为脚本的文件中。这些脚本文件为那些凡夫执行的各种任务而设计。
在SQL*Plus工具中,可以使用start和@命令来调用脚本文件,并且还可以在命令行中传递脚本希望使用的任何参数。
当调用脚本时,如果该脚本文件不再用户的当前工作目录下,那么用户必须使用限定的目录名称。


命令格式:
SQL>@D:\ORACLE\ADMIN\BIN\H_BOOKS.SQL
or
SQL>START D:\ORACLE\ADMIN\BIN\H_BOOKS.SQL

也就是说,在使用start或@命令中,用户既可以使用绝对路径命名脚本文件,也可以使用相对路径命名脚本文件。

在脚本文件中,用户可以混合使用SQL*Plus命令、PL/SQL语句或SQL语句,甚至还可以包含脚本文件(脚本中包含脚本文件时,内部脚本执行应该使用@@或者start,否则会出现错误。)。


在SQL*Plus中,如果使用host命令,那么将会进入doc环境(win2000/xp/2003)。







查询篇:



CASE 与 DECODE用法

SELECT LogID,UserID,LogTime,Url,Description,(case OperateType when OperateType = 0 then '新增' when OperateType=1 then '修改' else '删除' end case) FROM LOG ????

1. case
SELECT LogID,UserID,LogTime,Url,Description,(
case
when OperateType = 0
then '新增'
when OperateType=1
then '修改'
else '删除'
end ) FROM LOG

2.DECODE

的写法:
SELECT LogID,UserID,LogTime,Url,Description,
decode(OperateType,0,'新增',1,'修改','删除') OperationName
FROM LOG

建议用DECODE的写法

·含义解释:

decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

该函数的含义如下:

IF 条件=值1 THEN

RETURN(翻译值1)

ELSIF 条件=值2 THEN

RETURN(翻译值2)

......

ELSIF 条件=值n THEN

RETURN(翻译值n)

ELSE

RETURN(缺省值)

END IF

· 使用方法:

1、比较大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

例如:

变量1=10,变量2=20

则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

2、表、视图结构转化

现有一个商品销售表sale,表结构为:

month char(6) --月份

sell number(10,2) --月销售金额

现有数据为:

200001 1000

200002 1100

200003 1200

200004 1300

200005 1400

200006 1500

200007 1600

200101 1100

200202 1200

200301 1300

想要转化为以下结构的数据:

year char(4) --年份

month1 number(10,2) --1月销售金额

month2 number(10,2) --2月销售金额

month3 number(10,2) --3月销售金额

month4 number(10,2) --4月销售金额

month5 number(10,2) --5月销售金额

month6 number(10,2) --6月销售金额

month7 number(10,2) --7月销售金额

month8 number(10,2) --8月销售金额

month9 number(10,2) --9月销售金额

month10 number(10,2) --10月销售金额

month11 number(10,2) --11月销售金额

month12 number(10,2) --12月销售金额

结构转化的SQL语句为:

create or replace view

v_sale(year,month1,month2,month3,month4,month5,month6,month7,
month8,month9,month10,month11,month12)

as

select

substrb(month,1,4),

sum(decode(substrb(month,5,2),'01',sell,0)),

sum(decode(substrb(month,5,2),'02',sell,0)),

sum(decode(substrb(month,5,2),'03',sell,0)),

sum(decode(substrb(month,5,2),'04',sell,0)),





oracle导入导出:
逻辑备份:

1) 导出(备份)export

2) 导入(还原)import

导出:

1、 导出当前用户下的表

exp 用户名/密码 tables=(表1,…

…表n) file=路径+文件名.dmp

如:

exp scott/tiger tables=(emp) file=c:\1.dmp

2、 导出其他用户下的表:(administrator)

exp 管理员/密码 tables(用户.表1,……用户.表n) file=路径+文件名.dmp

如:

exp system/manager tables=(scott.emp) file=c:\1.dmp

3、 导出当前用户的方案:

exp 用户名/密码 file=路径+文件名.dmp

如:

exp scott/tiger file=c:\1.dmp

4、 导出其他用户的方案:(administrator)

exp 管理员/密码 owner=用户名 file=路径+文件名.dmp

如:

exp system/manager owner=scott file=c:\1.dmp

导入:

1、 导入表到当前入户下:
imp 用户名/密码 tables=(表1,……表n) file=路径+文件名.dmp

如:

imp scott/tiger tables=(emp) file=c:\1.dmp

2、 导入表到其他用户下:

imp 管理员/密码 touser=用户名 tables=(表1,……表n) file=路径+文件名.dmp

如:

imp system/manager touser=scott tables(emp) file=c:\1.dmp

3、 导入方案到当前用户下:

imp 用户名/密码 file=路径+文件名.dmp

如:

imp scott/tiger file=c:\1.dmp

4、 导入方案到其他用户下:(administrator)

imp 管理员/密码 file=路径+文件名.dmp fromuser=用户1 touser=用户2

如:

imp system/manager file=c:\1.dmp fromuser=scott touser=tiger




外连接:
ORACLE外连接:

一、左外连接:(左表的全部加上右表符合条件的记录)
select ,e.id, from employees e
left outer join
department d on(e.id=d.id)
等同于:
select ,e.id, from employees e ,department d
where e.id=d.id(+);

二、右外连接:(右表的全部加上左表符合条件的记录)
select ,e.id, from employees e
right outer join
department d on(e.id=d.id)
等同于:
select ,e.id, from employees e ,department d
where e.id(+)=d.id;

三、全连接:(左右表中所有对应的数据,包括对应上的和对应不上的。对应不上的字段为空)
select ,e.id, from employees e
full outer join
department d on(e.id=d.id)



oralce导入导出:
ORACLE导入数据:
1、导入文本数据到数据库表中方法:
使用PL/SQL DEVELOPER 开发工具:
TOOLS--TEXTIMPORTER;
2、导入EXCLE数据到ORACLE表中的方法:
(1)使用PL/SQL DEVELOPER 开发工具:
TOOLS--ODBC IMPORTER--USER/SYSTEM DSN(选择excle
file)--点击connect--选择要导入的文件--选择对应的sheet--import;
(2) 将EXCLE文件复制到文本文件中,保存为后缀为.CSV或.TXT的文件,用PL/SQL DEVERLOPER中的TEXTIMPORTER工具导入即可


ORACLE表中数据导出到文本或EXCLE中的方法:
一、导出到EXCLE中方法有二:
1、用PL/SQL

DEVELOPER 开发工具,NEW--REPORT WINDOW
输入查询语句,得到结果集;----选择右侧下工具栏中EXPORT
RESULTS--选择保存类型(excle或csv),保存结果集即可;
2、使用ORACLE工具NET MANAGER 建立本地监听;然后建立dns;
然后进入EXCLE,数据---导入外部数据---新建数据库查询--选择
数据源--输入(本地服务名,用户名、密码)
建立连接----选择要导出的数据表(列)---导出数据表;
二、导出到文本中的方法有二:
1、用PL/SQL DEVELOPER 开发工具,NEW--REPORT WINDOW
输入查询语句,得到结果集;----选择右侧下工具栏中EXPORT
RESULTS--选择保存类型(tsv),保存结果集即可;
2、打开sqlplus或者命令窗口,是用SPOOL命令输出到文本;
SQL>set heading off
SQL>set feedback off
SQL>spool temp.txt
SQL>select * from tab;
SQL>spool off



oracle函数集锦:

oracle_sql 函数
说明:在括号中注明(数值)的为数值型函数;注明为(字符)的为字符函数;注明为日期的为日期型函数;注明为(转换)的为转换型函数;注明是(聚组)的为聚组型函数;不注明的为其他函数。
concat
函数名: 说明
abs(x)(数值) 返回x的绝对值
add_months(x,y)(日期) 返回值为日期x加上y个月
ascii(x)(字符) 返回字符x的十进字表示
avg([distinct|all]x](聚组) 返回x列的平均值
ceil(x)(字符) 返回大于或等于x的最小整数
chartorowid(x)(转换) 将字符串x转换成rowid类型
chr(x)(字符) 返回对应于数x的字符集中的字符
concat(x,y)(字符) 返回串x和串y接结果
convert(x,y[,z])(日期) 用字符集y来转换字符串x,z为原来的字符集
cos(x)(数值) 返回x的余弦
cosh(x)(数值) 返回x的双曲余弦
count(*|distinct|all]x)(聚组) 返回查询所得到的行数
dump(w,[x[,y[,z]]]x) 返回一个字符串,含有w的数据类型码,字节为单位的长度以及内部表示形式
exp(x)(数值) 返回e的x次幂
floor(x)(数值) 返回小于或等于x的最大整数
glb([distinct|all]x)(聚组) 返回标签x的最大下限
greatest(x[,y],[,..]) 返回列表中的最大值
greatest_lb(x[,y],[,…]) 返回标签列表中的最大值
hextoraw(x)(字符) 将含有16进制数据的字符串转换成二进制数据
initcap(x)(字符) 返回串x首字符大写,其余字符小写的结果
instr(w,x[,y[,z]])(字符) 返回串x在串w中的出现位置
instrb(w,x[,y[,z]])(字符) 同上,只在多字节字符时有用
last_day(x)(日期

) 返回x指定的那个月的最后一天
least(x[,y][,…]) 返回列表中的最小值
least_ub(x[,y][,…]) 返回标签列表中的最小值
length(x)(字符) 返回串x的长度
lengthb(x)(字符) 返回串x的字节长度
ln(x)(数值) 返回x的自然对数
log(x,y)(数值) 返回x为底的y的对数
lower(x)(字符) 返回串x小写字母结果
lpad(x,y[,z])(字符) 返回串x左边填充z至长度为y的结果
ltrim(x[,y])(字符) 返回串x左边截去字符集为y后的结果, 如果结果isnumber,则会删除前面的0
lub([distinct|all]x)(聚组) 返回标签x的最小上限
max([distinct|all]x)(聚组) 返回x列的最大列值
min([distinct|all]x)(聚组) 返回x列的最小列值
mod(x,y)(数值) 返回x除以y的余数
months_between(x,y)(日期) 返回x和y之间的月数
new_time(x,y,z)(日期) 返回时间区域y中的时间x在z区域的对应时间
next_day(x,y)(日期) 返回日期x之后第一个名为y的那天的日期
nls_initcat(字符) 基本同initcap,只是考虑到语言
nls_lover(x[,y])(字符) 基本同lower,只是考虑到语言
nls_upper(字符) 基本同upper,只是考虑到语言
nvl(x,y) x为null返回y,否则返回x ;对于string: x为''也返回y
power(x,y)(数值) 返回x的y次幂
rawtohex(x)(转换) 将二进制数据转换成16进制数字的字符串
replace(x,y[,z])(字符) 将x中出现y的地方替换成z
round(x[,y])(数值) 返回将x四舍五入成y位小数的值
round(x[,y])(字符) 舍入到离日期x最近的那个由y指定的日期单位的第一天
rowidtochar(x)(转换) 将rowid类型转换成字符型字符串
rpad(x,y[,z])(字符) 返回串x右边填充z至长度为y的结果
rtrim(x,y[,z])(字符) 返回串x右边截去字符集为y后的结果
sign(x)(数值) x为正数、负数、0时分别为1、-1、0
sin(x)(数值) 返回x的正弦值
sinh(x)(数值) 返回x的正弦的16进制
soundex(x)(字符) 返回x语言发音描述
sqrt(x)(数值) 返回x的平方根
stddev([distinct|all]x)(聚组) 返回数值列x的标准误差
substr(x,y[,z])(聚组) 从x中的第y个位置开始取z个字符的子串
sum([distinct|all]x)(聚组) 返回数值列x的合计
sysdate(日期) 返回当前的日期和时间
tan(x)(数值) 返回x的正切
tanh(x)(数值) 返回x的正切的16进制
to_char(x[,y])(转换) 将一个日期或数字转换成一个字符串
to_date(x[,y])(转换) 将一个字符串转换成日期
to_label(x[,y])(转换) 将一个字符串转换为MLSLABEL类型的值
to_multi_bye(x)(转换) 将单字节字符串转换为多字节字符串
to_number(x,y[,z])(转换) 将一个字符串转换成数值
to_single_by

te(x)(转换) 将多字节字符串转换为单字节字符串
translate(x,y[,z])(字符) 将x中y字符集翻译成z集中相应位置的字符
trunc(x[,y])(数值) 返回x截为y位小数的结果值
trunc(x[,y])(日期) 将x舍到由y指定的日期单位的第一天,结果中带有时间部分
uid 返回唯一标识当前用户的那个整数
upper(x)(字符) 返回x的大写串
user 返回当前用户的数据库用户名
userenv(x) 返回关于当前数据库会话的环境信息
variance([distinct|all]x)(聚组) 返回数值列的方差

to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')

select * from a17 where sysdate-30<=to_date(a17006,'yyyy-mm-dd') and to_date(a17006,'yyyy-mm-dd')

SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32


2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C
-- -
赵 A

3.CONCAT
连接两个字符串;
SQL> select concat('010-','88888888')||'转23' 高乾竞电话 from dual;

高乾竞电话
----------------
010-********转23

4.INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap('smith') upp from dual;

UPP
-----
Smith


5.INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr('oracle traning','ra',1,2) instring from dual;

INSTRING
---------
9


6.LENGTH
返回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;


相关文档
最新文档