ITKeyword,专注技术干货聚合推荐

注册 | 登录

数据库数据类型学习总结

相关推荐:redis快速入门-数据类型

前言最近因项目需要用到redis,所以借助《Redis入门指南》(李子骅 编著)这本书快速入门了一下,此处记录下一些知识点(主要是命令),方便以后查阅。简

SQLite 数据类型总结http://www.cnblogs.com/bpasser/archive/2011/11/02/2233455.html1。严格地说,SQLite 没有数据类型。SQLite 使用动态数据类型,即:数据的类型取决于数据本身,而不是它的容器(字段)2。存储类型(Storage Class):数据保存到文件后的表现形式。包括:NULL - 空值INTERGER - 有符号整数类型REAL - 浮点数类型TEXT - 字符串(其编码取决于DB的编码)BLOB - 二进制表示3。亲和类型(Type Affinity):数据表的列中的数据对Storage Class的倾向性 TEXTNUMERICINTEGERREALNONE4。声明类型(Declared Type):CREATE TABLE/ALTER TABLE 语句中声明的列的类型Declared Type、Type Affinity、Storage Class 之间的关系: Declared Type Type AffinityStorage Class(按优先级)INT INTERGER (同NUMERIC)CHARTEXT TEXT TEXT/NULL/BLOBBLOB(不指定) NONE (As is)REALFLOATDOUBLE REAL (同NUMERIC)(其它) NUMERIC INTEGER/REAL/TEXT/NULL/BLOB 例外:(1)BLOB 数据始终保存为 BLOB 的 Storage Class5。数据的比较。比较操作符(=,>,>=...)、IN、Sort by等,按照以下5个步骤比较左右操作数:Step 1:根据下列规则确定左右操作数的 Type Affinity:列名表达式 - 该列的 Affinity(见前面第4节表格第2列)CAST ... AS ... - 所指定的 Affinity(见前面第4节表格第2列)其他情况 - NONE AffinityStep 2:Type Affinity 转换。如果左、右操作数都是下列 3 种 Type Affinity 之一,则按照下列优先顺序,将低优先级的转换为高优先级的:数值类(INTEGER/REAL/NUMERIC)TEXTNONEStep 3:由 Type Affinity 及数据的实际类型,确定其 Storage Class(见前面第4节表格第3列) Step 4:如果左、右操作数属于不同的 Storage Class,则按照以下顺序(由小到大)确定比较结果:NULL数值类(INTEGER/REAL)TEXTBLOBStep 5:如果左、右操作数属于相同的 Storage Class,则根据以下规则进行比较NULL - 左值始终小于右值数值类(INTEGER/REAL)- 按数值比较TEXT - 逐字符比较BLOB - 用 memcmp() 函数比较========Mysql支持的数据类型(总结)http://mrxiong.blog.51cto.com/287318/1651098/一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据。整数类型

字节

范围(有符号)

范围(无符号)

用途 TINYINT

1字节

(-128,127)

(0,255)

小整数值 SMALLINT

2字节

(-32 768,32 767)

(0,65 535)

大整数值 MEDIUMINT

3字节

(-8 388 608,8 388 607) (0,16 777 215)

大整数值 INT或INTEGER

4字节

