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