Oracle 笔记7755.docx
Oracle&Jdbc 目录Oracle部分第一章 数据库介绍3第二章 Oracle简介4第三章 用户、权限6第四章 Oracle数据类型8第五章 SQL语句概述9第六章 表空间11第七章 表12第八章 函数14第九章 约束17第十章 单查询查询22第十一章 多表查询-内连接23第十二章 多表查询-外连接25第十三章 多表查询-基本26第十四章 多表查询-连接29第十五章 子查询32第十七章 组函数及分组统计34第十八章 数据库对象-视图37第十九章 数据库对象-序列40第二十章 数据库对象-同义词43第二十一章 数据库对象-索引44第二十二章 网络配置47第二十三章 嵌套表、可变数组48PL/SQL部分第一章 PL/SQL 简介51第二章 PL/SQL数据类型54第三章 LP/SQL控制语句58第四章 动态SQL63第五章 错误处理64第六章 游标-隐式游标66第七章 游标-显式游标68第八章 游标-REF游标72第九章 子程序-过程74第十章 子程序-函数77第十一章 自主事物处理80第十二章 程序包82第十三章 触发器讲解85第十四章 触发器实例89第十五章 数据库设计和三大范式92第十六章 数据库的备份与恢复简介97第十七章 导入导出工具99第十八章 数据库归档方式101JDBC部分JDBC部分104第一章 jdbc简介104第二章 连接数据库106第三章 常用数据库的驱动程序和JDBC URL108第四章 连接池109第五章 数据操作-创建表111第六章 数据操作-查询112第七章 预处理113第八章 批处理114第九章 数据的数据115第十章 调用函数116第十一章 调用过程119第十二章 DAO封装122第一章 数据库介绍一、数据的储存方法:第一种方法:用大脑来记住数据第二种方法:写在纸上第三种方法:写在计算机的内存中第四种方法:写成磁盘文件二、数据库能做什么?1.存储大量数据,方便检索和访问2.保持数据的一致、完整3.共享和安全4.通过组合分析,产生新的有用信息三、数据库的发展史萌芽阶段-文件系统 使用磁盘文件储存数据初级阶段-第一代数据库 出现了网状模型、层次模型的数据库中级阶段-第一代数据数据库 关系型数据库和结构化查询语言高级阶段-新一代数据库 “关系-对象”型数据库四、当前的数据库产品Oracle -甲骨文BD2 -IBMSQL Server -微软Sybase -赛贝思MySql -SUN五、数据库和应用程序六、数据库相关的基本概念概念模型:基于客户的想法和观点所形成的认识和对象实体(Entiy):客观存在的、可以被描述的事物。如员工 、部门属性(Attribute):用于描述实体所具有的特征或特性,如使用编号、姓名、部门、工资等属性员工的特征。关系(Relationship):实体之间的联系。如部门和员工之间有一对多的关系。数据模型:也叫关系模型,是实体、属性、关系在数据库中的具体表现。关系数据库:用于储存各种类型的“仓库”,是二维表的集合表:实体的映射行和列:行代表一个具体的实体数据。也叫一条记录。列是属性的映射,用于描述实体的主键和外键七、数据库管理系统(DBMS) 第二章 Oracle简介快速掌握Oracle课程目标: Oracle安装及配置 有关数据库的DDL操作 有关数据表的DDL操作 有关数据表的CRUD操作 事物控制 索引 视图 存储过程 触发器 权限管理 数据库的备份与恢复 数据库设计Oracle是一个生产中间件和数据库的较大生产商,Oracel的原本含义是“神喻”,指的是神说的话。在中国的商朝的时代,把一些刻在龟壳上的文字当成了上天的指示,所以在中国也将Oracle翻译成“甲骨文”。Oracle的发展实际上依靠了IMB公司。Oracle的创始人是:Larry Ellision创办了Oracle公司。Oracle的版本分为:Oracle 8Oracle 8i:Internet表示此时Oracle公司开始开始正式进军互联网.Oracle 9i: Oracle 8i和Oracle 9i相比是非常相似的Oracle 10g: g表示网格技术网格技术:如我们在百度上下载一个软件,那么这个软件在离我们的远处有一个,在我们的近处也有一个,有可能我们通过搜索引擎下载的是远的那个。忽略了近处的资源,这样就造成了资源的浪费。所以就产生了网格技术。就是将网络划为了多个小格。通过网络表示区域。Oracle 是由甲骨文公司生产的以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一 。是目前市场占用率极高的一款数据库产品特点:提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。 提供了与第三代高级语言的接口 提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。 一、存储结构:物理结构:ORACLE数据库在物理上是存储于硬盘的各种文件。它是活动的,可扩充的,随着数据的添加和应用程序的增大而变化。 逻辑结构:ORACLE数据库在逻辑上是由许多表空间构成。主要分为系统表空间和非系统表空间。非系统表空间内存储着各项应用的数据、索引、程序等相关信息。二、启动Oracle在Window平台下必须启动的Oracle服务有:1.OracleServiceSID 数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为ORACLE.EXE.2.OracleHOME_NAMETNSListener监听器服务。3.sqlplus工具sqlplus工具登录数据库有以下几种方式:(1).sqlplus:以命令的方式进入数据库连接(2).sqlplusw:以窗口的形式启动命令行在使用此命令时,会提示一个主机的字符串,如果一台电脑上有多个数据库的话,则要在此处输入数据库的名称,如果不输入,会进行默认的,一般默认的是最后一个数据库。那么登录帐户以后,就可以在数据库中进行增、删、改、查等操作。如我们可以查看表:SELECT * FROM emp;(emp表是数据库自带的表)当我们对表进行查看时,有时候显示的表并不规范,如本来是一行的内容,可是有一部分被补到了下一行。这样看下来表就很混乱,不规范。所以我们要对其环境 进行一下设置。如设置每行显示的长度:set linesize 300;有时候标题行还会重复出现,在这因为在Oracle中数据是一页一页的显示方式进行输出的。所我们可修改每页显示行数。如set pagesize 20;4.命令我们通常使用的sqlplusw在sqlplusw中存在着大量的命令。在sqlplusw下编辑代码时,出现了错误,不允许我们使用向左方向键向右移动到相应的位置上进行修改,很不方便,所以通常我们使用记事本进行代码的编辑,直接在命令行中输入“ed 文件名名称即可”。如 ed test,输入之后会提示找不到test.sql文件,要创建新文件吗?我们选择“是”,那么就创建了一个test文件,我们就可以在test文本中写相应的代码。创建完成之后,可以通过文件名称的方式执行命令。如test,就会执行在test中写的代码。除了在sqlplus中创建文件之外,也可以通过符找到磁盘上的文件,如我们在D盘上建立一个demo.txt的文件,里边写上查询指令。执行的时候,要指定文件的路径:路径,如D:demo.txt,也会执行demo中的指令。效果也完全一样的。“”可以省略。如D:demo.txt.如果文件的后缀是.sql,则不写后缀名称也可以找到。如:D:demo。所以默认找到的后缀是“*.sql”。在sqlplusw中可以使用“/”表示重复执行上一句命令的操作。 第三章 用户、权限一、用SQLPLUS登录Oracle1.Sqlplus 用户/密码 as 身份如登录系统帐户:conn sys/system as sysdba;conn:连接到数据库的关键字sys:系统用户名system:是验证密码as sysdba:是身份验证2.Oracle 内置帐户sys具有最大的权限。 Oracle数据库服务器启动后,一般至少有以下几个用户: Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务,包括启动和关闭数据库;sys:它是一个 DBA用户名,具有最大的数据库操作权限;system:它也是一个 DBA用户名,权限仅次于 Sys用户 scott:它是一个oracle示例/学习帐户3.停止和启动Oracle启动/停止windows服务Sqlplus /nolog 利用这个命令可以在DOS下不利用任何身份进入到SQL的状态。之后再利用身份登录Connect /as sysdbaShutdown/startup/是以操作系统认证进行登录Nolog不创建初始联接4.创建、删除用户创建帐户:CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE tablespace1->默认表空间 TEMPORARY TABLESPACE tablespace2->临时表空间 QUOTA n K ON tablespace1;->不足时自动增加nK或nM M UNLIMITED->没有限制如创建一个hellen的帐户:create user hellen identified by abcd;删除帐户:基本语法:DROP USER userName cascade;如果加上cascade关键字可删除该用户所创建的对象。如:删除用户hellen: drop user hellen;用户修改密码:基本语法:ALTER USER userName IDENTIFIED BY password;如: alter user hellen identified by abc123;用户解锁:基本语法:ALTER USER userName ACCOUNT UNLOCK;如:alter user hellen account unlock;查看当前登录用户SHOW USER;查看系统有哪些用户:SELECT USERNAME FROM DBA_USERS; 如: 第一步:desc dba_users; 第二步:select username, USER_ID, ACCOUNT_STATUS FROM DBA_USERS;查看用户的默认表空间select username,default_tablespace from dba_users;查看用户有哪些表空间select distinct tablespace_name from dba_tables where owner=USER'确定用户帐户所授予的权限select * from DBA_tab_privs ; 直接授予用户帐户的对象权限 select * from DBA_role_privs ; 授予用户帐户的角色 select * from DBA_sys_privs WHERE GRANTEE=?; 授予用户帐户的系统权限5.授于用户连接Oracle数据库的权限格式:grant 权限 to 帐户名。如授予可以连接到数据库的权限:grant hellen to scott;常用的权限有: connect (8) 连上Oracle,做最基本操作 resource(5) 具有程序开发最基本的权限 dba (77)数据库管理员所有权限 exp-full-database 可把数据库整个备份输出的权限 imp-full-datsabase 可把数据库整个备份恢复输入的权限6.回收权限基本语法:REVOKE 权限 FROM 用户名;REVOKE 实体权限|ALL ON 表空间 FROM 用户名|角色名|PUBLIC;如授回连接到数据库的权限:revoke connect from hellen;常见的实体权限:见附录第四章 Oracle数据类型Oracle 提供了22 种不同的SQL数据类型供我们使用: CHAR:这是一个定长字符串,会用空格填充来达到其最大长度。非null 的CHAR(12.)总是包含12字节信息。CHAR 字段最多可以存储2,000 字节的信息。 NCHAR:这是一个包含UNICODE 格式数据的定长字符串。最多可以存储2,000 字节的信息。 VARCHAR2:这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含012字节的信息。VARCHAR2 最多可以存储4,000 字节的信息。 NVARCHAR2:这是一个包含UNICODE 格式数据的变长字符串。NVARCHAR2(12)可以包含012字符的信息。NVARCHAR2 最多可以存储4,000 字节的信息。 NUMBER:这种数据类型能存储精度最多达38 位的数字。这些数介于12×12(-130)-1 12×12(126)之间。用法:number(p,s);p和s是可以选的,用于表示整数部分和小数部分的精度 BINARY_FLOAT:这是Oracle 10g Release 1 及以后版本中才有的一种新类型。它是一个32位单精度浮点数,可以支持至少6 位精度,占用磁盘上5 字节的存储空间。 BINARY_DOUBLE:这也是10g中新的一种类型 CLOB:在Oracle9i 及以前的版本中,这种数据类型允许存储最多4GB 的数据,在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。这种数据类型很适合存储纯文本信息。 BLOB:在Oracle9i 及以前的版本中,这种数据类型允许存储最多4GB 的数据,在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。适合于存储图片/文档 LONG:这种类型能存储最多2G 的字符数据-建议使用CLOB代替 DATE:这是一个7 字节的定宽日期/时间数据类型。其中总包含7 个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。 TIMESTAMP:这是一个7 字节或12.字节的定宽日期/时间数据类型。它与DATE 数据类型不同,因为TIMESTAMP 可以包含小数秒(fractional second);带小数秒的TIMESTAMP 在小数点右边最多可以保留9 位。 TIMESTAMP WITH TIME ZONE:与前一种类型类似,这是一个12.字节的定宽TIMESTAMP,不过它还提供了时区(TIME ZONE)支持。数据中会随TIMESTAMP 存储有关时区的额外信息,所以原先插入的TIME ZONE 会与数据一同保留。 ROWID:ROWID 实际上是数据库中一行的12字节地址。ROWID 中编码有足够的信息,足以在磁盘上定位这一行,以及标识ROWID 指向的对象。(1)Oracle 中伪列就像一个表列,但是它并没有存储在表中(2)伪列可以从表中查询,但不能插入、更新和删除它们的值(3)常用的伪列有ROWID和ROWNUM ROWID 是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的一行。 ROWNUM 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数例:列的类型主要有如下几种:NUMBER(4):表示是数字,长度为4VARCAHR2(10):表示的是字符串,只能10的个的长度DATE:表示日期NUMBER(7,2): 表示是数字,其中小数位占2位,整数位占5位,总共是7位。 第五章 SQL语句概述SQL语句概述 SQL结构化查询语言(Structured Query Language)一般读作:si:kju: 或者是字母 S Q L 的发音。 目前数据库厂商实现的都是SQL92标准,还没有任何一家厂商通过SQL99标准认证 Oracle对SQL92做了扩展,所以称自己为加强版SQL(SQLPLUS)。对于不同的数据库来讲,重点都是掌握SQL语句,因为现在的数据库全部是以SQL操作的标准,在实际中,各个数据库就是提供的函数不同。SQL语言主要用于与数据库的通讯。SQL语言功能强大 ,主要分为以下同种:DML DDL DCL 事物控制语言。一、SQL语句分类1.DDL(Data Definition Language)数据定义语言:定义数据库对象(表空间,表,列,索引等) 如:CREATE,DROP,ALTER,TRUNCATE 等2.DML(Data Manipulation Language)数据操纵语言:完成对数据记录的操作 如:INSERT,DELETE,UPDATE,SELECT 等。3.DCL(Data Control Language)数据控制语言:定义用户的访问权限和安全级别 如:GRANT,REVOKE4.事物控制(Transaction Control)事物控制:如:COMMIT,ROLLBACK(1)事务是最小的工作单元,作为一个整体进行工作(2)保证事务的整体成功或失败,称为事务控制用于事务控制的语句有:(4)COMMIT - 提交并结束事务处理当向表插入一个新值的时候,该事物并没有被永久的写到磁盘上去 ,重新打开窗口再次查询该表中的数据时,发现并没有刚才插入的记录,这是因为这个事物还没有结束,当遇到commit或rollback才认为是结束了。如果要永久性的提交可以执行:commit命令,再次打开新的窗口时该记录已被写到表中了。(5)ROLLBACK - 撤销事务中已完成的工作当我们做了和系列的操作以后,都没有执行commit命令,也就是没有提交,我们执行了rollback就可要回到原点了,也就是刚才所做的都等于没做,所有rollback回退是将所有的回退。(6)SAVEPOINT 标记事务中可以回滚的点因为rollback回退是将所有的都回退了,这明显不太好,那么我们可以设置几个回退点,使再次回退的时候,不让其回退到原点,而是回退到我们固定的位置上去。如:UPDATE 表名 set id=2 WHERE id=3->将id=3改为id=2SAVEPOINT mark1->设置一个还原点mark1DELETE FROM 表名 WHERE id=5->删除id=5SAVEPOINT mark2;->再设置一个还原点mark2二、Oracle支持的SQL操作符的分类:算术操作符 比较操作符 逻辑操作符 集合操作符 连接操作符1.算术操作符:算术操作符用于执行数值计算可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成算术操作符包括加(+)、减(-)、乘(*)、除(/)。2.连接操作符用于将多个字符串或数据值合并成一个字符串例:要求查出雇员的编号、姓名、工作但是显示的格式是:编号是:7369的雇员,姓名是:SMITH,工作是:CLERKSELECT '编号是:'|empno|'的雇员,姓名是:'|ename|'工作是'|job;->使用了连接操作符在查询中也可以 使用四则运算功能。如我们要查每个雇员的姓名及年薪。SELECT ename,sal*12 FROM emp;->月薪*12表示年薪->使用了算术操作符3.比较操作符用于比较两个表达式的值比较操作符包括 =、!=、<、>、<=、>=、BETWEENAND、IN、LIKE 和 IS NULL等例:SQL> SELECT itemdesc, re_level FROM itemfile WHERE qty_hand < max_level/2;SQL> SELECT orderno FROM order_master WHERE del_date IN (06-1月-05,05-2月-05');SQL> SELECT vencode,venname,tel_no FROM vendor_master WHERE venname LIKE 'j_s'4.逻辑操作符逻辑操作符用于组合多个计较运算的结果以生成一个或真或假的结果。逻辑操作符包括与(AND)、或(OR)和非(NOT)。 例:显示 2005-5月-10 至 2005-5月-26的订单信息SQL> SELECT * FROM order_master WHERE odate > 10-5月-05' AND del_date < 26-5月-05;5.集合操作符将两个查询的结果组合成一个结果,集合操作符有:UNION、UNION ALL、INTERSECT、MINUS(1)UNION:将两个表中的所有的记录合到一起,但重复的只合一遍如:用法有两个表(id 和 name)SELECT * FROM 表AUNIONSELECT * FROM 表B;结果:A与B重复的行只拿一次(2)UNION ALL:重复的行复取,也就是取出所有的(A+B)SELECT * FROM AUNION ALLSELECT * FROM B;(3)INTERSECT:返回公有的(A与B的交集)(4)MINUS 差积(A-B或B-A)用法都与UNION相同。注一:在求差积时,如果A放前,去掉公共的行时,剩余的都是A中的,而B中剩余了什么并不管。如果B放前去掉公共行时,剩余都是B中的。注二、在使用集合操作符时,两个表的类型一定要相同。三、SQL 操作符的优先级从高到低的顺序是:算术操作符 -最高优先级连接操作符比较操作符NOT 逻辑操作符AND 逻辑操作符OR 逻辑操作符 -最低优先级 第六章 表空间 表空间1.创建表空间 基本语法: CREATE TABLESPACE spacename LOGGING | NOLOGGING DATAFILE d:javasky.dbf SIZE 200M AUTOEXTEND ON NEXT 200M;如: create tablespace javasky ->表空间名 datafile 'd:javasky.dbf'->目录地址 size 20M->大小为20M autoextend on next 5M;->当空间不足时自动增加5M;2.删除表空间 基本语法: DROP TABLESPACE “TABLESPANCENAME” 注意表空间的名字需要使用双引号包围,并且表空间的名称需要大写。 如:drop tablespace "JAVASKY"3.查看表空间的名称和状态 select tablespace_name,status from dba_tablespaces; 表空间的状态属性主要有在线(ONLINE)、离线(OFFLINE)、只读(READ ONLY)和读写(READ WRITE)4种 4.修改表空间的状态 alter tablespace 表空间名 状态;可以修改表空间的状态 第七章 表查看该帐户下所有的表:第一种、select * from cat;第二种、select * from tab; 建表CREATE TABLE 表名(列名 列类型,);如:create table student(id int,name varchar2(5),address varchar2(10); -创建一个具有ID NAME ADDRESS 的学生信息表创建完表以后可以利用:desc 表名 来查看如 dest student; 如名称、类型、是否为空。 修改表1.增加新列 ALTER TABLE 表名 ADD 列名 列类型 ADD 列 类型; 如新一个电话的列:alter table student add tel number; 增加一个新的列后给其赋值:update student set tel=15114562383 where id=2;2.删除旧列 ALTER TABLE 表名 DROP COLUMN 列名;3.修改列类型(要求,列中无数据) ALTER TABLE 表名 MODIFY 列名 列类型4.修改列名 ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名; 5.修改表名 RENAME 表名 TO 新表名; 插入(记录)数据,也就是给列赋值1.给其相应的字段赋值:INSERT INTO表名(列名1,) VALUES(值1,); 注:中的内容可写可不写如:INSERT INTO student(id,name,addredd) VALUES(1,'李小龙','河北省');2.赋全值 INSERT INTO student VALUES(1,'李小龙','河北省');3.赋值以后查看该表的内容: select * from student;4.插入日期格式的值:INSERT INTO 列名(列名)VALUES (TO_DATE('2005-10-18', 'YYYY-MM-DD'); 修改记录UPDATE 表名 SET 列名=值,.WHERE 条件;如 update 表名 set tname='李小龙' where tname='李建龙' ->这是一个条件限制 删除(记录)数据第一种方法: DELETE FROM 表名 WHERE 条件; 第二种方法: TRUNCATE TABLE 表名; 利用现有的表创建表 语法:CREATE TABLE <new_table_name> ASSELECT column_names FROM <old_table_name>如:SQL> CREATE TABLE newitemfile AS SELECT * FROM itemfile;->所有的列SQL> CREATE TABLE newitemfile1 AS SELECT itemcode, itemdesc, qty_hand ->选择特定的列 FROM itemfile;SQL> CREATE TABLE newitemfile2 AS SELECT * FROM itemfile WHERE 1 = 2;->建表时的条件,这里是1=2,明显为假,但是可是以建表,但是空的内容为空。 不带条件的DELETE和TRUNCATE TABLE的区别:*在功能上,TRUNCATE TABLE是清空一个表的内容,它相当于DELETE FROM table_name。*DELETE是dml操作,truncate table是ddl操作;因此DELETE可以回滚,TRUNCATE TABLE不可回滚。*TRUNCATE TABLE 调整high water mark 而DELETE不;TRUNCATE TABLE之后,TABLE的HWM退回到 INITIAL和 NEXT的位置(默认)delete 则不可以。*TRUNCATE TABLE 只能对TABLE进行操作, DELETE可以是table,view,synonym。*TRUNCATE TABLE不会触发 DELETE触发器*日志记录方式不同, DELETE逐行记录删除日志,TRUNCATE TABLE只记录在磁盘上某一 第八章 函数 函数数据库系统中,每个数据库之中唯一最大的区别就是函数的支持上,使用函数可以完成一系列的操作能。Oracle 提供一系列用于执行特定操作的函数。SQL 函数带有一个或多个参数并返回一个值以下是SQL函数的分类:单行函数、分组函数、分析函数一、单行函数单行函数对于从表中查询的每一行只返回一个值可以出现在 SELECT 子句中和 WHERE 子句中 单行函数可以大致划分为: 字符函数:接受字符输入并且返回字符或数值 数值函数:接受数值输入并返回数值 日期函数:对日期型数据进行操作 转换函数:从一种数据类型转换为另一种数据类型 通用函数:NVL函数、DECODE函数 单行函数的的语法: function_name(columnle expression,arg1,arg2.) function_name:函数的名称 culumnle:数据库列名 expression:字符串或计算表达式 arg1,arg2:函数中使用的参数时间类型函数SYSDATE返回当前的系统时间ADD_MONTHS(date,x)返回加上x月后的日期DATE的值,X可以是任意的整数,如果结果的月份中所包含的日份量不于DATE的月份的日份量,则返回结果月份的最后一天,如果不小于,则结果与DATE的日份量相同。LAST_DAY(日期)指定日期所在月份的最后一天的日期,TRUNC(日期,MONTHYEAR)返回指定月份的第一天。日期运算:日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果日期函数包括:ADD_MONTHS、MONTHS_BETWEEN、LAST_DAY、ROUND、NEXT_DAY、TRUNC范例一:返回date1与date2之间相差的天数。该值是一个数值,其小数部分代表一天的几分之几。SQL> select to_date('2010-01-31','yy-mm-dd')-to_date('2010-01-01','yy-mm-dd') as 相差天数 from dual;(相差天数是一个别名) 相差天数- 30范例二:返回date1与date2之间的时间间隔select to_date('2010-01-01 10:30','yy-mm-dd hh:mi')-to_date('2010-01-31 09:31','yy-mm-dd hh:mi') from dual;TO_DATE('2010-01-0110:30','YY-MM-DDHH:MI')-TO_DATE('2010-01-3109:31','YY-MM-DDHH:MI')- -29.9590282、字符函数Initcap(char):将首字母转换为大写 eg:Select initcap('hello')from dual;->Hello Lower(char):转化为小写eg:Select lower(FUN) from dual;->fun Upper(char):转化为大这与eg:Select upper(sun) from dual;->SUN Ltrim(char,set):从左边开始截取字符(一般用来截取空格)eg:Select ltrim( xyzadams,xyz) from dual;->adamsTrim():从两端截取eg:SQL> SELECT TRIM('a' FROM 'abcda') FROM dual;->abcRtrim(char,set):从右边开始截取字符(右截空格)eg:Select rtrim(xyzadams,ams) from dual;-> xyzad Translate(char, from, to):替换单个字符eg:Select translate(jack,j ,b) from dual; -> back Replace(char, searchstring,rep string):替换多个字符eg:Select replace(jack and jue ,j,bl) from dual;->black and blu