(-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT

8字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 FLOAT

4字节

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值 DOUBLE

8字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值 DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值INT 类型:

在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。UNSIGNED 修饰符规定字段只保存正值。因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。从而增大这个字段可以存储的值的范围。ZEROFILL 修饰符规定 0(不是空格)可以用来真补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。FLOAT、DOUBLE 和 DECIMAL 类型

MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。与整数一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。比如语句 FLOAT(7,3) 规定显示的值不会超过 7 位数字,小数点后面带有 3 位数字。对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它。DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。比如语句 DECIMAL(7,3) 规定了存储的值不会超过 7 位数字,并且小数点后不超过 3 位。忽略 DECIMAL 数据类型的精度和计数方法修饰符将会使 MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0。UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用。并且效果与 INT 数据类型相同。二.字符串类型 MySQL 提供了8个基本的字符串类型,分别:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 各SET等多种字符串类型。可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。

字符串类型

字节大小

描述及存储需求

CHAR

0-255字节

定长字符串

VARCHAR

0-255字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65535字节

二进制形式的长文本数据

TEXT

0-65535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节 二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节 中等长度文本数据

LOGNGBLOB

0-4 294 967 295字节 二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节 极大文本数据

VARBINARY(M)

允许长度0-M个字节的定长字节符串,值的长度+1个字节

BINARY(M)

M

允许长度0-M个字节的定长字节符串CHAR 和 VARCHAR 类型

CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。CHAR 类型可以使用 BINARY 修饰符。当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。

CHAR 类型的一个变体是 VARCHAR 类型。它是一种可变长度的字符串类型,并且也必须带有一个范围在 0-255 之间的指示器。CHAR 和 VARCHGAR 不同之处在于 MYSQL 数据库处理这个指示器的方式:CHAR 把这个大小视为值的大小,不长度不足的情况下就用空格补足。而 VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短。因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同。TEXT 和 BLOB 类型

对于字段长度要求超过 255 个的情况下,MySQL 提供了 TEXT 和 BLOB 两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。TEXT 和 BLOB 类型在分类和比较上存在区别。BLOB 类型区分大小写,而 TEXT 不区分大小写。大小修饰符不用于各种 BLOB 和 TEXT 子类型。比指定类型支持的最大范围大的值将被自动截短。三.日期和时间类型 在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式。 类型

大小(字节)

范围

格式

用途

DATE

4

1000-01-01/9999-12-31 YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59' HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳DATE、TIME 和 TEAR 类型

MySQL 用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值。这些类型可以描述为字符串或不带分隔符的整数序列。如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开。

需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译。因为所有 TEAR 类型的值必须用 4 个数字存储。MySQL 试图将 2 个数字的年份转换为 4 个数字的值。把在 00-69 范围内的值转换到 2000-2069 范围内。把 70-99 范围内的值转换到 1970-1979 之内。如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份。DATEYIME 和 TIMESTAMP 类型

除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型。它们可以把日期和时间作为单个的值进行存储。这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值。MySQL 会自动使用系统当前的日期和时间来填充它。复合类型

MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。ENUM 类型

ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值。

ENUM 类型在系统内部可以存储为数字,并且从 1 开始用数字做索引。一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。SET 类型 SET 类型与 ENUM 类型相似但不相同。SET 类型可以从预定义的集合中取得任意数量的值。并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。 一个 SET 类型最多可以包含 64 项元素。在 SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。“位”是创建有序元素集合的一种简单而有效的方式。并且它还去除了重复的元素,所以 SET 类型中不可能包含两个相同的元素。希望从 SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为 0 的行。通过对每种数据类型的用途,物理存储,表示范围等有一个概要的了解。这样在面对具体应用时,就可以根据相应的特来来选择合适的数据类型,使得我们能够争取在满足应用的基础上,用较小的存储代价换来较高的数据库性能。========Sql Server基础:数据类型详解http://blog.jobbole.com/86724/数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型、数值类型以及日期类型等。数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源。Sql Server 还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内, Sql Server 会自动将类型转换为smallint 或者tinyint,这样一来,在存储数据时,占用的存储空间只有int的1/2或则1/4.Sql Server数据库管理系统中的数据类型可以分为两类,分别是:系统默认的数据类型和用户自定义的数据类型。下面分别介绍这两大类数据类型的内容.一:系统数据类型Sql Server 提供的系统数据类型有一下几大类,共25种。 Sql Server会自动限制每个系统数据类型的取值范围,当插入数据库中的值 超过了数据允许的范围时, Sql Server 就会报错。1.整数数据类型整数数据类型是常用的数据类型之一,主要用于存储数值,可以直接进行数据运算而不必使用函数转换.(1).bigint每个bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。(2).intint或者integer,每个int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,,可以表示-2的31次方~2的31次方-1范围内的所有整数。(3).smallint每个smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,,可以表示-2的15次方~2的15次方-1范围内的所有整数。(4).tinyint每个tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数.2.浮点数据类型浮点数据类型存储十进制小数,用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;浮点数值的数据则Sql Server中采用了只入不舍的方式进行存储,即当且仅当要舍入的数是一个非零数时,对其保留数字部分的最低有效位上加1,并进行必要的近位。(1).real可以存储正的或者负的十进制数值,它的存储范围从-3.40E+38~-1.18E-38、0以及1.18E-38~3.40E+38.每个real类型的数据占用4个字节的存储空间。(2)float[(n)]其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。如果指定了n它必须是介于1和53之间的某个值。n的默认值为53.其范围从-1.79E+308~-2.23E-308、0以及2.23E+308~1.79E-308。如果不指定数据类型float的长度,它占用8个字节的存储空间。float数据类型可以写成float(n)的形式,n为指定float数据的精度,n为1~53之间的整数值。当n取1~24时,实际上定义了一个real类型的数据,系统用4个自己存储它。当n取25~53时,系统认为其是float类型,用8个字节存储它。(3).decimal[(p[,s])]和numeric[(p[,s])带固定精度和小数位数的数值数据类型。使用最大精度时,有效值从-10^38+1~10^38-1。numeric在功能上等价于decimal。p(精度)指定了最多可以存储十进制数字的总位数,包括小数点左边和右边的位数,该精度必须是从1到最大精度38之间的值,默认精度为18.s(小数位数)指定小数点右边可以存储的十进制数字的最大位数,小数位数必须是从0到p之间的值,仅在指定精度后才可以指定小数的位数。默认小数位数是0;因此,0<=s<=p。最大存储大小基于精度而变化。例如:decimal(10,5)表示共有10位数,其中整数5位,小数5位。3.字符数据类型字符数据类也是Sql Server中最常用的数据类型之一,用来存储各种字符,数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。(1)char(n)当用char数据类型存储数据时,每个字符和符号占用一个字节存储空间,n表示所有字符所占的存储空间,n的取值为1~8000。如不指定n的值,系统默认n的值为1。若输入数据的字符串长度小于n,则系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,则会截掉其超出部分。(2). varhcar(n|max)n为存储字符的最大长度,其取值范围是1~8000,但可根据实际存储的字符数改变存储空间,max表示最大存储大小是2的31次方-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。如varchcar(20),则对应的变量最多只能存储20个字符,不够20个字符的按实际存储。(3).nchar(n)n个字符的固定长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。此数据类型采用Unicode字符集,因此每一个存储单位占两个字节,可将全世界文字囊括在内(当然除了部分生僻字)。(4)nvarchar(n|max)与varchar类似,存储可变长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。max指最大存储大小为2的31次方-1字节。存储大小是输入字符个数的两倍+2个字节。所输入的数据长度可以为0个字符.4.日期和时间数据类型(1).date存储用字符串表示的日期数据,可以表示0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)间的任意日期值。数据格式为“YYYY-MM-DD”:YYYY:表示年份的四位数字,范围为0001~9999;MM:表示指定年份中月份的两位数字,范围为01~12;DD:表示指定月份中某一天的两位数字,范围为01~31(最高值取决于具体月份)该数据类型占用3个字节的空间。(2).time以字符串形式记录一天的某个时间,取值范围为00:00:00.0000000~23:59:59.9999999,数据格式为“hh:mm:ss[.nnnnnnn]”:hh:表示小时的两位数字,范围为0~23。mm:表示分钟的两位数字,范围为0~59。ss:表示秒的两位数字,范围为0~59。n*是0~7为数字,范围为0~9999999,它表示秒的小部分.time值在存储时占用5个字节的空间。(3).datetime用于存储时间和日期数据,从1753年1月1日到9999年12月31日,默认值为1900-01-01 00:00:00,当插入数据或在其它地方使用时,需用单引号或双引号括起来。可以使用“/”、“-”和“.”作为分隔符。该类型数据占用8个字节的空间。(4).datetime2datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。默认格式为:YYYY-MM-DD hh:mm:ss[.fractional seconds],日期的存取范围是0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日).(5).smalldatetimesmalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,刻印使用smalldatetime,该类型数据占用4个字节的存储空间。(6).datetimeoffset用于定义一个采用24小时制与日期相组合并可识别时区的时间。默认格式是:“YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”:hh:两位数,范围是-14~14mm:两位数,范围为00~59;这里hh是时区偏移量,该类型数据中保存的是世界标准时间(UTC)值,eg:要存储北京时间2011年11月11日12点整,存储时该值将是2011-11-11 12:00:00+08:00,因为北京处于东八区,比UTC早8个小时。存储该数据类型数据时默认占用10个字节大小的固定存储空间.5.文本和图形数据类型(1).text用于存储文本数据,服务器代码页中长度可变的非Unicode数据,最大长度为2的31次方-1(2147 483 647)个字符。当服务器代码页使用双字节字符时,存储仍是2147 483 647字节。(2)ntext与text类型作用相同,为长度可变的非Unicode数据,最大长度为2的30次方-1(1073 741 283)个字符。存储大小是所输入字符个数的两倍(以字节为单位).(3).image长度可变的二进制数据,范围为:0~2的31次方-1个字节。用于存储照片、目录图片或者图画,容量也是2147 483 647个字节,由系统根据数据的长度自动分配空间,存储该字段的数据一般不能使用insert语句直接输入。6.货币数据类型(1).money用于存储货币值,取值范围为正负922 337 213 685 477.580 8之间。money数据类型中整数部分包含19个数字,小数部分包含4个数字,因此money数据类型的精度是19,存储时占用8个字节的存储空间。(2).smallmoney与money类型相似,取值范围为214 748.346 8之间,smallmoney存储时占用4个字节存储空间。输入数据时在前面加上一个货币符号,如人民币为¥或其它定义的货币符号。7.位数据类型bit称为位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于

相关推荐:MySQL 数据库双向同步复制

MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约。问题和制约数据库的双主双写并双向同步场景,主要考虑数据完整性、一致性和避

判断true(1)或false(0),输入非0值时系统将其替换为1。8.二进制数据类型(1)binary(n)长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。存储大小为n个字节。在输入binary值时,必须在前面带0x,可以使用0xAA5代表AA5,如果输入数据长度大于定于的长度,超出的部分会被截断。(2).varbinary(n|max)可变长度二进制数据。其中n是从1~8000的值,max指示存储大小为2的31次方-1字节。存储大小为所输入数据的实际长度+2个字节。在定义的范围内,不论输入的时间长度是多少,binary类型的数据都占用相同的存储空间,即定义时空间,而对于varbinary类型的数据,在存储时实际值的长度使用存储空间.9.其他数据类型(1).rowversion每个数据都有一个计数器,当对数据库中包含rowversion列的表执行插入或者更新操作时,该计数器数值就会增加。此计数器是数据库行版本。一个表只能有一个rowversion列。每次修改或者插入包含rowversion列的行时,就会在rowversion列中插入经过增量的数据库行版本值。公开数据库中自动生成的唯一二进制数字的数据类型。rowversion通常用作给表行加版本戳的机制。存储大小为8个字节。rowversion数据类型只是递增的数字,不保留日期或时间。(2)timestamp时间戳数据类型,timestamp的数据类型为rowversion数据类型的同义词,提供数据库范围内的唯一值,反映数据修改的唯一顺序,是一个单调上升的计数器,此列的值被自动更新。在create table或alter table 语句中不必为提么timestamp数据类型指定列名。eg:create table testTable (id int primary key,timestamp );此时Sql Server数据库引擎将生成timestamp列名;但rowversion不具备这样的行为,在使用rowversion时,必须指定列名.(3).uniqueidentifier16字节的GUID(Globally Unique Identifier,全球唯一标识符),是Sql Server根据网络适配器地址和主机CPU时钟产生的唯一号码,其中,每个为都是0~9或a~f范围内的十六进制数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF,此号码可以通过newid()函数获得,在全世界各地的计算机由次函数产生的数字不会相同。(4).cursor游标数据类型,该类型类似与数据表,其保存的数据中的包含行和列值,但是没有索引,游标用来建立一个数据的数据集,每次处理一行数据。(5).sql_variant用于存储除文本,图形数据和timestamp数据外的其它任何合法的Sql Server数据,可以方便Sql Server的开发工作。(6).table用于存储对表或视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。(7).xml存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表示实例大小不能超过2GB。二:自定义数据类型Sql Server允许用户自定义数据类型,用户自定义数据类型是建立在Sql Server系统数据类型的基础上的,自定义的数据类型使得数据库开发人员能够根据需要定义符合自己开发需求的数据类型。自定义数据类型虽然使用比较方便,但是需要大量的性能开销,所以使用时要谨慎。当用户定义一种数据类型时,需要指定该类型的名称、所基于的系统数据类型以及是否允许为空等。Sql Server为用户提供了两种方法来创建自定义数据类型。下面分别介绍这两种个定义数据类型的方法。(1).使用对象资源管理器创建用户自定义数据类型创建数据库Test–>【可编程性】–>【类型】节点,右击【用户定义数据类型】节点,在弹出的框中,按照说明相应操作即可。很简单,就不截图赘述了。(2).使用存储过程创建用户自定义数据类型触雷使用图形界面创建自定义数据类型,Sql Server中的系统存储过程sp_addtype也可为用户提供使用T_sql语句创建自定义数据类型的方法。其语法如下:MySQL sp_addtype [@typename= ] type,

[@phystyle=] system_data_type

[,[@nulltype =] 'null_type']123 sp_addtype [@typename= ] type,

[@phystyle=] system_data_type

[,[@nulltype =] 'null_type']其中,各参数的含义如下:type:用于指定用户定义的数据类型的名称。system_data_type:用于指定相应的系统提供的数据类型的名称及定义。注意:未能使用timestamp数据类型,当所使用的系统数据类型有额外的说明时,需要用引号将其括起来。null_type:用于指定用户自定义的的数据类型的null属性,其值可为“null” 、“not null“或”notnull“。默认时与系统默认的null属性相同。用户自定义的数据类型的名称在数据库中应该是唯一的。eg:sp_addtype homeAddress ‘varchar(120)’,’not null’删除用户自定义数据类型:a.用图形界面删除,不做赘述。b.用系统存储过程sp_droptype删除. eg:sp_droptype homeAddress,其中homeAddress为用户自定义数据类型名称.注意:数据库正在使用的用户自定义数据类型,不能被删除。========ORACLE常见数据类型详解http://blog.csdn.net/zhiweianran/article/details/77935541、字符类型• CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。• VARCHAR2:目前这也是VARCHAR 的同义词。这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~12字节的信息。VARCHAR2最多可以存储4,000 字节的信息。CHAR和VARCHAR2的比较CHAR(4) “A“ 实际在数据库中存储为"A ““ABCDE”超长报错VARCHAR2(4) “A” 存储的还是“A”“ABCDE”超长报错汉字:每个汉字占多少字节,要看具体的编码方式,如UTF-8(1-3字节)、GB2312(2字节)、GBK(2字节)、GB18030(1、2、4字节)2、数字类型• NUMBER:该数据类型能存储精度最多达38位的数字。每个数存储在一个变长字段中,其长度在0~22字节之间。Oracle的NUMBER类型精度很高, 远远高于许多编程语言中常规的FLOAT和DOUBLE类型。NUMBER( p,s ) p表示精度(总长度) s表示小数位置且四舍五入NUMBER(10,3) 10是总长度,3是小数位数的长度123.456123.4567 :将存储为123.45712345679.899 :精度超长了,10是总长度,3是小数位, 整数位为10-3=7位NUMBER(10)==NUMBER(10,0) java.lang.IntegerNUMBER(19)==NUMBER(19,0) java.lang.Long3、日期类型• DATE:一个7字节的定宽日期/时间数据类型。其中总包含7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。• TIMESTAMP:一个7 字节或12.字节的定宽日期/时间数据类型。它与DATE 数据类型不同,因为TIMESTAMP 可以包含小数秒(fractional second);带小数秒的TIMESTAMP 在小数点右边最多可以保留9位。4、二进制及大文本数据• BLOB: (binary large object)在Oracle9i及以前的版本中, 这种数据类型允许存储最多4GB的数据, 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。BLOB包含不需要进行字符集转换的“二进制“数据,如果要存储电子表格、字处理文档、图像文件等就很适合采用• CLOB:(Character Large Object)在Oracle9i及以前的版本中, 这种数据类型允许存储最多4GB的数据, 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。========常用数据库基本数据类型http://blog.csdn.net/duqiuke/article/details/8772655

Microsoft Access 数据类型数据类型

描述

存储Text

用于文本或文本与数字的组合

最多 255 个字符。 Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。注释:无法对 memo 字段进行排序。不过它们是可搜索的。Byte 允许 0 到 255 的数字。 1 字节Integer 允许介于 -32,768 到 32,767 之间的数字。 2 字节Long 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字 4 字节Single 单精度浮点。处理大多数小数。 4 字节Double 双精度浮点。处理大多数小数。 8 字节Currency 用于货币。支持 15 位的元,外加 4 位小数。提示:您可以选择使用哪个国家的货币。8 字节AutoNumber AutoNumber 字段自动为每条记录分配数字,通常从 1 开始。 4 字节Date/Time 用于日期和时间 8 字节Yes/No 逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。在代码中,使用常量 True 和 False (等价于 1 和 0)注释:Yes/No 字段中不允许 Null 值1 比特Ole Object 可以存储图片、音频、视频或其他 BLOBs (Binary Large OBjects) 最多 1GBHyperlink 包含指向其他文件的链接,包括网页。 Lookup Wizard 允许你创建一个可从下列列表中进行选择的选项列表。 4 字节

MySQL 数据类型在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。Text 类型:数据类型 描述CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。TINYTEXT 存放最大长度为 255 个字符的字符串。TEXT 存放最大长度为 65,535 个字符的字符串。BLOB 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。MEDIUMTEXT 存放最大长度为 16,777,215 个字符的字符串。MEDIUMBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM('X','Y','Z')SET 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。Number 类型:数据类型 描述TINYINT(size) -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。SMALLINT(size) -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。BIGINT(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。DECIMAL(size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。* 这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。Date 类型:数据类型 描述DATE() 日期。格式:YYYY-MM-DD注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'DATETIME() *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'TIMESTAMP() *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTCTIME() 时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59'YEAR() 2 位或 4 位格式的年。注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 Insert 或 Update 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。 SQL Server 数据类型Character 字符串:数据类型 描述 存储char(n) 固定长度的字符串。最多 8,000 个字符。 nvarchar(n) 可变长度的字符串。最多 8,000 个字符。 varchar(max) 可变长度的字符串。最多 1,073,741,824 个字符。 text 可变长度的字符串。最多 2GB 字符数据。 Unicode 字符串:数据类型 描述 存储nchar(n) 固定长度的 Unicode 数据。最多 4,000 个字符。 nvarchar(n) 可变长度的 Unicode 数据。最多 4,000 个字符。 nvarchar(max) 可变长度的 Unicode 数据。最多 536,870,912 个字符。 ntext 可变长度的 Unicode 数据。最多 2GB 字符数据。 Binary 类型:数据类型 描述 存储bit 允许 0、1 或 NULL binary(n) 固定长度的二进制数据。最多 8,000 字节。 varbinary(n) 可变长度的二进制数据。最多 8,000 字节。 varbinary(max) 可变长度的二进制数据。最多 2GB 字节。 image 可变长度的二进制数据。最多 2GB。 Number 类型:数据类型 描述 存储tinyint 允许从 0 到 255 的所有数字。 1 字节smallint 允许从 -32,768 到 32,767 的所有数字。 2 字节int 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 4 字节bigint 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8 字节decimal(p,s) 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。5-17 字节numeric(p,s) 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。5-17 字节smallmoney 介于 -214,748.3648 和 214,748.3647 之间的货币数据。 4 字节money 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 8 字节float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 4 或 8 字节real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节Date 类型:数据类型 描述 存储datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 bytesdatetime2 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 bytessmalldatetime 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 bytesdate 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytestime 仅存储时间。精度为 100 纳秒。 3-5 bytesdatetimeoffset 与 datetime2 相同,外加时区偏移。 8-10 bytestimestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。 其他数据类型:数据类型 描述sql_variant 存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。uniqueidentifier 存储全局标识符 (GUID)。xml 存储 XML 格式化数据。最多 2GB。cursor 存储对用于数据库操作的指针的引用。table 存储结果集,供稍后处理。

MSSQL2008数据类型数据类型类型描

述bit整型bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Offint整型int 数据类型可以存储从- 231(-2147483648)到231 (

2147483 647

)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节smallint整型smallint 数据类型可以存储从- 215(-32768)到215(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间tinyint整型tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节numeric精确数值型numeric数据类型与decimal 型相同decimal精确数值型decimal 数据类型能用来存储从-1038-1到1038-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数money货币型money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一smallmoney货币型smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一float近似数值型float 数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308 之间的任意数real近似数值型real 数据类型像浮点数一样,是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数datetime日期时间型datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3 1日间所有的日期和时间数据, 精确到三百分之一秒或3.33毫秒Smalldatetime日期时间型smalldatetime 数据类型用来表示从1900年1月1日到2079年6月6日间的日期和时间,精确到一分钟cursor特殊数据型cursor 数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用timestamp特殊数据型timestamp 数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。 一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”, 但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的Uniqueidentifier特殊数据型Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列char字符型char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据 类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符varchar字符型varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。 它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度text字符型text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符nchar统一编码字符型nchar 数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍nvarchar统一编码字符型nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍ntext统一编码字符型ntext 数据类型用来存储大量的统一编码字符型数据。这种数据类型能存储230 -1或将近10亿个字符,且使用的字节空间增加了一倍binary二进制数据类型binary数据类型用来存储可达8000 字节长的定长的二进制数据。当输入表的内容接近相同的长度时,你应该使用这种数据类型varbinary二进制数据类型varbinary 数据类型用来存储可达8000 字节长的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型image二进制数据类型image 数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节 oracle基本数据类型:数据类型 含义 char 定长的字符型数据,最大长度可达2KB nchar 存储Unicode字符集的定长字符型数据,最大长度为2KB Varchar2 可变长的字符型数据,最大长度可达4000个字符 Nvarchar2 存储Unicode字符集的变长字符型数据,最大长度为4KB number 存储整型或浮点型数据 Date 存储日期数据 Long 存储最大长度为2GB的变长字符数据 Raw 存储非结构化数据的变长字符数据,最长为2KB Long Raw 存储非结构化数据的变长字符数据,最长为2GB Rowid 存储表中列的物理地址的二进制数据,占用固定的10个字节 Blog 二进制大对象,最大长度为4GB Clob 字符大对象,最大长度为4GB Nclob 存储多达4GB的Unicode字符数据 Bfile 把非结构化的二进制数据存储在数据库以外的操作系统文件中 Urowid 存储表示任何类型列地址的二进制数据 float 存储浮点数========

相关推荐:MySQL 数据库主从复制架构

前文《MySQL 数据库事务与复制》分析了 MySQL 复制过程中如何保证 binlog 和事务数据之间的一致性,本文进一步分析引入从库后需要保证主从的数据一致性需要考虑

SQLite 数据类型总结http://www.cnblogs.com/bpasser/archive/2011/11/02/2233455.html1。严格地说,SQLite 没有数据类型。SQLite 使用动态数据类型,即:数据的类型取决于数据本身,...

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。