oracle中用SQL语句创建和管理表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 | ********.****.****格式,*为0或1 |
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语句创建和管理表的主要内容,如果未能解决你的问题,请参考以下文章