一.数值范例
Mysql支撑一切范例SQL中的数值范例,个中包括严厉数据范例(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据范例(FLOAT,REAL,DOUBLE PRESISION),并在此基础上举行扩大。(引荐课程:MySQL教程)
扩大后增添了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 的行。
经由过程对每种数据范例的用处,物理存储,示意局限等有一个提要的相识。如许在面临详细运用时,就可以依据响应的特来来挑选适宜的数据范例,使得我们可以争夺在满足运用的基础上,
用较小的存储价值换来较高的数据库机能。
以上就是Mysql支撑的数据范例的细致引见的细致内容,更多请关注ki4网别的相干文章!