首页 > 代码库 > oracle中用SQL语句创建和管理表

oracle中用SQL语句创建和管理表

表名和列名的命名规则
 必须以字母开头
 必须在1-30个字符之间
 只能包含A-Z,a-z,0-9,_,$,#
 不能与用户定义的其它对象重名
 不能使用ORACLE的保留字

创建前具备的条件:
 CREATE TABLE权限

建表时必须指定:
 表名
 列名,列的数据类型,最大长度

数据类型:
 varchar2(size) 变长字符型(最大长为4000字符)
 char(size)  定长字符型(最大2000字符)
 number(p,s)  数值型
 date   日期型
 long   变长大字符型(最大2G)
 CLOG   大字符型(最大4G)
 raw    裸二进制数据(最大2000字符)
 long raw  裸二进制数据(最大2G) 
 blob   二进制数据,最大4G
 bfile   外部二进制文件,最大4G
 

类型含义存储描述备注
CHAR固定长度字符串最大长度2000bytes 
VARCHAR2可变长度的字符串,最大长度4000bytes可做索引的最大长度749
NCHAR根据字符集而定的固定长度字符串最大长度2000bytes 
NVARCHAR2根据字符集而定的可变长度字符串最大长度4000bytes 
DATE日期(日--年)DD-MM-YY(HH-MI-SS),经过严格测试,无千虫问题 
TIMESTAMP日期(日--年)DD-MM-YY(HH-MI-SS:FF3),经过严格测试,无千虫问题DATE相比较,TIMESTAMP有小数位秒信息
LONG超长字符串最大长度2G,足够存储大部头著作 
RAW固定长度的二进制数据最大长度2000bytes可存放多媒体图象声音等
LONG RAW可变长度的二进制数据最大长度2G可存放多媒体图象声音等
BLOB二进制数据最大长度4G 
CLOB字符数据最大长度4G 
NCLOB根据字符集而定的字符数据最大长度4G 
BFILE存放在数据库外的二进制数据最大长度4G 
ROWID数据表中记录的唯一行号10bytes********.****.****格式,*01
NROWID二进制数据表中记录的唯一行号最大长度4000bytes 
NUMBER(P,S)数字类型P为整数位,S为小数位 
DECIMAL(P,S)数字类型P为整数位,S为小数位 
INTEGER整数类型小的整数 
FLOAT浮点数类型NUMBER(38),双精度 
REAL实数类型NUMBER(63),精度更高


创建语法:
 create table [schema.]tablename
 (column datatype [default expr] [constaint],
 ....)

查看表结构:
 desc tablename
 
oracle表的类型
 用户自定义表
 数据字典
  oracle 自动创建的一组表
  包含了数据库的自身信息,用于管理和维护数据库用

 关于表的数据字典:
  user_catalog,all_catalog,dba_catalog,
  user_tables,all_tables,dba_tables,

 user_tables 自已建的表
 all_tables 自已可以访问的表
 dba_tables 数据库中所有的表

如何克隆一个表
 克隆整个表:
  create table emp as select * from scott.emp;
 克隆表结构:
  create table emp2 as select * from scott.emp where 1=2;
 
 
如何查看一个表占用的磁盘空间:
 dba_extents,
 dba_segments


 insert into emp select * from emp;

 select SEGMENT_NAME,SUM(BYTES)/1024/1024
 from dba_extents where SEGMENT_NAME=‘EMP‘ AND OWNER=‘SYS‘
 GROUP BY SEGMENT_NAME;

  SELECTOWNER,SEGMENT_NAME,SEGMENT_TYPE,
 TABLESPACE_NAME,bYTES/1024/1024
   FROM DBA_SEGMENTS WHERE SEGMENT_NAME=‘EMP‘;
 
数据字典中更新表信息
 exec dbms_stats.gather_table_stats(‘SCOTT‘,‘TEST‘);

 

修改表:
 添加新列
 alter table tablename
 add (column datatype [default expr]);


 删除列:
 alter table tablename
 drop column colname

 列改名:
 alter table tablename
 rename column colname to new_colname

 表改名:
 alter table tablename rename to new_tablename
 rename test2 to test

 修改列的数据类型,尺寸和默认值
 alter table tablename
 modify (column datatype [default values])

 将列标记为不可用:
 alter table tablename
 set unused(column)

 删除表
 drop table tablename
 
 截断表(删除所有记录,保留表结构)
 truncate table tablename

 表加注释
 comment on table tablename is ‘...注释内容...‘


 列加注释
 comment on column tablename.column is ‘......‘


 与注释相关的数据字典
 all_col_comments
 user_col_comments

 all_tab_comments
 user_tab_comments

关于表结构的数据字典:
 dba_tab_columns


使用空值和默认值
 隐式:插入记录时,不指定字段,不指定值
 显示:插入记录时,空值字段填null,默认值字段填default

 

参:http://blog.sina.com.cn/s/blog_690d63f80100jiq4.html

oracle中用SQL语句创建和管理表