MySQL 数据类型详解

在 MySQL 中常见的数据类型如下:

1、 整数类型

    包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,小数类型 FLOAT 和 DOUBLE,DECIMAL。

2、 日期/时间类型

    包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。

3、 字符串类型

    包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。

4、 二进制类型

    包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

 

整数类型

类型名称说明存储需求字节
TINYINT-128~1270~2551字节
SMALLINT-32768~327670~655352字节
MEDIUMINT-8388608~83886070~167772153字节
INT -2147483648~21474836470~42949672954字节
BIGINT-9223372036854775808~92233720368547758070~184467440737095516168字节

 

例:

-- 判断存在及删除

DROP TABLE IF EXISTS test_int;

-- 创建表

CREATE TABLE test_int (

    tinyint_value TINYINT,

    smallint_value SMALLINT,

    mediumint_value MEDIUMINT,

    int_value INT,

    bigint_value BIGINT

) ENGINE=INNODB CHARSET=utf8;

-- 添加数据

INSERT INTO test_int VALUES(100, 200, 300, 400, 500);

-- 查询表

SELECT * FROM test_int

 

表结构

数据

小数类型

 

类型名称说明字节数
FLOAT单精度浮点数4字节
DOUBLE双精度浮点数8字节
DECIMAL (M, D)精确的小数,M是总位数,D是小数点后的位数M+2字节

 

例:

-- 判断存在及删除

DROP TABLE IF EXISTS test_decimal;

-- 创建表

CREATE TABLE test_decimal (

    float_value FLOAT,

    double_value DOUBLE,

    decimal_value DECIMAL(10,2)

) ENGINE=INNODB CHARSET=utf8;

-- 添加数据

INSERT INTO test_decimal VALUES(1.25, 2.50, 3.75);

-- 查询表

SELECT * FROM test_decimal

 

表结构

数据

 

日期/时间类型

 

类型名称日期格式日期范围字节
YEARYYYY1901 ~ 21551字节
TIMEHH:MM:SS-838:59:59 ~ 838:59:593字节
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-33字节
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC4字节

例:

-- 判断存在及删除

DROP TABLE IF EXISTS test_time;

-- 创建表

CREATE TABLE test_time (

    date_value DATE,

    time_value TIME,

    year_value YEAR,

    datetime_value DATETIME,

    timestamp_value TIMESTAMP

) ENGINE=INNODB CHARSET=utf8;

-- 添加数据

INSERT INTO test_time VALUES(NOW(), NOW(), NOW(), NOW(), NOW());

-- 查询表

SELECT * FROM test_time

 

表结构

数据

 

字符串类型

 

类型名称说明存储需求
CHAR(M)固定长度非二进制字符串M 字节,1<=M<=255
VARCHAR(M)变长非二进制字符串L+1字节,在此,L< = M和 1<=M<=255
TINYTEXT非常小的非二进制字符串L+1字节,在此,L<2^8
TEXT小的非二进制字符串L+2字节,在此,L<2^16
MEDIUMTEXT中等大小的非二进制字符串L+3字节,在此,L<2^24
LONGTEXT大的非二进制字符串L+4字节,在此,L<2^32
ENUM枚举类型,只能有一个枚举字符串值1或2个字节,取决于枚举值的数目 (最大值为65535)
SET一个设置,字符串对象可以有零个或 多个SET成员1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)

 

主要 CHAR 与 VARCHAR类型

    CHAR类型不管存储的值的长度是多少,都会占用M个字节,而VARCHAR则占用实际长度+1个字节,如下表所示。

 

插入值CHAR(4)存储需求VARCHAR(4)存储需求
' ''    '4字节''1字节
'ab''ab  '4字节'ab'3字节
'abc''abc '4字节'abc'4字节
'abcd''abcd'4字节'abcd'5字节
'abcdef''abcd'4字节'abcd'5字节

 

-- 判断存在及删除

DROP TABLE IF EXISTS test_str;

-- 创建表

CREATE TABLE test_str (

    date_value CHAR(2),

    time_value VARCHAR(2)

) ENGINE=INNODB CHARSET=utf8;

-- 添加数据

INSERT INTO test_str VALUES('ab', 'abc');

-- 查询表

SELECT * FROM test_str

 

及TEXT系列

    TEXT系列的存储范围比VARCHAR要大,当VARCHAR不满足时可以用TEXT系列中的类型。需要注意的是TEXT系列类型的字段不能有默认值,在检索的时候不存在大小写转换,没有CHAR和VARCHAR的效率高

二进制类型 

 

    主要讲解一个 bit 类型 Bit称为位数据类型,其数据有两种取值:0和1,长度为1位。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。

注意:

    创建BIT类型字段的时候,BIT(),括号里的数字设为1时,

    BIT类型在数据库中存储为0/1,或为FALSE/TRUE;

    查询的时候 BIT类型可以写为 0,1,TRUE,FALSE,或带单引号;

    在实体映射中BIT类型映射为BOOLEAN类型;

 

-- 判断存在及删除

DROP TABLE IF EXISTS test_bit;

-- 创建表

CREATE TABLE test_bit (

    bit_value BIT

) ENGINE=INNODB CHARSET=utf8;

-- 添加数据

INSERT INTO test_bit VALUES('1');

-- 查询表

SELECT * FROM test_bit WHERE bit_value=TRUE

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值