现在的位置: 首页 > 综合 > 正文

Oracle 数据库笔记3

2018年05月18日 ⁄ 综合 ⁄ 共 2496字 ⁄ 字号 评论关闭

【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的后顾之忧,是一个很好的功能~
 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.