欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle维护数据表

程序员文章站 2024-03-21 11:57:10
...

在创建表后,如果发现对表的定义有不满意的地方,可以对表进行修改。这些修改操作包括增加或删除表中的字段、改变表的存储参数设置以及对表进行增加、删除和重命名等操作。普通用户只能对自己模式中的表进行修改,如果要对任何模式中的表进行修改操作,用户必须具有ALTER ANY TABLE系统权限。

创建一张学生信息表,用于实例的操作使用。

--创建“学生信息”数据表
CREATE TABLE STUDENT_INFO
(
  STU_ID INT NOT NULL,          --学号
  STU_NAME VARCHAR2(8),         --姓名
  SEX CHAR(2),                  --性别
  AGE INT,                      --年龄
  CLASS_NAME VARCHAR2(20),      --班级名称
  REGDATE DATE DEFAULT SYSDATE  --创建期间
);


1、增加和删除字段

在创建表后,可能会需要根据应用需求的变化向表中增加或删除列,用户可以使用ALTER TABLE…ADD语句能够向表中添加新的字段。

【实例】在STUDENT_INFO(学生信息)表中增加一个address(地址)新字段并增加注释。
--增加字段
ALTER TABLE STUDENT_INFO ADD(ADDRESS VARCHAR2(50) DEFAULT '深圳' NOT NULL); 

--增加注释
COMMENT ON COLUMN STUDENT_INFO.ADDRESS IS '地址';

【实例】STUDENT_INFO(学生信息)表中删除一个address(地址)字段。

ALTER TABLE STUDENT_INFO DROP COLUMN ADDRESS;

【实例】STUDENT_INFO(学生信息)表中同时删除sex和age字段。

ALTER TABLE STUDENT_INFO DROP (SEX,AGE);

2、修改字段

除了在表中增加和删除字段外,还可以根据实际情况修改字段的有关属性,包括修改字段的数据类型的长度、数字列的精度、列的数据类型和列的默认值等。修改字段通常使用ALTER TABLE…MODIFY语句,其语法格式如下:

ALTER TABLE TABLE_NAME MODIFY COLUMN_NAMECOLUMN_PROPERTY

TABLE_NAME:表示要修改的列所在的表名称。

COLUMN_NAME:要修改的列名称。

COLUMN_PROPERTY:要修改列的属性,包括数据类型的长度、数字列的精度、列的数据类型和列的默认值等。

【实例】将STUDENT_INFO(学生信息)表中的STU_NAME字段的长度由8位更改为16位。

ALTER TABLE STUDENT_INFO MODIFY STU_NAME VARCHAR2(16);

3、重命名表

在创建表后,用户可以修改指定表的名称,但用户只能对自己模式中的表进行重命名。重命名表通常使用ALTER TABLE…RENAME语句,其语法格式如下:

ALTER TABLE TABLE_OLD_NAME RENAME TOTABLE_NEW_NAME

TABLE_OLD_NAME:表示原表名称。

TABLE_NEW_NAME:表示新表名称。

【实例】将STUDENT_INFO(学生信息)表重命名为STUDENT_INFO_NEW。

ALTER TABLE STUDENT_INFO RENAME TO STUDENT_INFO_NEW;

4、删除和恢复表

数据表在创建之后,根据实际需求情况,用户还可以将其删除。但需要注意的是,一般情况下用户只能删除自己模式中的表,如果要删除其它模式中的表,则必须具有DROP ANY TABLE系统权限。删除表通常使用DROP TABLE语句,其语法格式如下:

DROP TABLE TABLE_NAME [CASCADECONSTRAINTS];

参数TABLE_NAME表示要删除的表名称。如果该表存在约束、关联的视图和触发器等,则必须使用“CASCADE CONSTRAINTS”这个可选的子句才能将其删除。

【实例】删除STUDENT_INFO(学生信息)表。

--删除表
DROP TABLE STUDENT_INFO;

--删除表以及所有引用这个表的视图、约束或触发器等
DROP TABLE STUDENT_INFO CASCADE CONSTRAINTS;

【实例】利用Oracle 11g的闪回功能快速恢复被删除的STUDENT_INFO(学生信息)表。

--查询数据字典视图RECYCLEBIN来了解该表是否在回收站中
SELECT OBJECT_NAME,ORIGINAL_NAME FROM RECYCLEBIN WHERE ORIGINAL_NAME = 'STUDENT_INFO'

--恢复数据表
FLASHBACK TABLE STUDENT_INFO TO BEFORE DROP;

5、修改表的状态

Oracle 11g推出了一个新的特性,用户可以将表置于READONLY(只读)状态。处于该状态的表不能执行DML和某些DDL操作。在Oracle 11g之前,为了使某个表处于READ ONLY状态,只能通过整个表空间或者数据库置于READ ONLY状态,这样影响范围太大,不利益实际操作。

【实例】将STUDENT_INFO(学生信息)表置于只读状态。

ALTER TABLE STUDENT_INFO READ ONLY;

【实例】将STUDENT_INFO(学生信息)表从只读状态更改为读写状态。

ALTER TABLE STUDENT_INFO READ WRITE;