阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL数据类型简述

112次阅读
没有评论

共计 2241 个字符,预计需要花费 6 分钟才能阅读完成。

MySQL 的数据类型主要分为以下几大类:

  • 数值类型
    • 整型:tinyint、smallint、mediumint、int、bigint
    • 浮点型:float、double
  • 字符类型
    • 文本:char、varchar、text
    • 二进制:binary、blob
  • 时间类型:date、time、datetime、year、timestamp
  • 复合类型:enum、set

一、数值类型

1>、整型

类 型 字 节 范围 (signed) 范围(unsigned)
tinyint 1 -128 ~ 127 0~255
smallint 2 -32267 ~ 32267 0~65535
mediumint 3 -8388608 ~ 8388608 0~16777215
int 4 -2147483648 ~ 2147483647 0~4294967295
bigint 8 -9233372036854775808 ~ 9223372036854775807 18446744073709551615

2>、浮点型

类 型 字 节 范围 (signed) 范围(unsigned)
float 4 -3.402823466E+38 ~ 1.175494351E-38 0 ~ 3.402823466351E+38)
double 8 -1.7976931348623157E+308 ~ 2.2250738585072014E-308 0 ~ 1.7976931348623157E+308)
decimal(M,D) m + 2 M 是数字的最大长度,取值范围 1~65,默认值为 10。
D 是小数点位数,取值范围为 0~30,不得超过 M 的长度
 

说明:
1> 四舍五入:对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它。比如:decimal(5,2) 类型的值为 123.456,会自动截断为 123.46。
2> 取值范围说明 float(5,2):表示数值最大长度为 5 位,不包括小数点,其中 3 位为整数,2 位为小数。如果超过取值范围,则取其表示的最大值。如:1234.56,整数部份超过了 3 位,MySQL 会取整个数的最大值 999.99。

二、字符串类型

类 型 字符长度取值范围 说明
char 0 ~ 255 定长字符串,如:lating1 编码,char(10),占 10 个字节
varchar 0 ~ 255 可变长度字符串,如:varchar(10),根据实际存放的字符串长度计算存储空间
text 0 ~ 65535 长文本字符串
blob 0 ~ 65535 长文本二进制字符串
tinytext 0 ~ 255 短长度文本字符串
tinyblob 0 ~ 255 短长度二进制字符串
mediumtext 0 ~ 16777215 中长度文本字符串
mediumblob 0 ~ 16777215 中长度二进制字符串
longtext 0 ~ 4294967295 极大文本字符串
longblob 0 ~ 4294967295 极大二进制字符串
binary(M) 0 ~ M 保存定长二进制字符串,注意它保存的是字节而不是字符,没有字符集限制,区分大小写,不足长度用 \0 填充
varbinary(M) 0 ~ M 保存变长的二进制字符串,同 binary 保存的是字节,没有字符集限制,区分大小写,不足后面不会补 \0

三、日期和时间类型

类 型 取值范围 格式 说明
date 1000-01-01 ~ 9999-12-31 yyyy-MM-dd、yyyy/MM/dd、yyyyMMdd,如:2016-07-03、2016/07/03、20160703 存储年月日
time -838:59:59 ~ 838:59:59 HH:mm:ss,HHmmss,如:08:24:53,082453 存储时分秒
year 1901 ~ 2155 yyyy,如:2016 存储 4 位数的年份,不在取值范围用 0 表示
datetime 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss date 和 time 类型的组合
timestamp 1970-01-01 00:00:00 ~ 2037 某时 yyyy-MM-dd HH:mm:ss date 和 time 类型的组合,如果没有对该类型的字段赋值或赋值为 null,默认值为当前时间

四、复合类型

类 型 语法 说明
enum enum(‘a’,’b’) 一次只能存取其中的一个值,如果不是其中的某一个值,mysql 会插入一个空字符串。适合单选值,比如性别
set set(‘a’,’b’,’c’) 可以存取其中的多个值,多个字符之间用逗号分隔,最多不能超过 64 个。如果不是其中的值,mysql 会插入一个空字符串。适合多选,比如个人爱好
create table mixtab (radiovalue enum('a','b','c'), checkvalue set('a','b','c','d')
);
mysql> insert into mixtab values ('b', 'a,b,c');    # success
mysql> insert into mixtab values ('d', 'a,b');      # error,'d' 不在 enum 范围内
mysql> insert into mixtab values ('d', 'ab');       # error,'ab' 没用逗号分隔 

注意:数值类型默认都是 signed(有符号),在创建字段的时候可以显示指定 unsigned 或 signed。如:create table user(age int unsigned);

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140425.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2241字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中