Oracle PL\SQL操作(二)

Oracle的数据类型

1.字符类型

•CHAR(n) 定长字符串,n字节,n的取值范围:1~2000字节。

•VARCHAR2(n) 可变长的字符串,定义时应指明最大长度,取值范围:1~ 4000字节。

•LONG 可变长字符列,最大长度限制2GB,一种较老的数据类型,逐渐被BLOB、CLOB、等大对象数据类型所取代。

2.数字类型

•NUMBER(m,n) 可变长的数值列,m有效数字的位数,n小数点以后的位数。

3.日期类型

•DATE 从公元前4712年1月1日到公元4712年12月31日。定义中还包括时间,时、分、秒。默认格式为:DD-MON-YY, 如:07-11月-05表示2005年11月7日。

4.大对象类型

•大对象类型数据主要有3种,分别是BLOB、CLOB、NCLOB。最大长度4GB,主要用来保存各种较大的文件,如:WORD文件、音频文件、视频文件等。

•Bfile数据类型 在数据库外部保存的大型二进制文件,最大长度是4GB。Oracle 9i可以读取、查询Bfile,但是不能写入。

        CLOB:用来存储单字节的字符数据
  NCLOB:用来存储多字节的字符数据
  BLOB:用于存储二进制数据
  BFILE:存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
  CLOB,NCLOB,BLOB都是内部的LOB类型,最长4G,没有LONG只能有一列的限制
  我要保存图片、文本文件、Word文件各自最好用哪种数据类型的呀?
  BLOB最好,LONGRAW也不错,但Long是oracle将要废弃的类型,因此建议用LOB。

   文本文件VS二进制文件--http://www.cnblogs.com/mjgforever/archive/2008/02/27/1083584.html

 

Oracle的运算符

 

1.ANY/SOME 比较其中任意值,该符号前必须是比较运算符(= != < > <= >= )。
SQL>select ename,sal 

from emp 

where sal<=any(860,1100); 

2.ALL 比较列出来的每一个值,前面的比较符必须是= != < > <= >= 。

SQL>select ename,sal 

from emp 

where sal<=all(860,1100); 

3.[NOT]NETWEEN m AND N

如果值大于或等于m且小于或等于n,则返回TRUE 。

SQL>select ename,sal 

from emp 

where sal between 1000 and 1500; 

4.[NOT] EXISTS

如果子查询里至少返回一行则EXISTS为TRUE。

SQL>select ename,sal 

from emp 

where exists(select * from emp where sal>8000); 

5. [NOT] LIKE n

用来返回列内容跟传送给函数的常量相似的所有行。

SQL>select ename,sal 

from emp 

where ename like 'S% ‘; 

6.IS [NOT] NULL

用来测试所要操作的值是否为空。

SQL>select ename,sal 

from emp 

where sal is null; 

7.NOT 用来对结果取反。

SQL> select ename,sal 

from emp 

where not(sal=800) ; 

8.AND 用来限制条件,当两个条件同时成立时返回TRUE,否则返回FALSE。

SQL> select ename,sal 

from emp 

where sal>1200 AND SAL<2500;

9.OR 当两个条件有一个成立时返回TRUE,否则返回FALSE。

SQL>select ename,sal 

from emp 

where sal>3000 OR SAL<900; 

 

高级数据操作

1.排除记录

–使用OR连接两个条件

–使用NOT BETWEEN 排除记录

–使用!= 或<>排除记录

SELECT * 

FROM emp 

WHERE sal>2000 OR sal<1000 


SELECT * FROM emp 

WHERE sal NOT BETWEEN 1000 AND 2000 

2.基于一组可接受的值选择记录。

使用集合操作符IN

SELECT ename,sal 

FROM emp 

WHERE ename IN (‘SMITH’,’JONES’,’BLAKE’) ; 
3.基于文本过滤记录 

–使用LIKE操作符。

–使用通配符% ,%通配符表示文本可以是任何数量的字符。

–使用通配符_ ,下划线(_)通配任何一个字符。

SELECT * FROM emp 

WHERE ename LIKE ‘S%’; 


SELECT * FROM emp 

WHERE ename LIKE ‘%S_I%’; 
4.基于日期过滤记录 

类似于基于数值的选择。由于比较值是日期,因此切记用单引号将所指定的日期括起来。

SELECT * FROM emp 

WHERE hiredate = ‘17-12月-80’; 


SELECT * FROM emp 

WHERE hiredate > ‘17-12月-80’; 

5.基于空值选择记录

通过在WHERE子句中放置IS NULL来检查空值。

insert into dept values(12,'asdf',null); 

SELECT * FROM dept 

WHERE loc is not null ; 

6.改变记录顺序

–按单列排序

使用ORDER BY子句。默认按升序,降序时需加DESC。

SELECT ename, sal FROM emp ORDER BY ename; 

SELECT ename, sal FROM emp ORDER BY sal DESC; 

–按多列排序

即第一排序字段、第二排序字段。

SELECT ename , sal,hiredate FROM emp 

ORDER BY sal,hiredate ; 

7.显示唯一值

去掉列中重复的值。使用子句:DISTINCT或UNIQUE。

SELECT distinct sal from emp; 

SELECT unique sal from emp; 

8.从DUAL 中选择

DESC DUAL;
SELECT * FROM DUAL;
select 45*0.24 from dual;
select sqrt(25) from dual;(开平方)
DUAL表包含一列和一行。DUAL表的数据从不直接使用,只用于支持类似上面所进行的临时查询。
9.更改表中数据 

执行UPDATE操作即可很容易地修改表中的数据。语法如下:

UPDATE 表名 SET 列名=新值 WHERE 条件;

UPDATE emp 

SET sal = 2600 

WHERE ename=‘SMITH’ ; 

10.删除表中的记录

处理表时所需要的最后一个基本技术是删除记录的能力。DELETE命令的语法如下:

DELETE FROM 表名 WHERE 条件;

insert into dept values(89,'dsf','dsfasdf'); 

delete from dept where deptno=89; 

使用此命令时一定要考虑指定条件!!不指定条件将删除表中的所有行。

11.截断一个表

该命令的优点是速度快。当Oracle执行此命令时,它不读取表中已有的记录,而是直接截掉这些记录,并且还自动释放被截断的记录以前所占用的表空间,该操作是不可逆的。

TRUNCATE TABLE 表名

12.ROLLBACK

ROLLBACK所提供的功能是一个很有用的撤消机制,并且不限制为一个级别的撤消。通过将ROLLBACK与另一个命令SAVEPOINT(保存点)配对使用,指定ROLLBACK命令可返回的任何数量的位置点。

13.提交事务COMMIT

–使用COMMIT命令将使对表的更改永久保存。由于COMMIT命令使Oracle将你所做的更改写入数据库的表中,使回退不再可能,因此在提交前所出现的任何保存点都被清除。

14.隐式和显式的COMMIT

       某些Oracle命令自动执行一个COMMIT,而不用等待你去发出该命令,换句话说,COMMIT是隐式执行的。任何DDL命令在执行其功能前(如CREATE TABLE或DROPDROP TABLE)都将隐式提交所有未保存的数据。另外,退出Oracle(或关闭SQL*PLUS)前将自动提交更改。

 

转载:http://www.cnblogs.com/cxccbv/archive/2009/07/08/1519100.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值