二、Oracle表的数据类型,数据库创建
-
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
-
建表
表空间:存放数据表的空间,为了便于管理。
建立一张学生表
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)
);
-
修改表
添加一个字段:
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;
-
添加数据
插入全部字段
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
-
修改数据
修改一个字段
update student set sex='女' where xh='A001';
修改多个字段
update student set sex='男',birthday='1984-03-12' were xh='A001';
修改含有null值的数据
条件:is null , is not null
-
删除数据
删除了所有的记录,但是表结构还在,写日志,可以恢复的,速度慢
delete from student;
删除表的结构和数据
drop table student;
删除一条记录
delete from student where xh='A001';
删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
truncate table student;
说明:
保存一个回滚点
savepoint aa;
如果用delete删除数据后可以回滚到回滚点
rollback to aa; 数据就又恢复到aa点的状态