ORACLE学习04-表的操作

一、表的创建

 
格式:
create table 表名(
字段 字段类型 约束,
... ...
);
[comment on column 表/字段 is 注释;]
 
例子:
create table COMPANY
(
COM_ID INTEGER not null,
COM_NAME VARCHAR2(32) null,
COM_ADDRESS VARCHAR2(100) null
);
 

三、表的修改和删除

  • 修改表的名称
alter table old表名称 rename to new表名称
例子:
alert table COMPANY rename to student;
 
  • 删除表
删除表(同时删除表结构)并重新创建表
truncate table 表名称;
 
删除表中数据,不删除表结构
delete from 表名称;不会释放已经占用的空间。
 
删除表以及表中的数据
drop table 表名称 cascade constraints;
 
  • 使用drop 删除表的时候,回进入回收站
--查询当前用户的回收站
select object_name,type ,original_name from user_recyclebin where type='TABLE';
--删除回收站的数据,或者删除表不走回收站
drop table student purge;
purge table student;
 
  • drop、delete、truncate的区别
1.truncate 删除数据,重新建表;
delete只删除数据不删除表的结构;
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发;
truncate,dropddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动;
drop语句将表所占用的空间全部释放;
truncate 语句缺省情况下见空间释放到 minextents extent,除非使用reuse storage;truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用drop truncate,尤其没有备份的时候.否则哭都来不及
 
注意:
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
 
 

三、修改表结构

create table student(
sid int not null primary key,
sno number(12),
sname varchar2(32),
address varchar2(64),
birthday date
);
 
  • 修改字段名称
alter table 表名称 rename column old字段名 to new字段名;
alter table student rename column sname to name;

  • 修改字段类型
alter table 表名称 modify 列名称 类型;
alter table student modify birthday varchar2(12);
 
  • 删除字段
alter table 表名称 drop column 列名称;
alter table student drop column birthday ;
 
  • 添加字段
alter table 表名称 add 列名称 类型;
alter table student add birthday date ;
 
 

posted on 2016-03-19 16:16  sunny_八哥  阅读(162)  评论(0)    收藏  举报

导航