Oracle枚举类型(如何枚举Oracle数据库的表结构和其他数据库对象)

2024-08-14 23:10:05 :25

oracle枚举类型(如何枚举Oracle数据库的表结构和其他数据库对象)

其实oracle枚举类型的问题并不复杂,但是又很多的朋友都不太了解如何枚举Oracle数据库的表结构和其他数据库对象,因此呢,今天小编就来为大家分享oracle枚举类型的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

如何枚举Oracle数据库的表结构和其他数据库对象

Oracle中相关的系统表都属于sys用户,描述表结构的是sys.all_tab_columns,你在SQL*Plus中用desc sys.all_tab_columns可以看得很清楚:大致是table_name,column_name,data_length,data_precision(NUMBERP类型字段的长度),data_scale(小数位),nullable这几个字段。我用VC写了一个Oracle数据库对象管理的程序,可以管理table,view,procedure,function等所有数据库对象,自动生成出它们的创建源码,包括字段注释、约束脚本等。你如果需要,可以告诉你相关资料。另外,我用VC访问Oracle使用的是Oracle提供的OCI接口。

oracle 数据类型

按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。一 字符串类型1.1:CHAR类型 CHAR(size )CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。1.2: NCHAR类型这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。1.3 VARCHAR类型不要使用VARCHAR数据类型。使用VARCHAR2数据类型。1.4: VARCHAR2类型变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。1.5: NVARCHAR2类型这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。二. 数字类型2.1 NUMBER类型NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10130~10126(不包含此值),需要1~22字节(BYTE)不等的存储空间。P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数下面是官方文档的示例Actual DataSpecified AsStored As123.89NUMBER123.89123.89NUMBER(3)124123.89NUMBER(6,2)123.89123.89NUMBER(6,1)123.9123.89NUMBER(3)124123.89NUMBER(4,2)exceeds precision123.89NUMBER(6,-2)100.01234NUMBER(4,5).01234.00012NUMBER(4,5).00012.000127NUMBER(4,5).00013.0000012NUMBER(2,7).0000012.00000123NUMBER(2,7).00000121.2e-4NUMBER(2,5)0.000121.2e-5NUMBER(2,5)0.000012.2 INTEGER类型INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。2.3 浮点数Oracle 数据库提供了专为浮点数的两种数值数据类型:BINARY_FLOATBINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。BINARY_DOUBLEBINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。2.5 FLOAT类型FLOAT类型也是NUMBER的子类型。Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。三. 日期类型日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。3.1 DATE类型DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。3.2 TIMESTAMP类型这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位3.3 TIMESTAMP WITH TIME ZONE类型这是TIMESTAMP类型的变种,它包含了时区偏移量的值3.4 TIMESTAMP WITH LOCAL TIME ZONE类型3.5 INTERVAL YEAR TO MOTH3.6 INTERVAL DAY TO SECOND四. LOB类型内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型4.1 CLOB 数据类型它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符4.2 NCLOB 数据类型它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。4.3 BLOB 数据类型它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。4.4 BFILE 数据类型二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理五. RAW & LONG RAW类型5.1 LONG类型它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:1.一个表中只有一列可以为LONG型。(Why?有些不明白)2.LONG列不能定义为主键或唯一约束,3.不能建立索引4.LONG数据不能指定正则表达式。5.函数或存储过程不能接受LONG数据类型的参数。6.LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)5.2 LONG RAW 类型,能存储2GB 的原始二进制数据(不用进行字符集转换的数据)5.3 RAW类型用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2,000字节的信息六. ROWID & UROWID类型在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。例如,索引组织表行地址存储在索引的叶子,可以移动。例如,外部表的ROWID(如通过网关访问DB2表)不是​​标准的ORACLE的rowid。ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT …ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。

Oracle 自定义TYPE 的几种用法

