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 '......'
示例:
--NC接口调用异常表
create table Tab_NC_Interface_Log
(
objectid CHAR(36) not null,
instanceid CHAR(36),
contentjson NVARCHAR2(2000),
contentunusual NVARCHAR2(2000),
remark1 NVARCHAR2(2000),
remark2 NVARCHAR2(2000),
state INTEGER,
nums INTEGER,
method NVARCHAR2(200),
workflowcode NVARCHAR2(200),
activitycode NVARCHAR2(200),
createtime DATE,
lastmodifytime DATE,
fromsys NVARCHAR2(200),
tosys NVARCHAR2(200),
createby CHAR(36),
modifyby CHAR(36),
note1 NVARCHAR2(200),
note2 NVARCHAR2(200),
note3 NVARCHAR2(200),
note4 NVARCHAR2(200)
); comment on column Tab_NC_Interface_Log.objectid is '唯一标识';
comment on column Tab_NC_Interface_Log.instanceid is '实例表Id';
comment on column Tab_NC_Interface_Log.contentjson is '调用内容';
comment on column Tab_NC_Interface_Log.contentunusual is '异常原因';
comment on column Tab_NC_Interface_Log.remark1 is '备注1';
comment on column Tab_NC_Interface_Log.remark2 is '备注2';
comment on column Tab_NC_Interface_Log.state is '状态';
comment on column Tab_NC_Interface_Log.nums is '调用次数';
comment on column Tab_NC_Interface_Log.method is '调用方法';
comment on column Tab_NC_Interface_Log.workflowcode is '流程模板编码';
comment on column Tab_NC_Interface_Log.activitycode is '活动节点编码';
comment on column Tab_NC_Interface_Log.createtime is '创建时间';
comment on column Tab_NC_Interface_Log.lastmodifytime is '最后修改时间';
comment on column Tab_NC_Interface_Log.fromsys is '来源系统(调用H3接口的系统)';
comment on column Tab_NC_Interface_Log.tosys is '调用系统(H3调用接口的系统)';
comment on column Tab_NC_Interface_Log.createby is '创建人';
comment on column Tab_NC_Interface_Log.modifyby is '最后修改人';
comment on column Tab_NC_Interface_Log.note1 is '扩展标记位1';
comment on column Tab_NC_Interface_Log.note2 is '扩展标记位2';
comment on column Tab_NC_Interface_Log.note3 is '扩展标记位3';
comment on column Tab_NC_Interface_Log.note4 is '扩展标记位4'; comment on table Tab_NC_Interface_Log is 'NC接口调用异常表'; commit; select * from Tab_NC_Interface_Log
与注释相关的数据字典
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
http://www.jb51.net/article/47130.htm
oracle中用SQL语句创建和管理表的更多相关文章
- 查看oracle的sql语句历史记录和锁表的情况
查看oracle的sql语句历史记录和锁表的情况 (2012-01-04 20:59:59) 转载▼ 标签: 杂谈 分类: database 查询sql的历史记录 select * from v$sq ...
- ORACLE基本SQL语句-用户及建表篇
一.用户相关SQL语句 /*新建用户*/create user ; 说明:SA用户名,2013密码 /*授权connect,resource给用户sa*/grant connect,resource ...
- C# 读取文件中的sql语句 创建数据库以及表结构
大概思路是: 读取文件 根据文件中行内容为GO 作为分割 一条条放到list中 然后在程序中逐条执行sql语句; 值得一提的是 创建数据库的语句是不允许放到程序事务中执行的 所以目前我是分了两个文本 ...
- Oracle SQL Lesson (10) - 使用DDL语句创建和管理表
数据库对象TableViewSequenceIndexSynonym 对象名称最长30个字符,不能与当前用户下其他对象重名.create table "select" as sel ...
- oracle 10g 学习之创建和管理表(7)
目标 通过本章学习,您将可以: l 描述主要的数据库对象. l 创建表. l 描述各种数据类型. l 修改表的定义. l 删除,重命名和清空表. 常见的数据库对象 表.视图.序列.索引.同义 ...
- Oracle中用sql语句取随机数和整数
--- 应用round(5.678,3)保留小数 应用floor(5.678)保留整数 应用dbms_random.value(30,50)取得随机数 --- dbms_random包 获得随机小数S ...
- MySQL数据库执行sql语句创建数据库和表提示The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working
MySQL创建数据库 只想sql文件创建表时候提示 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to ha ...
- sql语句创建数据库和表
sql代码 -- 新建数据库 create database 数据库名称 on primary ( name='xx', filename='E:\xx.mdf', --文件地址 size=20MB, ...
- SQL语句创建数据库及表
--删除数据库drop database ArchiveDev; --建立归档数据库CREATE DATABASE ArchiveDev; USE ArchiveDev;GO --1.建立归档计划执行 ...
随机推荐
- 非IT人士的云栖酱油之行 (程序猿迷妹的云栖之行)
摘要: 熟悉我的人都知道,我是一个贪玩儿且不学无术的姑娘,对于互联网我也是知之甚少:这次去到杭州参加阿里巴巴集团主办的为期4天的科技大会也是很例外:但是不得不说这次的会议真是让我很震惊.今天我就和大家 ...
- WiFi共享精灵与路由器
路由器是大家都知晓的.WiFi共享精灵如今也是非常多人在用的. 那么非常多人就有疑问了,都有路由器了,还要WiFi共享精灵干嘛? 我们来比較一下两者的差别. 首先两个都是能够实现共享上网的. 就是两个 ...
- Ways to 优化JAVA程序设计和编码,提高JAVA性能
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化.一般有两种方案:即优化代码或更改设计方法.我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能 ...
- 戴尔大力宣传Ubuntu 对比与Windows的差异
2010-06-18 10:58:36 11175 人阅读 作者:萧萧 编辑:萧萧[爆料] 评论(46) 戴尔近日上线了一个新的网页,对比Linux开源系统(主要是Ubuntu)与Win ...
- HDUOJ---携程员工运动会场地问题
携程员工运动会场地问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- struts2 xml配置文件配置传参数
传参方式 重定向 第一方式: <action name="search" method="search" class="c ...
- C++:借助tinyxml2读取XML文件
// XMLT01.cpp : 定义控制台应用程序的入口点.//#include "stdafx.h"#include <iostream>#include " ...
- Oschina 安卓client源代码学习之中的一个
今天主要研究一下两个功能 (1)双击返回键退出程序 (2)接近完美地退出程序 (1) 在非常多应用程序里都有一个功能,就是点击返回键,之后提示你再点击返回键就退出程序. 之前一直非常好奇这是怎么实现的 ...
- STM32 usb_mem.c和usb_sil.c文件的分析
转:http://blog.csdn.net/u011318735/article/details/17424515 这两个c文件都还算是很简单的,先讲讲usb_mem.c这个文件.从文件名就能知道跟 ...
- php model与json_encode/json_decode
常用于model的操作,看看就知道了 <?php class UserModel { var $user_id = 0; var $user_name = ''; var $user_email ...