下面是小编给大家带来关于Oracle 9i的数据类型数据库教程,本文共6篇,一起来看看吧,希望对您有所帮助。
篇1:uniqueidentifier 数据类型数据库教程
数据|数据类型
想要产生这种唯一标识的格式的数据:
6F9619FF-8B86-D011-B42D-00C04FC964FF
应该怎么做呢?
================================================================
答:
uniqueidentifier 数据类型可存储 16 字节的二进制值,其作用与全局唯一标识符 (GUID) 一样,GUID 是唯一的二进制数;世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。
uniqueidentifier 列的 GUID 值通常通过下列方式之一获取:
在 Transact-SQL 语句、批处理或脚本中调用 NEWID 函数。
在应用程序代码中,调用返回 GUID 的应用程序 API 函数或方法。
Transact-SQL NEWID 函数以及应用程序 API 函数和方法用它们的网卡的标识号加上 CPU 时钟的唯一编号来生成新的 uniqueidentifier 值。每个网卡都有唯一的标识号。NEWID 返回的 uniqueidentifier 值是通过使用服务器上的网卡而生成的。应用程序 API 函数和方法返回的 uniqueidentifier 值是通过使用客户端中的网卡而生成的。
uniqueidentifier 值通常不定义为常量。您可以按下列方式指定 uniqueidentifier 常量:
字符串格式:'6F9619FF-8B86-D011-B42D-00C04FC964FF'
二进制格式:0xff6f868b11d0b42d00c04fc964ff
uniqueidentifier 数据类型不会按照 IDENTITY 属性的方式为插入的行自动生成新的 ID。例如,若要获取新的 uniqueidentifier 值,则表必须具有指定 NEWID 函数或 NEWSEQUENTIALID 函数的 DEFAULT 子句,或 INSERT 语句必须使用 NEWID 函数。
CREATE TABLE MyUniqueTable
(UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID,
Characters VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('uiok')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'uiok')
GO
注意:
您可以使用 NEWSEQUENTIALID 生成 GUID 以减少叶级别索引上的页争用,
NEWSEQUENTIALID 只能与 uniqueidentifier 类型的表列的 DEFAULT 约束一起使用。
uniqueidentifier 列中可以多次出现某个 uniqueidentifier 值,除非对该列也指定了 UNIQUE 或 PRIMARY KEY 约束。当多个行引用源表中的同一个主键时,引用其他表中 uniqueidentifier 主键的外键列中可以多次出现各个 uniqueidentifier 值。
一个表可以有多个 uniqueidentifier 列。每个表中可以指定一个具有 ROWGUIDCOL 属性的 uniqueidentifier 列。ROWGUIDCOL 属性指明此列的 uniqueidentifier 值可唯一地标识表中的行。但是,属性不会执行任何强制实现唯一性的操作。必须使用其他机制强制实现唯一性,例如指定列的 PRIMARY KEY 约束。ROWGUIDCOL 属性主要用于 Microsoft SQL Server 复制。具有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行。
uniqueidentifier 数据类型具有下列缺点:
值长且难懂。这使用户难以正确键入它们,并且更难记住。
这些值是随机的,而且它们不支持任何使其对用户更有意义的模式。
也没有任何方式可以决定生成 uniqueidentifier 值的顺序。它们不适用于那些依赖递增的键值的现有应用程序。
当 uniqueidentifier 为 16 字节时,其数据类型比其他数据类型(例如 4 字节的整数)大。这意味着使用 uniqueidentifier 键生成索引的速度相对慢于使用 int 键生成索引的速度。
在不要求全局唯一性或首选使用按序列增加的键时,请考虑使用 IDENTITY 属性。
篇2:Oracle 9i的数据类型数据库教程
Oracle 9i共提供了16种标量数据类型,如表7.4所示,
Oracle 9i的数据类型数据库教程
。表7.4 Oracle 9i的标量数据类型名称含义Char用于描述定长的字符型数据,长度<=字节varchar2用于描述变长的字符型数据,长度<=4000字节nchar用来存储Unicode字符集的定长字符型数据,长度<=1000字节nvarchar2用来存储Unicode字符集的变长字符型数据,长度<=1000字节number用来存储整型或者浮点型数值Date用来存储日期数据Long用来存储最大长度为2GB的变长字符数据Raw用来存储非结构化数据的变长字符数据,长度<=2000字节Long raw用来存储非结构化数据的变长字符数据,长度<=2GBrowid用来存储表中列的物理地址的二进制数据,占用固定的10个字节Blob用来存储多达4GB的非结构化的二进制数据Clob用来存储多达4GB的字符数据nclob用来存储多达4GB的Unicode字符数据Bfile用来把非结构化的二进制数据存储在数据库以外的操作系统文件中urowid用来存储表示任何类型列地址的二进制数据float用来存储浮点数
篇3:修改自定义数据类型精度数据库教程
数据|数据类型
/*--修改自定义数据类型精度的示例
自定义数据类型一旦被引用,就不能再修改和删除,如果要修改数据的精度,就非常麻烦,下面的示例演示了如何修改
假设要修改的自定义变量名为aa
--*/
--1.修改自定义变量类型的名称
exec sp_rename 'aa','aa_bak','USERDATATYPE'
go
--2.新增自定义变量(按新的精度)
EXEC sp_addtype N'aa', N'numeric(20,2)', N'not null'
go
--3.修改表,使用新增的自定义变量
declare @s varchar(8000)
declare tb cursor local
for select 'alter table ['+object_name(a.id)+'] alter column ['
+a.name+'] aa'
from syscolumns a join systypes b on a.xusertype=b.xusertype
where b.name='aa_bak'
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
篇4:跟我学SQL:(八)数值数据类型数据库教程
数据|数据类型
SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础,跟我学SQL:(八)数值数据类型数据库教程
。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给你一个数值数据类型的概要,你可以结合你的数据库的文档资料来学习。
在字符串、数值、datetime和interval这四种数据类型中,数值型的种类最多,约束也最多。在不同数据库实现方法之间交换数据时,数值型的精度也最容易降低。Oracle和SQL服务器之间的实现分歧(同样的数据类型长度不同)导致它们之间的数据传递过程会截短数字、改变它们的数值。因此,在移植程序前,你有必须很明确的了解两个平台间的数据定义差异,以及危及数据精度的风险。
谨记上述警告后,让我们看看SQL92标准的数值类型
基本数值类型
与数值有关的类型统称为数值类型。所有的数值都有精度,精度指的是有效数字位数。有的数值还有标度值(scale value),它用来指示小数点右边的最小有效数字位数。例如,数字1234.56的精度为6,标度值为2,可以定义为NUMERIC(6,2)。
每一个数据库实现方法都有关于如何近似数值或者截短数值的规则。除了提供获取数值长度和其它数值处理所需的属性外,SQL92提供了内建函数,如加、减、乘、除等。所有的数值类型之间都可以互相比较、互相赋值。尽管实现方法不同,但是它们有一个的共同点,即它们的结果一般都保留最大精度。
NUMERIC
用法:NUMERIC(精度,标度值)
是一种精确数值类型,即它是数字的值的文字表示。(可以对该数字进行取舍或者截取以符合指定精度,标度值由预定义的规则确定。)
为了符合标度值指定的小数数字位数,舍去多余的小数部分,舍入过程采用十进制。
数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1。
小数部分的位数要符合标度值。
DECIMAL | DEC
用法:DECIMAL(精度,标度值) | DEC(精度,标度值)
是一种精确数值类型。
用十进制。
数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1,
小数部分的位数不得小于标度值,小数位数的上限由数据库提供商设定。
INTEGER | INT
用法: INTEGER(精度)
是一种精确数值类型。
使用二进制或者十进制,这基于表示该数值的二进制位(bit)的个数(这是implementation-specific,与SMALLINT对应)。
标度值恒为0。
数据库供应商对其定义了最大精度和最小精度。
供应商可能会提供的默认精度。
SMALLINT
用法:SMALLINT(精度)
是一种精确数值类型。
位数取舍方法与INTEGER (二进制或者十进制)相同。
标度值恒为0。
最大精度等于或者小于INTEGER的最大精度。
FLOAT
用法:FLOAT(精度)
是一种近似数值类型,即对一个指定的数值用指数形式表示出来,如1.23e-45(等于),该数值类型的取舍和截短方法大多由数据库提供商定义。
当取舍时,使用二进制精度。
精度表示使用的最小位数,最大精度由数据库提供商设定。
REAL
用法:REAL
是一种近似数值类型。
使用二进制精度,最大精度由数据库提供商设定。
其默认精度必须小于DOUBLE PRECISION的默认精度。
DOUBLE PRECISION
用法: DOUBLE PRECISION
是一种近似数值类型。
使用二进制精度,最大精度由数据库提供商设定。
其默认精度必须大于PRECISION的默认精度。
相关理论
数据库提供商在基本数据类型的基础上创建了你实际需要的数据类型。对数值类型来说,它可以包括同名的数据类型,如INT、REAL,也包括为了满足特定场合或者用途而创建的新数据类型。
在我们的下一篇文章,我们将讨论datetime和interval数据类型。
篇5:windows优化系统后oracle9i本地连接失败数据库教程
oracle|window|优化
我们使用的系统是windows,经过优化后,oracle数据库出现了问题,本地客户端不能连接.但远程连接是没有问题的.
经过检查,原来是oracle的TNSListener服务没有起动.用“服务”起动,或者net start 起动均失败,检查结果是注册表中
的TNSListener的执行文件路径已经被删除了.所以我们只要从其它安装oracle服务器的电脑上将部分注册表文件导出,
然后导入到本机就OK了.
下面是我本机的导入的注册表内容.
----------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE YSTEM\\ControlSet001 ervices\\OracleOraHome92TNSListener]
“Type”=dword:00000010
“Start”=dword:00000002
“ErrorControl”=dword:00000001
“ImagePath”=hex(2):44,00,3a,00,5c,00,6f,00,72,00,61,00,63,00,6c,00,65,00,5c,00,\\
6f,00,72,00,61,00,39,00,32,00,5c,00,42,00,49,00,4e,00,5c,00,54,00,4e,00,53,\\
00,4c,00,53,00,4e,00,52,00,20,00,00,00
“DisplayName”=“OracleOraHome92TNSListener”
“ObjectName”=“LocalSystem”
[HKEY_LOCAL_MACHINE YSTEM\\ControlSet001 ervices\\OracleOraHome92TNSListener ecurity]
“Security”=hex:01,00,14,80,a0,00,00,00,ac,00,00,00,14,00,00,00,30,00,00,00,02,\\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\\
00,00,02,00,70,00,04,00,00,00,00,00,18,00,fd,01,02,00,01,01,00,00,00,00,00,\\
05,12,00,00,00,00,00,00,00,00,00,1c,00,ff,01,0f,00,01,02,00,00,00,00,00,05,\\
20,00,00,00,20,02,00,00,00,00,00,00,00,00,18,00,8d,01,02,00,01,01,00,00,00,\\
00,00,05,0b,00,00,00,20,02,00,00,00,00,1c,00,fd,01,02,00,01,02,00,00,00,00,\\
00,05,20,00,00,00,23,02,00,00,00,00,00,00,01,01,00,00,00,00,00,05,12,00,00,\\
00,01,01,00,00,00,00,00,05,12,00,00,00
[HKEY_LOCAL_MACHINE YSTEM\\ControlSet001 ervices\\OracleOraHome92TNSListener\\Enum]
“0”=“Root\\\\LEGACY_ORACLEORAHOME92TNSLISTENER\\\\0000”
“Count”=dword:00000001
“NextInstance”=dword:00000001
----------
将上面的内容拷贝到.txt文件中,然后将.txt改成.reg文件,双击该文件即可.
注意:我oracle执行文件安装在D盘.如果不一样的话,要将注册表中的键值修改成正确就可以的了.
篇6:在linux8.0下,oracle9i的配置说明数据库教程
oracle
14,点”OK”后继续进行安装
15,填写数据库访问名和密码
16,出现Oracle9i数据库安装完全画面
以上是oracle9i数据库,全部的安装过程,
四,启动和测试
1,因为数据库刚刚安装完成,所以数据库服务已经起来,所以只启动测试监听就可以了,以oracle用户,输入lsnrctl start
2, 进行监听测试,以oracle用户输入以下命令
netca
这样会出现一个画面,对监听进行配置,然后选择local net service name configuration,然后选择text,然后更改用户密码,把安装时写的密码添加进去,就OK了!然后回车,一直到完成.
3,如果从新启动linux,那系统不会自动启动oracle9i服务,需要以oracle用户身份,进行启动服务,如:
su C oracle
sqlplus /nolog
进入sqlplus后,再输入:
connect / as sysdba
进去后,输入:
startup
然后等待数据库启动完成,
以上是启动oracle服务,然后启动 的时候,需要重复1的动作就可以了。
★sybase数据库中numeric数据类型字段出现跳号的问题
文档为doc格式