Oracle 自定义TYPE 的几种用法Oracle中的类型有很多种,主要可以分为以下几类:1、字符串类型。如:char、nchar、varchar2、nvarchar2。2、数值类型。如:int、number(p,s)、integer、smallint。3、日期类型。如:date、interval、timestamp。4、PL/SQL类型。如:pls_integer、binary_integer、binary_double(10g)、binary_float(10g)、boolean。plsql类型是不能在sql环境中使用的,比如建表时。5、自定义类型。下面简单的枚举下常用的几种自定义类型。1、子类型。这种类型最简单,类似类型的一个别名,主要是为了对常用的一些类型简单化,它基于原始的某个类型。如:有些应用会经常用到一些货币类型:number(16,2)。如果在全局范围各自定义这种类型,一旦需要修改该类型的精度,则需要一个个地修改。那如何实现定义的全局化呢?于是就引出了子类型:subtype cc_num is number(16,2);这样就很方便地解决了上述的麻烦。2、普通类型如:create or replace type typ_calendar as object( 年 varchar2(8), 月 varchar2(8), 星期日 varchar2(8), 星期一 varchar2(8), 星期二 varchar2(8), 星期三 varchar2(8), 星期四 varchar2(8), 星期五 varchar2(8), 星期六 varchar2(8), 本月最后一日 varchar2(2));这种类型可以在表结构定义的时候使用:create table tcalendar of typ_calendar;插入数据测试:SQL》 insert into tcalendar 2 select typ_calendar(’2010’,’05’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’31’) from dual 3 /注意:插入的数据需要用typ_calendar进行转换。1 row inserted--查看结果SQL》 select * from tcalendar;

oracle 所有的数据类型有哪些

Oracle数据库的核心是表,表中的列使用到的常见数据类型如下:

对应NUMBER类型的示例:

对于日期类型,可以使用sysdate内置函数可以获取当前的系统日期和时间,返回DATE类型,用systimestamp函数可以返回当前日期、时间和时区。

oracle数据库 枚举怎么写

取数据用for或游标都可以,其余不都是一堆判断创表、写表嘛(使用execute immediate)! 再加点日志打印异常rollback 只能帮你到这一步,加油!

什么叫Oracle的规范化的概念

设计规范 规范约定1. 遵守数据的设计规范3NF 规定· 表内的每一个值都只能被表达一次。· 表内的每一行都应该被唯一的标识(有唯一键)。· 表内不应该存储依赖于其他键的非键信息。2. 实体表都必须包含四个字段:编号(ID)、代码(Code)、创建人(Created By)、创建时间(Creation Time)、修改人(Modified By)、修改时间(Modification Time)、删除标志(Delete Status)。其含义如下:ü 编号是系统内的唯一标识ü 代码是客户为这个实体的编码,这个字段看需要确定是否保留ü 创建人是是指数据库记录创建人ü 创建时间是指数据库记录创建时间,默认为SYSDATEü 修改人是是指数据库记录修改人ü 修改时间是指数据库记录修改时间,默认为SYSDATEü 删除标志是本条记录是否已删除的标志(0:没有删除;1:已经删除),数据中的数据不做真正删除,只设置这个标志这五个字段的命名规则如下ü 实体名+字段名称,如user_id、user_code、created_by、creation_time、modified_by 、modification_time 、delete_status。ü 这五个字段的类型和长度规则如下n 编号 INTEGERn 代码 VARCHAR2(30)n 创建人 INTEGERn 创建时间DATEn 修改人 INTEGERn 修改时间DATEn 删除标志 CHAR(1)2字段规范一行记录必须表内唯一,表必须有主键。枚举类型使用 NUMBER,且需要说明枚举类型的各个不同取值的含义ID结尾的字段为仅由数字组成,Code结尾的字段为仅由字母或数字组成用CHAR(1)表示布尔值的取大写:“Y”,“N”。应尽量使用VARCHAR2代替CHAR类型;VARCHAR(2)最多4000字符;DATE精确到秒,而非天;使用CLOB代替LONG,BLOB代替LONG RAW;使用NUMBER数据类型时请给定长度,例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;使用规范1综合如果开发过程中需要建立索引,需要提交书面的更改请求,说明所需索引的定义(名称、字段列表、顺序、索引类型)以及建立的理由。数据库管理员统一维护索引并将提交的请求更改。数据库各表的初始数据(包含各代码表、配置表)需要提交给数据库管理员。不得使用触发器。涉及到数据库多表数据的更改(Insert/Delete/Update)必须使用数据库事务进行控制,并且必须有完整事务开始和提交/回滚机制。不能使用范围事务尽量避免Union操作的使用,需要使用时,请向数据库管理员咨询使用Union操作的影响。SQL语句和存储过程,尽量使用PL/SQL Develper的代码美化器美化。属于ORACLE的关键字大小,表名、列名等小写。2查询在表查询中,一律不要使用* 作为查询的字段列表,需要哪些字段必须显式写明在表查询中,必须有Where条件,除非此表为非增长表在表查询中,一次最多返回的记录条数不要超过1000条或记录内容不要大于1MB的数据。在表查询中,作Order By排序时,优先使用主键列,索引列多表关联查询时,优先使用Where条件,再作表关联,并且需要保证被关联的字段需要有索引。避免在WHERE字句中对列施以函数:错误:SELECT service_id,service_name FROM service_promotionWHERE TO_CHAR(gmt_modified,’yyyy-mm-dd’) = ‘20001-09-01’;正确:SELECT service_id,service_name  FROM service_promotionWHERE gmt_modified 》= TO_DATE(‘2001-9-01’,’yyyy-mm-dd’)AND gmt_modified 《 TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);避免使用数据库的类型自动转换功能:错误:SELECT category_id, category_name FROM categoryWHERE category_id = ‘123’; -- id’s type is number 正确:SELECT category_id, category_name FROM categoryWHERE category_id = 123; -- id’s type is number 4删除删除记录时,必须有Where唯一条件当有主从表时,要先删除从表记录,在删除主表记录5修改修改记录时,必须有Where唯一条件

