【oracle表的管理 -表名和列的命名规则】
①必须以字母开头
②长度不能超过 30 字符
③不能使用 oracle 的保留字
④只能使用如下字符 A-Z, a-z, 0-9, $, # 等
【oracle支持的数据类型(没有2000那么多的类型,这样就简单了)】
字符型
char 定长,最大2000字符
例子:
char(10): '小韩'前四个字符放‘小韩’,后添加6个空格补全
varchar2(10): 变长,最大4000个字符。
'大寒'oracle分配四个字符。这样可以节省空间。
注意: 一个汉字站 两个字符
clob: (全称character large object)字符型大对象,最大4G。
注意:char虽然浪费空间,但是效率很高,查询速度很快!
学号、身份证 字段,一般来讲不是15位就是18位,现在一般来讲
是18位,肯定是会用 char定长类型 的,因为查询速度极快!
varchar的话灵活,空间利用率高,不过查询速度比char慢!
一个东西的存在必然是会有他的道理的~
数字型
number 范围 -10的38次方~10的38次方
可以表示证书,也可以表示小数
number(5,2)
表示一个小数有5位有效数,2位小数
范围 -999.99~999.99
number(5)
表示一个五位整数。
范围 -99999~99999
日期类型
date 包括 年月日 和 时 分 秒
timestamp 这是 oracle9i 对 date 数据类型的扩展(精度高)
注意:如果是银行项目的话,可以考虑用 timestamp~
blob
二进制数据 可以存放图片、声音 4G
注意:实际上在真实项目里面,一般来讲不会说把声音和图片真往数据库
里面存放,我们只是在数据库里存放一个路径而已,其实是把声音
和视频文件放在另一个文件夹下面,这是一个老的套路,管理起来
比较方便,如果媒体文件保密性很高,则一定要放在数据库里面,
这样更安全一些。如果普通的话,直接存在一个文件夹下面,数据库
里面存放媒体文件的路径~
【oracle表的管理 -- 怎样创建表】
1.创建学生表
create table student ( -- 表名
stu_number number(4), -- 学号
stu_name varchar2(20), -- 姓名
sex char(2), -- 性别
birthday date, -- 出生日期
salary number(7,2) -- 奖金
);
2.创建班级表
create table classes(
class_id number(2);
class_name varchar2(40);
);
①添加一个字段(添加字段是没有问题的,因为是加在最后面的)
alter table student add (class_id number(2));
②修改字段的长度
alter table student modify (stu_name varchar2(30));
③修改字段的类型、或是名字(不能有数据)
alter table student modify (stu_name char(30));
④删除一个字段(这个操作时很危险的,最好不要动!)
alter table student drop column salary;
⑤修改表的名字(一般情况下很少有这种需求)
rename student to stu;
⑥删除表
drop table student;
【oracle表的管理 -- 添加数据】
①所有字段都插入
insert into student values('A001', '张三', '男', '01-5月-05', 10);
注意:
ORACLE中默认的日期格式‘dd-mon-yy’
dd:日子(天)
mon:月份
yy:2位的年
'09-6月-99':1999年6月9号
改日期的默认格式
alter session set nls_date_format = 'yyyy-mm-dd';
修改后,可以用我们熟悉的格式添加日期类型了:
insert into student values('A002', 'MIKE', '男', '1905-05-06', 10);
②插入部分字段
insert into student(stu_number, stu_name, sex) values ('A003', 'JOHN', '女');
③插入空值
insert into student (stu_number, stu_name, sex, birthday) values(3, 'martin', '男', null);
④查询某个字段为空的记录
select * from student where birthday is null;
⑤查询某个字段不为空的记录
select * from student where birthday is not null;
⑥改一个字段
update student set sex='女' where stu_number=1;
⑦修改多个字段
update student set sex='男', birthday='1980-04-01' where stu_number=1;
update student set salary=salary/2, class_id=3 where sex='男';
8.修改含有null值的数据
=null是不对的,要用 is null;
9.删除数据(即使将数据删除了也可以恢复 -- rollback 即可)
delete from student;
删除所有记录,表结构还在,写日志,可以恢复的,速度慢
drop table student; --删除表的结构和数据
delete from student where stu_number='1'; 删除一条记录
truncate table student;
删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度极快!
写日志,恢复
做一个保存点aa savepoint aa;
回滚到aa -- rollback to aa;
一个有经验的oracle管理员上来之后的第一件事情就是创建保存点。
保存点是可以做多个的!(建了一个新的保存点旧的保存点就被覆盖了)
oracle的这个机制接触了dba的后顾之忧,是一个很好的功能~