Oracle笔记(九)表的创建及管理(一)

2014-11-24 16:10:17 · 作者: · 浏览: 2
Oracle笔记(九)表的创建及管理
相关链接:
Oracle笔记(一)Oracle简介及安装
http://www.2cto.com/database/201209/154049.html;
Oracle笔记(二)SQLPlus命令
http://www.2cto.com/database/201209/154051.html;
Oracle笔记(三)Scott用户的表结构
http://www.2cto.com/database/201209/154052.html;
Oracle笔记(四)简单查询、限定查询、数据的排序
http://www.2cto.com/database/201209/154054.html;
Oracle笔记(五)单行函数
http://www.2cto.com/database/201209/154056.html;
Oracle笔记(六)多表查询
http://www.2cto.com/database/201209/154060.html;
Oracle笔记(七)数据更新、事务处理、数据伪列
http://www.2cto.com/database/201209/154062.html;
Oracle笔记(八)复杂查询及总结
http://www.2cto.com/database/201209/154063.html
对于 数据库而言实际上每一张表都表示的是一个数据库的对象,而数据库对象指的就是DDL定义的所有操作,例如:表、视图、索引、序列、约束等等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法:
创建对象:CREATE 对象名称 …;
删除对象:DROP 对象名称 …;
修改对象:ALTER 对象名称 …;
一、常用的数据字段 www.2cto.com
每一张数据表实际上都是由若干个字段所组成,而每一个字段都会有其对应的数据类型,而在 Oracle之中,常用的数据类型有如下几种:
数据类型
关键字
描述
1
字符串
VARCHAR2(n)
其中n表示的是字符串所能保存的最大长度,基本上保存200个左右的内容
2
整数
NUMBER(n)
表示最多为n位的整数,有时候也可以使用INT代替
3
小数
NUMBER(n,m)
其中m为小数位,n-m为整数位,有时候也可以使用FLOAT代替
4 www.2cto.com
日期
DATE
存放日期-时间
5
大文本
CLOB
可以存储海量文字(4G),例如存储《三国演艺》、《红楼梦》
6
大对象
BLOB
存放二进制数据,例如:电影、MP3、图片、文字
一般在开发之中使用最多的:VARCHAR2()、NUMBER、DATE、CLOB,而对于BLOB字段一般使用较少,首先BLOB可以存放4G的二进制数据,但是存放进去之后,一是数据库过于庞大,二是读取不方便;
二、表的创建
如果现在要想进行表的创建,可以使用如下的操作语法:
CREATE TABLE 表名称 (
字段1 数据类型 [DEFAULT默认值],
字段2 数据类型 [DEFAULT默认值],
… …,
字段n 数据类型 [DEFAULT默认值]
); www.2cto.com
下面创建一张成员表(member),有如下保存的信息:姓名、年龄、生日、个人简介。
CREATE TABLE member (
name VARCHAR2(50) DEFAULT '无名氏',
age NUMBER(3),
birthday DATE DEFAULT SYSDATE,
content CLOB
);
表创建成功之后,下面开始向表中增加数据:
INSERT INTO member(name,age,birthday,content) VALUES('张三',20,TO_DATE('1990-08-12','yyyy-mm-dd'),'一个好人');
INSERT INTO member(age,content) VALUES(20,'一个好人');
一定要再次记住,表的创建是属于数据库对象的创建,所以使用的是CREATE语法。
三、表的复制
在之前学习过表的复制操作,下面给出其完整的操作语法:
CREATE TABLE 复制表名称 AS 子查询;
范例:复制一张只包含20部门雇员信息的表
CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20;
范例:现在要求将emp表的表结构复制出来,不要数据 —— 写一个永远满足不了的条件即可。
CREATE TABLE empnull AS SELECT * FROM emp WHERE 1=2;
但是以上的语法只是Oracle数据库所支持的操作,其他的数据库语法上会有一些区别。
四、为表重命名
在Oracle数据库之中,所有的数据实际上都是通过数据字典保存的,例如,在之前曾经使用过如下的一种查询:
SELECT * FROM tab;
以上就是一个数据字典,而在Oracle之中,提供了三种类型的数据字典,最常用的是:dba_、user_,所以下面查询一个user_tables数据字典:
SELECT * FROM user_tables;
也就是说Oracle中的所有数据都是按照文件保存的,那么所有的内容都会在数据字典中注册,既然这样,所谓的修改表名称实际上对于Oracle而言就相当于修改一条数据而已,而修改表名称的方法如下:
RENAME 旧的表名称 TO 新的表名称;
范例:将member表更名为person表
RENAME member TO person;
但是这种操作由于是Oracle数据库所独有的一种特性,所以了解即可,不用做深入的掌握。
五、截断表 www.2cto.com
在之前曾经讲解过一个删除表数据的操作,使用的是DELETE操作,但是这种删除操作本身有一个特点,即:可以进行事务的回滚,也就是说删除之后并不会立刻释放数据的资源,如果现在希望彻底释放掉一张表所占用的全部资源(表空间、索引等等)就可以使用截断表的语法,此语法如下:
TRUNCATE TABLE 表名称;
范例:截断person表
TRUNCATE TABLE person;
但是这种语法本身只是Oracle所有的,所以只做了解即可。
六、表的删除
表的删除操作指的是数据库对象的删除,既然是删除则使用DROP语句,删除表的语法如下:
DROP TABLE 表名称;
范例:删除person表
DROP TABLE person;
七、Oracle 10g的新特性:闪回技术
在Oracle 10g之后,为了预防用户的误删除表操作,专门提供了回收站的功能,用户所删除的表默认情况下会在一个回收站之中保存,而用户也可