二、Oracle数据类型

二、Oracle表的数据类型,数据库创建

  1. Oracle的数据类型

字符型

char,定长,字长2000个字符

例子:char(10) "小明"前4个字符放小明,后6个字符空格补全。

优点:查询效率极高,适用于定长字段。已知该字段是定长的,并且经常被作为where条件查询,如身份证号、学号等。

缺点:使用不当会导致占用额外的空间。

varchar2(20),变长,最大4000字符

例子:varchar2(20)"小明",Oracle只分配4个字符,这样可以节省空间。

优点:节省空间。

缺点:由于是定长,查询时效率没有char高,因为需要一个一个字符的比较。

clob(char large object),字符大对象,最大4G

 

数字型:

number,范围-10的38次方——10的38次方,可以表示整数,也可以表示小数。

例子:number(5,2) 表示一个有5位有效数,2为位数。范围-999.99——999.99

number(5) 表示一个5位整数,范围-99999——99999

 

日期类型:

date,包含年月日和时分秒

timestamp,这是oracle9i对数据类型的扩展

 

图片:

blob,二进制数据,可以存放图片,声音,视频。 最大4G

 

  1. 建表

表空间:存放数据表的空间,为了便于管理。

建立一张学生表

create table student( --表明,student

xh number(4), --学号

name varchar2(20), --姓名

sex char(2), --性别

birthday date, --生日

sal number(7,2) –奖学金

);

 

建立一张班级表

create table class(

classId number(2),

className varchar2(20)

);

 

  1. 修改表

添加一个字段:

alter table student add (classId number(2));

修改字段的长度

alter table student modify (name varchar2(30));

修改字段的类型,或是名字(不能有数据)

alter table student modify (name char(30));

删除一个字段

alter table student drop column sal;

修改表的名字

rename student to student2;

删除表

drop table student;

 

  1. 添加数据

插入全部字段

insert into student values('A001', '张三', '男', '01-5月-05', 500.5, 11);

说明:在Oracle中默认日期格式是'DD-MON-YY', dd日子(天),mon月份,yy2位的年份(4位的也行),例如:'09-6月-99',表示1999年6月9日

修改日期的默认格式:

alter session set nls_date_format = 'yyyy-mm-dd';

修改后,就可以用熟悉的格式添加日期了:

insert into student values('A002', '李四', '男', '1995-05-06',500.05, 10);

 

插入部分字段

insert into students(xh, name, sex) values('A003', 'Lucy', '女');

 

插入空值

insert into student(xh, name, sex, birthday) values('A004', 'Martin', '男', null);

插入空值后查询:

select * from student where birthday is null; (与其他数据库不同的地方)

空值:is null

非空值:is not null

 

  1. 修改数据

修改一个字段

update student set sex='女' where xh='A001';

修改多个字段

update student set sex='男',birthday='1984-03-12' were xh='A001';

修改含有null值的数据

条件:is null , is not null

 

  1. 删除数据

删除了所有的记录,但是表结构还在,写日志,可以恢复的,速度慢

delete from student;

删除表的结构和数据

drop table student;

删除一条记录

delete from student where xh='A001';

删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快

truncate table student;

 

说明:

保存一个回滚点

savepoint aa;

如果用delete删除数据后可以回滚到回滚点

rollback to aa; 数据就又恢复到aa点的状态

 

posted on 2013-01-31 21:41  Frank.Fan  阅读(352)  评论(0编辑  收藏  举报