在oracle存储过程中,select语句的where条件出现in,怎样能将所有符合条件的数据显示出来.

in 后面跟的是值列表或者子查询,而不是 条件。 比如: select * from table where a in(’a’,’bc’,...)或者select * from table where a in(select xx from tab where ...)

“ORACLE”中有哪些数据类型

Oracle中的数据类型有:字符型、数字型、日期型等。具体介绍如下:1、字符型:char(n):用于标识固定长度的字符串。  当实际数据不足定义长度时,使用空格补全右边不足位。varchar(n):可变字符串类型。  为SQL标准规定的,数据库必须实现的数据据类型。可以存储空字符串。  varchar2(n):可变字符串类型,是oracle在varchar的基础上自行定义的可变长度字符串 类型。当做为列类型使用时,最大长度可被定义为4000;当做为变量类型使用时,长度 可被定义为32767。不可以存储空字符串。2、数值型:可用于存储整数、浮点数。  number(m,n):m表示有效数字的总位数(最大为38位),n表示小 数位数。3、日期时间型:  date:包含Year(年)、Month(月) 、Day(天)、Hour(时)、Minutes(分)、Second(秒)  说明:(yyyy表示4位年分;mm表示月份;dd表示天;hh表示时;mi表示分;ss表示秒)4、大对象类型:lob:用于存储大对象类型。例如:文本信息长度超过4000、二进制文件等。最大容量为4GB。  lob分类:clob:用于存储大型文本数据。(例如:备注信息)  blob:用于存储二进制数据。(例如:图片文件)  bfile:作为独立文件存在的二进制数据。5、特殊数据:  null与空字符串:null与空字符串,都要用is null或is not null进行比较。 单引号:想将单引号做为字符中使用,请通过单引号进行转义。6、注意:oracle中,没有布尔类型,可利用字符串或数值(1/0)表示

java的enum保存到oracle中是什么类型

oracle 是不支持枚举类型的解决办法:可以自定义一个转换类;转换为可存储的类型,→保存到Oracle 中读取出来之后,在转换为枚举类型;

如何在ORACLE中实现枚举数据类型

数据库对象你可以从user_objects中查询 表你可以从tabs 或者 user_tables 中查询 字段你可以从 cols 或者 USER_TAB_COLUMNS 中查询 函数语法等可以从user_source 中查询 等等

关于oracle枚举类型到此分享完毕,希望能帮助到您。

oracle枚举类型(如何枚举Oracle数据库的表结构和其他数据库对象)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.