MYSQL数据类型 mysql数据类型长度设置 您所在的位置:网站首页 timestamp数据库定义长度 MYSQL数据类型 mysql数据类型长度设置

MYSQL数据类型 mysql数据类型长度设置

2023-07-03 00:54| 来源: 网络整理| 查看: 265

1. MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

2. MySQL支持多种类型, 大致可以分为三类: 数值、日期/时间和字符串(字符)类型。

3. 数值类型

3.1. 数值类型列表

类型

字节数

取值范围

tinyint(迷你整型)

1 byte

(-128, 127)

smallint(小整型)

2 bytes

(-32768, 32767)

mediumint(中整型)

3 bytes

(-8388608, 8388607)

int或integer(标准整型)

4 bytes

(-2147483648, 2147483647)

bigint(大整型)

8 bytes

(-9223372036854775808, 9223372036854775807)

float(单精度)

4 bytes

(-3.402823466E+38, -1.175494351E-38),

 0,

(1.175494351E-38, 3.402823466E+38)

double(双精度)

8 bytes

(-1.7976931348623157E+308,  -2.2250738585072014E-308),

0,

(2.2250738585072014E-308,  1.7976931348623157E+308)

decimal(M, D)

m + 2

M是数字的最大长度, 取值范围1~65, 默认值为10。

D是小数点位数, 取值范围为0~30, 不得超过M的长度。

3.2. 长度

3.2.1. 长度和字节数不是一个东西。

3.2.2. tinyint、smallint、mediumint、int、bigint、float和double最大长度可设置为255。

3.2.3. tinyint类型的长度默认是4。长度大概是-128的字符位数。

3.2.4. smallint类型的长度默认是6。长度大概是-32768的字符位数。

3.2.5. mediumint类型的长度默认是9。长度大概是-8388608的字符位数。

3.2.6. int类型的长度默认是11。长度大概是-2147483648的字符位数。

3.2.7. bigint类型的长度默认是20。长度大概是-9223372036854775808的字符位数。

3.2.8. float和double小数点后最大长度30。

3.2.9. decimal类型M的最大长度65, D的最大长度30, D不能大于M的长度。

3.2.10. 长度和取值范围无关。即使你把tinyint类型的长度设置为2(虽然一般不这么做), 依然可以存值-128或127。

3.3. 创建Number表使用数值类型

3.3.1. Number表结构

MYSQL数据类型 mysql数据类型长度设置_字符串

3.3.2. Number表

MYSQL数据类型 mysql数据类型长度设置_字符串_02

4. 日期类型

4.1. 日期类型列表

类型

字节数

范围

格式

date(日期值)

3 bytes

1000-01-01 ~ 9999-12-31

YYYY-MM-DD

time(时间值)

3 bytes

'-838:59:59' ~ '838:59:59'

HH:MM:SS

year(年份值)

1 bytes

1901 ~ 2155

YYYY

datetime(日期和时间)

8 bytes

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

YYYY-MM-DD HH:MM:SS

timestamp(时间戳)

4 bytes

1970-01-01 00:00:00 结束时间是第2147483647秒, 北京时间2038-1-19 11:14:07, 格林尼治时间2038年1月19日 凌晨03:14:07

YYYY-MM-DD HH:MM:SS

4.2. year类型只有一个字节, 为什么能表示1901 ~ 2155? 实际上一个year类型所存的一个字节的无符号值的范围是0 ~ 255, 年份从1900年开始算起, 1900加上0 ~ 255就表示1901 ~ 2155了。

4.3. time类型的HH段怎么表示-838 ~ 838了, 怎么不是23? 因为time类型并不是表示的一天的时间值, 它可以表示从一段时间到一段时间的时间值, 一段时间到一段时间就会出现比较大的HH, 因此它们设计了'-838:59:59' ~ '838:59:59'这样一个时间范围。

4.4. year类型有一个长度值, 默认是4。date、time、datetime和timestamp类型没有长度值。

4.5. Date表结构

MYSQL数据类型 mysql数据类型长度设置_MYSQL数据类型_03

4.6. Date表内容

MYSQL数据类型 mysql数据类型长度设置_字符编码_04

5. 字符串类型

5.1. 字符串类型列表

类 型

字节数

说明

char(N)

0 ~ 最大字符字节长度*N bytes

定长字符串

varchar

0 ~ 65535 bytes

可变长度字符串

tinytext

0 ~ 255 bytes

短长度文本字符串

text

0 ~ 65535 bytes

长文本字符串

mediumtext

0 ~ 16777215 bytes

中长度文本字符串

longtext

0 ~ 4294967295 bytes

极大文本字符串

tinyblob

0 ~ 255 bytes

短长度二进制字符串

blob

0 ~ 65535 bytes

长文本二进制字符串

mediumblob

0 ~ 16777215 bytes

中长度二进制字符串

longblob

0 ~ 4294967295 bytes

极大二进制字符串

5.2. varchar使用1到2个额外的字节标识实际存储的字符串长度。如果列的最大长度小于256个字节, 用一个字节标识。如果最大长度大于等于256, 使用两个字节标识。

5.3. 长度

5.3.1. char类型的长度最大可以设置为255, 表示可以容纳255个字符(无论是汉字还是其它字符都可以容纳255个), 如果实际存储字符不够255个, 字符串后添加空格补全。因此在读取数据时, char类型的数据要进行处理, 把后面的空格去除。

5.3.2. varchar类型的长度最大可以设置为65535, 表示可以容纳65535个字符, 如果实际存储字符不够65535个, 按实际存储字符长度(不会用空格补全)。

5.3.3. tinytext、text、mediumtext、longtext、tinyblob、blob、mediumblob和longblob类型没有长度值。

5.3.4. NULL标识位, 如果varchar字段定义中带有default null允许列空, 则需要需要1bit来标识, 每8个bits的标识组成一个字段。

5.3.5. 如果使用的字符编码是utf8, varchar类型最大长度(65535-1-2)/3=21848。事实上 varchar类型长度还和很多因素有关, 这个时候就需要研究InnoDB引擎了, 一般不超过20000都没有问题, 我们根据实际需求来设置就好了。

5.4. text是一个文本对象, 它和varchar基本相同。有4种text类型: tinytext、text、mediumtext和longtext。它们区别在于可容纳存储范围不同。text一般用来存储一篇文章或者一段话等。

5.5. 如果使用的字符编码是utf8, tinytext可以容纳255/3=85个汉字, 单字节字符255个。

5.6. 如果使用的字符编码是utf8, text可以容纳65535/3=21845个汉字, 单字节字符65535个。

5.7. 如果使用的字符编码是utf8, mediumtext可以容纳16777215/3=5592405个汉字, 单字节字符16777215个。

5.8. 如果使用的字符编码是utf8, longtext可以容纳4294967295/3=1431655765个汉字, 单字节字符4294967295个。

5.9. blob是一个二进制大对象, 可以容纳可变数量的数据。有4种blob类型: tinyblob、blob、mediumblob和longblob。它们区别在于可容纳存储范围不同。blob一般用来存储文件, 例如: 图片、视频等。

5.10. String表结构

MYSQL数据类型 mysql数据类型长度设置_字符编码_05

5.11. String表内容

MYSQL数据类型 mysql数据类型长度设置_MYSQL数据类型_06



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有