Oracle:常用的一些基本操作

  • 表操作

查看系统中当前用户所有表:

select * from user_tables;
select * from user_indexs;
select * from user_triggers;
select * from user_triggers where table_name='table name';

查看某个表的表结构:

describe table_name;

查看某个表的创建脚本语句:

SET LONG 2000000;
SET PAGESIZE 0;
SELECT DBMS_METADATA.GET_DDL('TABLE','table_name') FROM DUAL;

查看某用户的某个表的创建脚本语句:

SET LONG 2000000;
SET PAGESIZE 0;
SELECT DBMS_METADATA.GET_DDL('TABLE','table_name','username') FROM DUAL;
  • 列操作

1)字段有值且为空,则不管改为什么字段类型,可以直接执行:

alter table tablename modify (colunmname varchar2(20));

2)字段有值且不为空,则改为nvarchar2(20)可以直接执行:

alter table tablename modify (columnname nvarchar2(20));

3)字段有值且不为空,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题:

/*修改原字段名oldcolumnname为newcolunmname*/
alter table tablename rename column oldcolunmname to newcolunmname;
/*增加一个和原字段名同名的字段newcolunmname*/
alter table tablename add newcolunmname varchar2(40);
/*将原字段oldcolumnname数据更新到增加的字段newcolumnname*/
update tablename set newcolunmname=trim(oldcolunmname );
/*更新完,删除原字段oldcolumnname*/
alter table tablename drop column oldcolunmname ;
  •  索引操作:
CREATE INDEX命令语法: 
CREATE INDEX
CREATE [unique] INDEX [user.]index
ON [user.]table (column [ASC | DESC] [,column
[ASC | DESC] ] ... )
[CLUSTER [scheam.]cluster]
[INITRANS n]
[MAXTRANS n]
[PCTFREE n]
[STORAGE storage]
[TABLESPACE tablespace]
[NO SORT]
Advanced 

备注:
schema ORACLE模式,缺省即为当前帐户
index 索引名
table 创建索引的基表名
column 基表中的列名,一个索引最多有16列,long列、long raw列不能建索引列
DESC、ASC 缺省为ASC即升序排序
CLUSTER 指定一个聚簇(Hash cluster不能建索引)
INITRANS、MAXTRANS 指定初始和最大事务入口数
Tablespace 表空间名
STORAGE 存储参数,同create table 中的storage.
PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)

原文地址:https://www.cnblogs.com/yy3b2007com/p/6756614.html