kosam

任重道远 毋忘奋斗

导航

oracle 11g 学习笔记 2012_10_25(2)

oracle表的管理

1)表名和列的命名规则

  * 必须以字母开头
  * 长度不能超过30字符
  * 不能使用oracle 的保留字
  * 自能使用如下字符 A-Z,a—z,0-9,$,#等 

2)oracle支持的数据类型

  * 字符型 
    char 定长,定了长度之后就不能改变了,查询时的效率高 最大 2000字符
    varchar2(20) 变长,动态改变字符的长度 最大4000字符
  * 数字型
    oracle中表示数字的只有number。
    number的表示范围在-10的38次方~10的38次方,它可以表示正数,也可以表示小数。
    
    小数的表示:number(m,n)表示的是这个数的有效数是m,有n位小数。
    正数的表示:number(m)表示的是这是一个五位数正数。
  *日期类型

    date 包含了 年月日和时分秒

   oracle默认的日期类型是"dd-mon-yy",如'12-5月-90'。我们可以用函数 to_date(‘1990-05-12’,‘yyyy-mon-dd’)格式化成我们熟悉的格式。也可以这样修改日期的默认格式:

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

  *图片类型 二进制数据
    oracle中的图片类型不单止可以存放图片,还可以存放声音视频。
    但是真是项目中,我们一般不会把图片直接放进去数据库中,一般只是在数据库里存放一个路径而已,把图片视频等放在一个资源文件夹里读取。当该图片视频的保密性很高时才把它们放进数据库里面。

3)建表

.建立学生表和班级表。
SQL> create table student(
  2  xh number(4),
  3  xm varchar2(20),
  4  sex char(2),
  5  birthday date,
  6  sal number(7,2)
  7  );
 
Table created
 
SQL> create table classes(
  2  classId number(2),
  3  cname varchar2(40)
  4  ); 


Table created


.表空间
通俗地说是表存放的地方,就如是把一个文件是放在C盘还是放在D盘那种感觉。oracle已经为我门创建了好几个表空间,方便我们管理表。就如为什么要有几个硬盘一样,每一个硬盘都会放不同的文件,这样管理就方便多了。
建表我们可以通过pl/sql developer 这个可视化的工具操作,也可以在命令行里面操作,在不熟悉的前,最好是先熟悉命令,因为数据库这么多,每个数据库的可视化工具不经相同,而命令可大致是相同的。
.表的修改:
添加一个字段:
这个字段一般是添加在最后的。
 alter table student add( classId number(2));
.删除一个字段:
在删除一个字段时,要考虑清除,要是没有到了非删不可的地步,最好就不要删了。特别是在做项目时,如果表删除了某个字段,当输入数据时,输入的格式可能还是原来的表结构那样输入,那么就很容易造成输入的错误。后果比较严重。
.删除表
drop table student;

(3)添加数据

.所有数据都插入
insert into student values ('A001','张三','男','01-5月-05',10);
oracle中默认的格式为‘DD-MON-YY
修改日期的默认格式:
alter session set nls_date_format = 'yyyy-mm-dd';
那么修改后默认的格式插入就不可以了。
按上面的格式在插入一个值测试:
insert into student values ('A002','MIKE','男','1990-07-05',10);
.插入部分字段
insert into student(xh,xm,sex) values('A003','JOHN','男');
.插入空值
insert into student(xh,xm,sex,birthday) values('A004','MARTIN','男',null);
要是在创建表时已经约束了birthday不能空值的时候,上面的语句就会报错了。


(4)修改数据(update)

.修改一个字段
update student set sex='女' where xh = '1';
.修改多个字段
update student set sex = '男',birthday = ‘1990-08-12’where xh = '2'; 

(5)删除数据

一、只删除数据
delete from student;
要是希望删除可以回复数据,可以在删除前,保存一个点 savepointaa; 保存点
执行删除数据命令后,再执行回滚命令,rollback to aa; 那么,数据就会恢复到aa保存的这个保存点之前的数据上。保存点就只能有一个。因此有经验的数据库管理员都是经常设置保存点的。
truncate table student;
这条语句中的所有数据记录都被删除,但是表结构还在,不写日记,因此也无法找回删除的记录,特点是速度快。
二、删除表的数据和结构
delete table student;

posted on 2012-10-25 23:32  kosam  阅读(147)  评论(0编辑  收藏  举报