- 创建表. 基本与标准SQL相同,不过要加上指定表空间的子语句如: TABLESPACE abc
- 查询表信息
SELECT table_name, owner, tablespace_name, temporary FROM dba_tables;
和
SELECT segment_name, owner, tablespace_name, extents, blocks FROM dba_segments WHERE segment_name = '表名';
和
SELECT object_id, object_name, object_type, status, created FROM dba_objects;
和
SELECT index_name, table_name, tablespace_name, status, FROM dba_indexes; - 创建临时表以加快操作速度.(只会话内可见)
CREATE GLOBAL TEMPORARY TABLE abc.xxx ON COMMIT PRESERVE|DELETE ROWS AS (SELECT * FROM xxx WHERE xxx01 = 1);
其中: ON COMMIT PRESERVE ROWS 数据在事务提交后还可用 ON COMMIT DELETE ROWS 是默认值,数据只在事务中可见 - 变更表的存储参数
ALTER TABLE abc.xxx PCTFREE 20 PCTUSED 50; - 手动为表多分配一个区段
ALTER TABLE abc.xxx ALLOCATE EXTENT [SIZE 10M] [DATAFILE 'c:/abc/xxx']
不指定SIZE时根据NEXT_EXTENT参数自动分配大小.不指定DATAFILE时,在该表所在表空间的任一文件中创建.DATAFILE不可以指定表空间所属文件以外的文件. - 移动表到另一表空间(注意需要重建表所属的索引,变更后dba_objects表的对应索引状态是有效,但是dba_indexes表的状态就是失效.此时dba_objects表的数据不可信)
ALTER TABLE xxx MOVE TABLESPACE tablespace_name;
重建索引: ALTER INDEX index_name REBUILD TABLESPACE tablespace_name; - 重命名表中一列
ALTER TABLE xxx RENAME COLUMN old_name TO new_name; - 删除表中一列
a.) ALTER TABLE xxx DROP COLUMN col_name CASCADE CONSTRAINTS CHECKPOINT 500;
其中CHECKPOINT 500意为每500行操作执行一次检查点.
b.) 如果执行中系统崩溃,以以下命令继续执行:
ALTER TABLE xxx DROP COLUMN CONTINUE;
c.) 由于删除列时需要占用大量资源执行操作,在繁忙时无法随便使用.可先将其失效,而后找时间删除.语法如下(不可逆转):
ALTER TABLE xxx SET UNUSED col_name CASCADE CONTRAINTS;
d.) 删除未占用的列
ALTER TABLE DROP UNUSED COLUMNS CHECKPOINT 1000; - 清空和删除表
TRUNCATE TABLE xxx;
DROP TABLE xxx [CASCADE CONSTRAINTS];
Oracle常用表管理操作
最新推荐文章于 2021-04-08 12:03:17 发布