《MYSQL教程Mysql支持的数据类型(列类型总结)》要点:
本文介绍了MYSQL教程Mysql支持的数据类型(列类型总结),希望对您有用。如果有疑问,可以联系我们。
MYSQL学习一.数值类型
MYSQL学习Mysql支持所有标准SQL中的数值类型,其中包含严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展.
MYSQL学习扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据.
MYSQL学习
MYSQL学习整数类型 字节 范围(有符号) 范围(无符号) 用途
MYSQL学习TINYINT 1字节 (-128,127) (0,255) 小整数值
MYSQL学习SMALLINT 2字节 (-32 768,32 767) (0,65 535) 大整数值
MYSQL学习MEDIUMINT 3字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
MYSQL学习INT或INTEGER 4字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
MYSQL学习BIGINT 8字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
MYSQL学习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) 单精度浮点数值
MYSQL学习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) 双精度浮点数值
MYSQL学习DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
MYSQL学习
MYSQL学习INT 类型:
MYSQL学习 在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT.这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的.
MYSQL学习MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度.例如,指定一个字段的类型为 INT(6),
MYSQL学习就可以保证所包括数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充.需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围.
MYSQL学习万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储.还有一个比拟特别的地方是,
MYSQL学习MySQL 会在不合规定的值插入表前自动修改为 0.
MYSQL学习
MYSQL学习UNSIGNED 修饰符规定字段只保留正值.因为不需要保留数字的正、负符号,可以在储时节约一个“位”的空间.从而增大这个字段可以存储的值的范围.
MYSQL学习ZEROFILL 修饰符规定 0(不是空格)可以用来真补输出的值.使用这个修饰符可以阻止 MySQL 数据库存储负值.
MYSQL学习
MYSQL学习FLOAT、DOUBLE 和 DECIMAL 类型
MYSQL学习 MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型.FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值.
MYSQL学习与整数一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器.好比语句 FLOAT(7,3) 规定显示的值不会超过 7 位数字,小数点后面带有 3 位数字.
MYSQL学习
MYSQL学习对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它.
MYSQL学习DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数办法作为选择参数.精度在这里指为这个值保存的有效数字的总个数,
MYSQL学习而计数办法表示小数点后数字的位数.比如语句 DECIMAL(7,3) 规定了存储的值不会超过 7 位数字,并且小数点后不超过 3 位.
MYSQL学习
MYSQL学习忽略 DECIMAL 数据类型的精度和计数办法修饰符将会使 MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算办法设置为 0.
MYSQL学习UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用.并且效果与 INT 数据类型相同.
MYSQL学习
MYSQL学习二.字符串类型
MYSQL学习 MySQL 提供了8个基本的字符串类型,分别:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 各SET等多种字符串类型.
MYSQL学习可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据.
MYSQL学习
MYSQL学习 字符串类型 字节大小 描述及存储需求
MYSQL学习 CHAR 0-255字节 定长字符串
MYSQL学习 VARCHAR 0-255字节 变长字符串
MYSQL学习 TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
MYSQL学习 TINYTEXT 0-255字节 短文本字符串
MYSQL学习 BLOB 0-65535字节 二进制形式的长文本数据
MYSQL学习 TEXT 0-65535字节 长文本数据
MYSQL学习 MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MYSQL学习 MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
MYSQL学习 LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
MYSQL学习 LONGTEXT 0-4 294 967 295字节 极大文本数据
MYSQL学习 VARBINARY(M) 允许长度0-M个字节的定长字节符串,值的长度+1个字节
MYSQL学习 BINARY(M) M 允许长度0-M个字节的定长字节符串
MYSQL学习
MYSQL学习CHAR 和 VARCHAR 类型
MYSQL学习 CHAR 类型用于定长字符串,并且必需在圆括号内用一个大小修饰符来定义.这个大小修饰符的范围从 0-255.比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补.
MYSQL学习CHAR 类型可以使用 BINARY 修饰符.当用于比拟运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式.
MYSQL学习 CHAR 类型的一个变体是 VARCHAR 类型.它是一种可变长度的字符串类型,并且也必需带有一个范围在 0-255 之间的指示器.CHAR 和 VARCHGAR 不同之处在于 MYSQL 数据库处理
MYSQL学习这个指示器的方式:CHAR 把这个大小视为值的大小,不长度不足的情况下就用空格补足.而 VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度
MYSQL学习(增加一个额外字节来存储字符串自己的长度)来存储值.所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短.
MYSQL学习因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率.
MYSQL学习VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同.
MYSQL学习
MYSQL学习TEXT 和 BLOB 类型
MYSQL学习 对于字段长度要求超过 255 个的情况下,MySQL 提供了 TEXT 和 BLOB 两种类型.根据存储数据的大小,它们都有不同的子类型.这些大型的数据用于存储文本块或图像、
MYSQL学习声音文件等二进制数据类型.
MYSQL学习TEXT 和 BLOB 类型在分类和比拟上存在区别.BLOB 类型区分大小写,而 TEXT 不区分大小写.大小修饰符不用于各种 BLOB 和 TEXT 子类型.
MYSQL学习比指定类型支持的最大范围大的值将被自动截短.
MYSQL学习
MYSQL学习三.日期和时间类型
MYSQL学习 在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择.它们可以被分成简单的日期、时间类型,和混合日期、时间类型.
MYSQL学习根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式.
MYSQL学习
MYSQL学习 类型 大小(字节) 范围 格式 用途
MYSQL学习 DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
MYSQL学习 TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
MYSQL学习 YEAR 1 1901/2155 YYYY 年份值
MYSQL学习 DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
MYSQL学习 TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
MYSQL学习
MYSQL学习DATE、TIME 和 TEAR 类型
MYSQL学习 MySQL 用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值.这些类型可以描述为字符串或不带分隔符的整数序列.如果描述为字符串,
MYSQL学习DATE 类型的值应该使用连字号作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开.
MYSQL学习 需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳.
MYSQL学习
MYSQL学习MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译.因为所有 TEAR 类型的值必需用 4 个数字存储.
MYSQL学习MySQL 试图将 2 个数字的年份转换为 4 个数字的值.把在 00-69 范围内的值转换到 2000-2069 范围内.把 70-99 范围内的值转换到 1970-1979 之内.
MYSQL学习如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份.
MYSQL学习DATEYIME 和 TIMESTAMP 类型
MYSQL学习 除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型.它们可以把日期和时间作为单个的值进行存储.
MYSQL学习这两种类型通常用于自动存储包括当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用.
MYSQL学习如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值.MySQL 会自动使用系统当前的日期和时间来填充它.
MYSQL学习
MYSQL学习复合类型
MYSQL学习 MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范.虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型.
MYSQL学习一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值.
MYSQL学习
MYSQL学习ENUM 类型
MYSQL学习 ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项.在处理相互排拆的数据时容易让人理解,好比人类的性别.ENUM 类型字段可以从集合中取得一个值或使用 null 值,
MYSQL学习除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串.另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值.
MYSQL学习 ENUM 类型在系统内部可以存储为数字,并且从 1 开始用数字做索引.一个 ENUM 类型最多可以包括 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,
MYSQL学习这个错误值用索引 0 或者一个空字符串表示.
MYSQL学习MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败.这说明通过搜索包括空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置.
MYSQL学习
MYSQL学习SET 类型
MYSQL学习 SET 类型与 ENUM 类型相似但不相同.SET 类型可以从预定义的集合中取得任意数量的值.并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使
MYSQL学习MySQL 插入一个空字符串.如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保存合法的元素,除去非法的元素.
MYSQL学习
MYSQL学习 一个 SET 类型最多可以包括 64 项元素.在 SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素.“位”是创建有序元素集合的一种简单而有效的方式.
MYSQL学习并且它还去除了重复的元素,所以 SET 类型中不可能包括两个相同的元素.
MYSQL学习希望从 SET 类型字段中找出非法的记录只需查找包括空字符串或二进制值为 0 的行.
MYSQL学习
MYSQL学习通过对每种数据类型的用途,物理存储,表示范围等有一个概要的了解.这样在面对具体应用时,就可以根据相应的特来来选择合适的数据类型,使得我们能够争取在满足应用的基础上,
MYSQL学习用较小的存储代价换来较高的数据库性能.
MYSQL学习MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述.概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式.
MYSQL学习由MySQL支持的列类型列在下面.下列代码字母用于描述中:
MYSQL学习M
指出最大的显示尺寸.最大的合法的显示尺寸是 255 .
D
适用于浮点类型并且指出跟随在十进制小数点后的数码的数量.最大可能的值是30,但是应该不大于M-2.
方括号(“[”和“]”)指出可选的类型修饰符的部分.
MYSQL学习注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性.
MYSQL学习TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数.有符号的范围是-128到127,无符号的范围是0到255.
MYSQL学习
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数.有符号的范围是-32768到32767,无符号的范围是0到65535.
MYSQL学习MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小整数.有符号的范围是-8388608到8388607,无符号的范围是0到16777215.
MYSQL学习INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小整数.有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295.
MYSQL学习INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这是INT的一个同义词.
MYSQL学习BIGINT[(M)] [UNSIGNED] [ZEROFILL]
MYSQL学习一个大整数.有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到
MYSQL学习18446744073709551615.注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于9223372036854775807(63位)的有符号大整数,除了位函数!注意,当两个参数是INTEGER值时,-、+和*将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于9223372036854775807,你可以得到意外的结果.一个浮点数字,不能是无符号的,对一个单精度浮点数,其精度可以是<=24,对一个双精度浮点数,是在25 和53之间,这些类型如FLOAT和DOUBLE类型马上在下面描述.FLOAT(X)有对应的FLOAT和DOUBLE相同的范围,但是显示尺寸和小数位数是未定义的.在MySQL3.23中,这是一个真正的浮点值.在更早的MySQL版本中,FLOAT(precision)总是有2位小数.该句法为了ODBC兼容性而提供.
MYSQL学习FLOAT[(M,D)] [ZEROFILL]
一个小(单精密)浮点数字.不能无符号.允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38.M是显示宽度而D是小数的位数.没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字.
MYSQL学习DOUBLE[(M,D)] [ZEROFILL]
一个正常大小(双精密)浮点数字.不能无符号.允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308.M是显示宽度而D是小数位数.没有一个参数的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字.
MYSQL学习DOUBLE PRECISION[(M,D)] [ZEROFILL]
MYSQL学习
REAL[(M,D)] [ZEROFILL]
这些是DOUBLE同义词.
MYSQL学习DECIMAL[(M[,D])] [ZEROFILL]
一个未压缩(unpack)的浮点数字.不能无符号.行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符.小数点,并且对于负数,“-”符号不在M中计算.如果D是0,值将没有小数点或小数部分.DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的DECIMAL列,实际的范围可以通过M和D的选择被限制.如果D被省略,它被设置为0.如果M被省掉,它被设置为10.注意,在MySQL3.22里,M参数包含符号和小数点.
MYSQL学习NUMERIC(M,D) [ZEROFILL]
这是DECIMAL的一个同义词.
MYSQL学习DATE
一个日期.支持的范围是'1000-01-01'到'9999-12-31'.MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列.
MYSQL学习DATETIME
一个日期和时间组合.支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列.
MYSQL学习TIMESTAMP[(M)]
一个时间戳记.范围是'1970-01-01 00:00:00'到2037年的某时.MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值,取决于是否M是14(或省略)、12、8或6,但是允许你使用字符串或数字把值赋给TIMESTAMP列.一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的,因为如果你不本身给它赋值,它自动地被设置为最近操作的日期和时间.你以可以通过赋给它一个NULL值设置它为当前的日期和时间.
TIME
一个时间.范围是'-838:59:59'到'838:59:59'.MySQL以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列.
MYSQL学习YEAR[(2|4)]
一个2或4位数字格式的年(缺省是4位).允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69).MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列.(YEAR类型在MySQL3.22中是新类型.)
MYSQL学习CHAR(M) [BINARY]
一个定长字符串,当存储时,总是是用空格填满右边到指定的长度.M的范围是1 ~ 255个字符.当值被检索时,空格尾部被删除.CHAR值根据缺省字符集以大小写不区分的方式排序和比拟,除非给出BINARY关键词.NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集.这是MySQL的缺省.CHAR是CHARACTER的一个缩写.
MYSQL学习[NATIONAL] VARCHAR(M) [BINARY]
一个变长字符串.注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范).M的范围是1 ~ 255个字符. VARCHAR值根据缺省字符集以大小写不区分的方式排序和比拟,除非给出BINARY关键词值. VARCHAR是CHARACTER VARYING一个缩写.
MYSQL学习TINYBLOB
MYSQL学习TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符.
BLOB
MYSQL学习
TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符.
MYSQL学习MEDIUMBLOB
MYSQL学习MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符.
LONGBLOB
MYSQL学习LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符.
MYSQL学习ENUM('value1','value2',...)
枚举.一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL.一个ENUM最多能有65535不同的值.
MYSQL学习SET('value1','value2',...)
一个集合.能有零个或多个值的一个字符串对象,其中每一个必需从值列表'value1', 'value2', ...选出.一个SET最多能有64个成员.
维易PHP培训学院每天发布《MYSQL教程Mysql支持的数据类型(列类型总结)》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。