时间:2021-07-01 10:21:17 帮助过:1人阅读
MySQL 支持多种数据类型,大侄可以分为三类:数值类型、时间类型、字符串类型和符合类型;
数值类型:
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 | 
| 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的值 | 小数值 | 
日期时间类型
每个时间类型有一个有效值范围和一个“零”值,当指定不合法的值MySQL使用“零”值
| 类型 | 大小 | 范围 | 格式 | 用途 | 
| DATE | 3 | 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 | 8 | 1970-01-01 00:00:00/2037 年某时 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 | 
字符串类型
| 类型 | 大小 | 用途 | 
| CHAR | 0-255字节 | 定长字符串 | 
| VARCHAR | 0-65535 字节 | 变长字符串 | 
| TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 | 
| TINYTEXT | 0-255字节 | 短文本字符串 | 
| BLOB | 0-65 535字节 | 二进制形式的长文本数据 | 
| TEXT | 0-65 535字节 | 长文本数据 | 
| MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 | 
| MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | 
| LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 | 
| LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 | 
复合类型
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常用数据类型
标签: