数据类型

本文给出mysql中常用的数据类型说明。

 数值

类型

说明

表示范围

占用字节

备注

tinyint(n)

非常小的整数,n最大取值4(n表示显示宽度)

-128到127

1字节

1字节=8bit,存储范围0-255(2的8次方)

int(n)

整数,n最大取值11(显示宽度)

-2147483648到2147483647(有符号)

0到4294967295(无符号型)

4字节

4字节=(2^8)*4 = 2^32

使用时用int(10)即可(因为无符号最多也只能表示10位的)

bigint(n)

非常大的整数,n最大取值20(显示宽度)

     

decimal(P,D)

小数,P是位数,D是小数点后的位数。

P范围为1〜65,D的范围是0~30

   

  • 显示宽度:在字段上使用ZEROFILL属性时,该字段的值会左边补0,如124为0000000123;不会限制字段可以存储的值的范围,如int类型无论在括号中写的是多少,它都可以存储从-2147483648到2147483647的值。
  • unsigned,最大值翻倍

字符串

类型

说明

表示范围

备注

char(n)

定长字符串,n最大取值255(n表示字符数)

检索速度比varchar快

255个字符(中文、英文、数字都算一个字符)

(例:utf8编码方式, 那么char类型占255 * 3个字节)

适合用在身份证号码、手机号码等

varchar(n)

变长字符串,n最大取值跟字符集有关(n表示字符数)

必须定义长度

1、存放的字符数量跟字符集有关系:

  • 字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766字符

  • 字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845字符

  • 字符类型若为utf8mb,每个字符最多占4个字节,最大长度不能超过16383字符

2、最大空间65535个字节

varchar实际范围是65532或65533, 因为内容头部会占用1或2个字节保存该字符串的长度;如果字段default null(即默认值为空),整条记录还需要1个字节保存默认值null。

 

阿里开发规范:5000以上用text,且单独一张表,用主键来对应。

text

长文本数据

text列不能有默认值

最大长度为2^31-1个字符

 

BLOB

可以存二进制数据,适合图片等

   

时间

 

timestamp(当时间戳使用)

datetime

自动更新

可以自动更新。insert、update数据时,可以设置timestamp列自动以当前时间(CURRENT_TIMESTAMP)填充/更新

存什么是什么。需要SQL语句手动更新

时区

存的是UTC时间;查询时,会跟随实际时区变化而变化

存什么是什么

表示范围

1970-01-01 00:00:00 ~ 2038-01-09 03:14:07

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

索引速度

存储空间

4字节

8字节

varchar

存储变长字符串

1、varchar(n)的n代表什么

n表示的是字符数

例如:test varchar(20)

2、varchar长度设置

在长度够用的情况下,越短越好。

3、varchar的最大长度

varchar的最大长度是65535 字节。

【强制】varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。

4、varchar存放汉字的个数

varchar(n)是几,就能存几个中文字。因为中文英文数字都算一个字符。

例如:varchar(50)是能保存50个汉字。

附:

1 byte (字节) = 8 bit (位), 存储范围0-255(2的8次方)

字符集:GBK :一个汉字占 2 个字节

UTF8:一个汉字占 3 个字节

posted @   zhegeMaw  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示