首页 > 数据库技术 > 详细

MySQL数据类型

时间:2019-08-02 10:17:46      阅读:61      评论:0      收藏:0      [点我收藏+]

整型

MySQL数据类型 字节数
tinyint(m) 1个字节
smallint(m) 2个字节
mediumint(m) 3个字节
int(m) 4个字节
bigint(m) 8个字节

Core

  • 取值范围如果加了 unsigned,则最大值翻倍,如 tinyint unsigned 的取值范围为(0~255)。
  • 整形(m) 中的 m 是表示 SELECT 查询结果集中的显示宽度,只有搭配ZEROFILL才会起作用.ZEROFILL默认会使得该类型转变为无符号类型.当设置了显示宽度和ZEROFILL,且插入数字宽度小于m时,数字左端将会补零直至宽度等于m.
  • 如果插入数字超出范围则会插入对应的临界值(最大值或最小值)

示例

CREATE TABLE test(
    a INT(3) ZEROFILL,
    b BIGINT UNSIGNED
);

浮点型FLOAT,DOUBLE和定点型DECIMAL

FLOAT(M,D)#浮点型
DOUBLE(M,D)
DEC(M,D)#定点型
#M=整数位+小数位
#D=小数位
MySQL数据类型 长度及含义
float(m,d) 单精度浮点型 8位精度(4字节)
double(m,d) 双精度浮点型 16位精度(8字节)
dec(m,d) 定点型

Core

  • 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
  • DEC默认M为10,D为0
  • 不指定M和D浮点型或根据插入数值的精度来决定精度
  • 插入超出范围的数字将会变为临界值

字符串(char,varchar,_text)

MySQL数据类型(n最多字符数) 含义
char(n) 固定长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

char 和 varchar:

  • 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此。
  • 2.char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n<=255)或2个字节(n>255),所以 varchar(4),存入 3 个字符将占用 4 个字节。
  • 3.char 类型的字符串检索速度要比 varchar 类型的快。

    varchar 和 text:

  • 1.varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 +2 个字节。
  • 2.text 类型不能有默认值。
  • 3.varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索引的情况下,text 的索引似乎不起作用。

二进制数据(_Blob)

  • 1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。
  • 2._BLOB存储的数据只能整体读出。
  • 3._TEXT可以指定字符集,_BLO不用指定字符集。

ENUM,SET

CREATE TABLE test(
    a ENUM('a','b','c'),
    b SET('a','b','c')
);
INSERT INTO test VALUES('a','a,c'),
('c','b')
  • ENUM只能为1个值而SET可以为多个值

日期时间类型

类型 字节 范围 格式 用途
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 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
  • TIMESTAMP可以适应时区的变化

MySQL数据类型

原文:https://www.cnblogs.com/redo19990701/p/11286704.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!