oracle改整个oracle数据库增加字段字段长度

12072人阅读
oracle开发SQL语句(273)
oracle数据字典表学习(101)
Oracle数据库基本管理(336)
Oracle:表名、字段名、constraint名的长度有限制
oracle 的命名规则:
1、要以字母开头
2、包含字母和数字,以及# $
3、不能超过30个字符
这是Oracle的限制!
&==============
今天修改数据库表名,感觉现有的定义列名都无含义。。。修改后被同事告知,列名有点长,怕有的数据库不支持。。
我头一次听说数据库表名和列名长度限制,so搜索下。
&&&&&&&&&&&&&&&&&&&&&&&&&&& 表名&&&&&&&&&&&&&&&&& 列名&&
&& mysql& &&& &&&&&&&&&& 64&&&&&&&&& &&&&&&&&&&&64
&& oracle &&&& &&&&&&&&&& 30&&&&&&&&&& &&&&&&&&& 30
&& db2 &&&&&&&&&&&&&&&&&&128&&&&&&&&&&&& &&&&&&128
&& access&&&&&&&&&&&&&&&&64&&&&&&&&&&&&&&&&&&&& 64
&& mssql&&&&&&&&&&&&&&&&128&&&&&&&&&&&&& &&&& 128
都是网上找的,不知道对否,也没时间找它们的文档看了。。好像还看到oracle可以修改最长的限制。。。希望有的看官可以斧正
=====================
oracle的表名、字段名、constraint名的长度限制分别是多少?
oracle里凡是需要命名的对象其标识符均不能超过30个字符,这是因为数据字典表的与记录这些数据库对象相关信息的系统表相关的字段的数据类型已经定义好了这样的大小。你可以查数据字典,里面有定义,依次为USER_TABLES,USER_TAB_COLUMNS,USER_CONSTRAINTS。例如,USER_TABLES这个系统表视图里对表名这个字段定义的数据类型就是varchar2(30),即这个字段最大只能为30个字节。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2375642次
积分:24122
积分:24122
排名:第204名
原创:355篇
转载:1189篇
评论:54条
(2)(1)(12)(3)(25)(37)(9)(32)(19)(7)(5)(11)(26)(37)(29)(76)(26)(19)(41)(63)(76)(32)(33)(88)(41)(16)(25)(37)(73)(63)(92)(75)(120)(159)(55)(67)(13)(1)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&博客访问: 489241
博文数量: 95
博客积分: 1238
博客等级: 少尉
技术积分: 1154
注册时间:
走自己的路让别人说去吧!
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
Oracle数据库字典&&& 在Oracle的绝大多数数据字典视图中都有象DBA_TABLES,ALL_TABLES和USER_TABLES这样的视图家族。Oracle中有超过100个视图家族,下表列出了最重要和最常用的视图家族,需要注意的是每个视图家族都有一个DBA_,一个ALL_一个USER_视图。
包含了表的列权限,包括授予者、被授予者和权限
数据范围信息,比如数据文件,数据段名(segment_name)和大小
索引信息,比如类型、唯一性和被涉及的表
IND_COLUMNS
索引列信息,比如索引上的列的排序方式
对象信息,比如状态和DDL time
ROLE_PRIVS
角色权限,比如GRANT和ADMIN选项
表和索引的数据段信息,比如tablespace和storage
SEQUECNCES
序列信息,比如序列的cache、cycle和ast_number
除触发器之外的所有内置过程、函数、包的源代码
别名信息,比如引用的对象和数据库链接db_link
系统权限,比如grantee、privilege、admin选项
TAB_COLUMNS
表和视图的列信息,包括列的数据类型
表权限,比如授予者、被授予者和权限
表信息,比如表空间(tablespace),存储参数(storage parms)和数据行的数量
触发器信息,比如类型、事件、触发体(trigger body)
用户信息,比如临时的和缺省的表空间
视图信息,包括视图定义
在Oracle中还有一些不常用的数据字典表,但这些表不是真正的字典家族,他们都是一些重要的单一的视图。这些视图见下表:
USER_COL_PRIVS_MADE
用户授予他人的列权限
USER_COL_PRIVS_RECD
用户获得的列权限
USER_TAB_PRIVS_MADE
用户授予他人的表权限
USER_TAB_PRIVS_RECD
用户获得的表权限
Oracle数据库字典的应用借助Oracle数据字典,利用Oracle的DDL语句,我们可以做很多事情,几乎所有的Oracle开发辅助工具都是利用这一点进行设计的。作者将通过如何取得数据库表字段信息来说明。首先我们定义一个数据库表,数据库表结构如下:
数据库表名[TABLE_TEST]
创建表的SQL语句如下-- 创建数据表create table TABLE_TEST(&&& NAME varchar2(40) not null,&&& *** varchar2(1) default ''''Y'''' not null,&&& BIRTHDAY date not null,&&& HEIGHT number(3,2),&&& WEIGHT number(3,2),&&& MEMO blob);-- 给列添加备注& comment on column TABLE_TEST.NAME is ''''姓名'''';& comment on column TABLE_TEST.*** is ''''性别'''';& comment on column TABLE_TEST.BIRTHDAY is ''''生日'''';& comment on column TABLE_TEST.HEIGHT is ''''身高'''';& comment on column TABLE_TEST.WEIGHT is ''''体重'''';& comment on column TABLE_TEST.MEMO is ''''备注'''';-- 创建约束关系 主键 外键 其他& alter table TABLE_TEST add constraint TB_TEST_P_NAME primary key (NAME);
数据表创建完毕,执行下列SQL语句:select&&& A.column_name 字段名,A.data_type 数据类型,A.data_length 长度,A.data_precision 整数位,&&& A.Data_Scale 小数位,A.nullable 允许空值,A.Data_default 缺省值,B.comments 备注from&&& user_tab_columns A,user_col_comments Bwhere&&& A.Table_Name = B.Table_Name&&& and A.Column_Name = B.Column_Name&&& and A.Table_Name = ''''TABLE_TEST''''
我们可以得出一下结果:
这样,我们在进行程序设计时,通过一条简单的SQL语句,然好通过Ole调用Word,便可为最终用户导出完整的数据库表字典文档。再执行下列SQL语句:select&&& INDEX_NAME 索引名,INDEX_TYPE 索引类型,UNIQUENESS 索引类别from&&& user_indexeswhere&&& TABLE_NAME = ''''TABLE_TEST''''
得到结果如下(注:SYS_ILC00006$$索引为系统在创建数据库表时自动创建的,用于数据库表内容的维护):
SYS_ILC00006$$
TB_TEST_P_NAME
执行下列SQL语句,我们将得到更多的关于数据库表结构的信息:select&&& A.column_name 字段名,A.data_type 数据类型,A.data_length 长度,A.data_precision 整数位,&&& A.Data_Scale 小数位,A.nullable 允许空值,A.Data_default 缺省值,B.comments 备注,&&& C.IndexCount 索引次数from&&& user_tab_columns A,&&& user_col_comments B,&&& (select count(*) IndexCount,Column_Name from User_Ind_Columns where Table_Name = ''''TABLE_TEST'''' group by Column_Name) Cwhere&&& A.Table_Name = B.Table_Name&&& and A.Column_Name = B.Column_Name&&& and A.Column_Name = C.Column_Name(+)&&& and A.Table_Name = ''''TABLE_TEST''''
得到结果如下:
&&&& 当然Oracle数据字典的应用远不止这些,通过Oracle数据库字典的支持,我们可以得到Oracle数据库结构的所有信息,著名的数据库开发工具PL/SQL Developer完全就是基于Oracle的数据库字典实现的。
阅读(4230) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。2008年3月 Oracle大版内专家分月排行榜第二2005年7月 Oracle大版内专家分月排行榜第二2004年8月 Oracle大版内专家分月排行榜第二2003年3月 Oracle大版内专家分月排行榜第二2002年11月 Oracle大版内专家分月排行榜第二2002年7月 Oracle大版内专家分月排行榜第二
2002年6月 其他数据库开发大版内专家分月排行榜第三2002年5月 其他数据库开发大版内专家分月排行榜第三2004年7月 Oracle大版内专家分月排行榜第三2003年7月 Oracle大版内专家分月排行榜第三2003年1月 Oracle大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。oracle与java
最近项目上有个问题是需要获取oracle数据库中表定义的字段长度,然后进行验证将要输入到该数据库表的数据是否超出字段定义的长度。所以对oracle存储字符串的类型进行了解。
1、首先了解varchar、varchar2、nvarchar、nvarchar2的区别
该问题可以参照博客/lovewife/articles/2467663.html。具体如下:
--varchar,varchar2
1.varchar/varchar2用于存储可变长度的字符串
比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节
2.size 的最大&#20540;是 4000,而最小&#20540;是 1,其&#20540;表示字节数,比如
varchar(20)表示最大可以存放20个字节的内容
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,
比如GBK,汉字就会占两个字节,英文1个
如果是UTF-8,汉字一般占3个字节,英文还是1个。&
但是一般情况下,我们都认为是两个字节处理,因为oracle安装时候默认我们都选择GBK的编码&#26684;式,但是我们在页面做输入字符串长度的校验的时候,还是以数据库设计字段最大长度除3来作为最大长度-----防止数据库移植时设置不同编码&#26684;式;
比如:VARCHAR2(10),一般情况下最多存放5个汉字,10个字符
--nvarchar,nvarchar2&
1.nvarchar/nvarchar2用于存储可变长度的字符串
2.size 的最大&#20540;是 4000,而最小&#20540;是 1,其&#20540;表示字符的个数,而不是字节数
3.这两种类型更适合存储中文
1.nvarchar中字符为中文则一般按2个字节计算,英文数字等按照一个自己计算
2.nvarchar2中所有字符均按照2个字节计算;
3.nvarchar2虽然更占空间,但是它有更好的兼容性,所有推荐使用;
VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容。
VARCHAR在Oracle中不建议使用。
具体到NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于:NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集时以长度10为例,则
1、NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
2、而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个。 &
VARCHAR2(size)
可变长度的字符串,其最大长度为size个字节;size的最大&#20540;是4000,而最小&#20540;是1;你必须指定一个VARCHAR2的
NVARCHAR2(size)
可变长度的字符串,依据所选的国家字符集,其最大长度为size个字符或字节;size的最大&#20540;取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的
NUMBER(p,s)
精度为p并且数&#20540;范围为s的数&#20540;;精度p的范围从1到38;数&#20540;范围s的范围是从-84到127;
例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;
NUMBER(5,-2) 表示数的整数部分最大为7其中对整数的倒数2位为0,前面的取整。
NUMBER 表示使用默认&#20540;,即等同于NUMBER(5);
可变长度的字符数据,其长度可达2G个字节;
有效日期范围从公元前日到公元后日
长度为size字节的原始二进制数据,size的最大&#20540;为2000字节;你必须为RAW指定一个
可变长度的原始二进制数据,其最长可达2G字节;
CHAR(size)
固定长度的字符数据,其长度为size个字节;size的最大&#20540;是2000字节,而最小&#20540;和默认&#20540;是1;
NCHAR(size)
也是固定长度。根据Unicode标准定义
一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节
一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;储存国家字符集
一个二进制大型对象;最大4G字节
包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节.
blob、clob、nclob 三种大型对象(LOB),用来保存较大的图形文件或带&#26684;式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。 LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。 可以执行读取、存储、写入等特殊操作 CLOB(Character Large Object) 用于存储对应于数据库定义的字符集的字符数据。(类&#20284;于long类型) BLOB(Binary Large Object) 可用来存储无结构的二进制数据。(类&#20284;于row和long
2、Oralce中存储字符串的类型包括varchar varchar2 nvarchar2 。nvarchar不是oracle存储字符串的类型
3、varchar varchar2 对应java.sql.types.varchar
& & &nvarchar2 对应java.sql.types.nvarchar
& & &其他对应关系见博客http://blog.csdn.net/hbzyaxiu520/article/details/5457225。具体如下:
常见数据库字段类型与java.sql.Types的对应
Oracle与java.sql.Types的对应&
Oracle & & & & & & & & & & & & & & & &java.sql.Types &
&blob & & & & & & & & & & & & & & & & & & blob
&char & & & & & & & & & & & & & & & & & & char
&clob & & & & & & & & & & & & & & & & & & clob
&date & & & & & & & & & & & & & & & & & &date
&number & & & & & & & & & & & & & & & decimal
&long & & & & & & & & & & & & & & & & & & varbinary
&nclob,nvarchar2 & & & & & & & & & other
&smallint & & & & & & & & & & & & & & & &smallint
&timestamp & & & & & & & & & & & & & &timstamp
&raw & & & & & & & & & & & & & & & & & & &varbinary
&varchar2 & & & & & & & & & & & & & & & varchar
Sql server与java.sql.Types的对应&
Sql server & & & & & & & & & & & & & java.sql.Types
& &bigint () & & & & & & & &bigint
& &timstamp,binary & & & & & & & & & &binary
& &bit & & & & & & & & & & & & & & & & & & & & bit
& &char,nchar,unqualified & & & & &char
& &datetime & & & & & & & & & & & & & & & date
& &money,smallmoney,decimal &decimal
& &float () & & & & & & & & &double
& &float(2000) & & & & & & & & & & & & & &float
& &int & & & & & & & & & & & & & & & & & & & & &integer
& &image & & & & & & & & & & & & & & & & & &longvarbinary
& &text,ntext,xml & & & & & & & & & & & &longvarchar
& & numeric & & & & & & & & & & & & & & & & numeric
& & real & & & & & & & & & & & & & & & & & & & real
& & smallint & & & & & & & & & & & & & & & &smallint
& & datetime,smalldatetime & & & timestamp
& & tinyint & & & & & & & & & & & & & & & & &tinyint
& & varbinary & & & & & & & & & & & & & & varbinay
& & nvarchar,varchar & & & & & & & & varchar
DB2与java.sql.Types的对应&
bigint & & & & & & & & & & & & & & & & & & & bigint
& &blob & & & & & & & & & & & & & & & & & & &blob
& &character,graphic & & & & & & & & char
& &clob & & & & & & & & & & & & & & & & & & &clob
& &date & & & & & & & & & & & & & & & & & & date
& &decimal & & & & & & & & & & & & & & & &decimal
& &double & & & & & & & & & & & & & & & & double
& & integer & & & & & & & & & & & & & & & integer
& & longvargraphic & & & & & & & & & longvarchar
& & longvarchar
real & & & & & & & & & & & & & & & & & & & &real
&smallint & & & & & & & & & & & & & & & & smallint
&time & & & & & & & & & & & & & & & & & & &time
&timestamp & & & & & & & & & & & & & &timestamp
&vargraphic & & & & & & & & & & & & & &varchar
MySQL与java.sql.Types的对应&
MySQL & & & & & & & & & & & & &java.sql.Types
& bigint & & & & & & & & & & & & & & &bigint
& &tinyblob & & & & & & & & & & & & binary
& &bit & & & & & & & & & & & & & & & & &bit
& &enum,set,char & & & & & & & char
& &date,year & & & & & & & & & & &date
& &decimal,numeric & & & & & &decimal
& &double,real & & & & & & & & & double
& &mediumint,int & & & & & & & &integer
& &blob,mediumblob & & & & & blob
& &longblob
& &float & & & & & & & & & & & & & & & real
smallint & & & & & & & & & & & & & smallint
& &time & & & & & & & & & & & & & & time
& &timestamp,datetime & & timestamp
& &tinyint & & & & & & & & & & & & & tinyint
& &varbinary,binary & & & & & varbinay
& &varchar,tinytext,text & & varchar
Sybase与java.sql.Types的对应&
Sybase & & & & & & & & & & & & & &java.sql.Types
& &binary & & & & & & & & & & & & & & & & binary
& &bit & & & & & & & & & & & & & & & & & & & bit
& &char,nchar, & & & & & & & & & & & & & &char
& &money,smallmoney,decimal & &decimal
& &float & & & & & & & & & & & & & & & & & & double
& & int & & & & & & & & & & & & & & & & & & & integer
& &image & & & & & & & & & & & & & & & & & &longvarbinary
& &text & & & & & & & & & & & & & & & & & & &longvarchar
numeric & & & & & & & & & & & & & & & & & numeric
& & real & & & & & & & & & & & & & & & & & & real
& & smallint & & & & & & & & & & & & & & &smallint
& & datetime,smalldatetime & & timestamp
& & tinyint & & & & & & & & & & & & & & & & tinyint
& & varbinar,timestamp & & & & & &varbinay
& & nvarchar,varchar ,sysname & varchar
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:489次
排名:千里之外
(1)(1)(2)(1)

我要回帖

更多关于 oracle数据库字段加密 的文章

 

随机推荐