我是靠谱客的博主 典雅冬瓜,最近开发中收集的这篇文章主要介绍mysql返回条数据类型_MySQL的数据类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数值类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

对于小数的表示,MYSQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数只有decimal一种,在mysql中以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

类型

大小

范围(有符号)

范围(无符号)unsigned约束

用途

TINYINT

1 字节

(-128,127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 字节float(255,30)

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度 浮点数值

DOUBLE

8 字节double(255,30)

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度 浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2double(65,30)

依赖于M和D的值

依赖于M和D的值

小数值

示例

1. 不要误以为 int(M) 中的 M 为宽度限制

1) 整数型的数值类型已经限制了取值范围,有符号整型和无符号整型都有,而M值并不代表可以存储的数值字符长度,它代表的是数据在显示时显示的最小长度;

2) 当存储的字符长度超过M值时,没有任何的影响,只要不超过数值类型限制的范围;

3) 当存储的字符长度小于M值时,只有在设置了zerofill用0来填充,才能够看到效果,换句话就是说,没有zerofill,M值就是无用的。

2. MYSQL类型 float double decimal 的区别

float # 单精度浮点数值 (浮点型)

double # 双精度浮点数值 (浮点型)

decimal # 定点型

1) 语法:

类型名称(M, D) -> float(5,2)

- M # 精度: 总长度

- D # 标度: 小数点位数长度

2) 指定长度

create table t1 (id1 float(6, 2), id2 double(6, 2), id3 decimal(6, 2));

当插入小数位长度大于标度时, 如: 1.235, 会进行截断, 并遵循四舍五入的规则.

3) 当不指定约束参数

create table t3 (id1 float,id2 double,id3 decimal);

当插入数值 1.234, float double不会改变, decimal会遵循默认值 decimal(10,0)

+-------+-------+------+

| 1.234 | 1.234 | 1 |

+-------+-------+------+

float 和 double 的区别: float只能取 float(M, 5) double只受自己长度的限制

日期和时间

- 表示时间值的日期和时间类型为 DATETIME, DATE, TIMESTAMP, TIME和 YEAR。

- 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

- TIMESTAMP类型有专有的自动更新特性

类型

大小 (字节)

范围

格式

用途

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

混合日期和时间值,时间戳

示例

1. date / time / datetime 示例

create table t (d date,t time,dt datetime);

insert into t values (now(),now(),now()); # NOW() 函数返回当前的日期和时间。

结果:

+------------+----------+---------------------+

| 2018-09-21 | 14:51:51 | 2018-09-21 14:51:51 |

+------------+----------+---------------------+

2. timestamp 示例

create table t (t1 timestamp);

# 格式:

+-------+-----------+------+-----+-------------------+-----------------------------+

| id1 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

+-------+-----------+------+-----+-------------------+-----------------------------+

1) 插入数据null,会自动插入当前时间的时间

insert into t5 values (null);

# 结果:

+---------------------+

| 2018-09-21 14:56:50 |

+---------------------+

2) 添加一列 默认值是'0000-00-00 00:00:00'

alter table t5 add t2 timestamp;

# 当插入 null 时:

+---------------------+---------------------+

| t1 | t2 |

+---------------------+---------------------+

| 2018-09-21 14:56:50 | 0000-00-00 00:00:00 |

+---------------------+---------------------+

3) 自动识别并调整时间格式

insert into t6 values (19700101080001);

+---------------------+

| 1970-01-01 08:00:01 |

+---------------------+

4) timestamp 时间的上限是2038-01-19 11:14:07, 下限是19700101080001

CURRENT_TIMESTAMP,则在insert一条记录时,时间值会自动设置为系统当前时间

ON UPDATE CURRENT_TIMESTAMP,则时间会随着update命令进行实时更新,即当数据表的其他字段发生变化时,time自动更新为最新的时间。

1. datetime 示例 (几种插入时间的方式)

1) insert into t values ('2018-9-26 12:20:10');

2) insert into t values ('2018/9/26 12+20+10');

3) insert into t values ('20180926122010');

4) insert into t values (20180926122010);

结果:

+---------------------+

| t |

+---------------------+

| 2018-09-26 12:20:10 |

| 2018-09-26 12:20:10 |

| 2018-09-26 12:20:10 |

| 2018-09-26 12:20:10 |

+---------------------+

字符称串类型

字符串类型指 CHAR、 VARCHAR、 BINARY、 VARBINARY、 BLOB、 TEXT、 ENUM和 SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型

大小

用途

CHAR

0-255字节

定长字符串

VARCHAR

0-65535 字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65 535字节

二进制形式的长文本数据

TEXT

0-65 535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LONGBLOB

0-4 294 967 295字节

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

示例

1. char 和 varchar 的区别

1) char的长度不可变, varchar的长度可变

2) 定义长度 char(10) varchar(10), 存入字符'abcd', 则 char的长度为10,后有6个空格, varchar的长度为 4。

3) char的存取数度比varchar快得多,因为其长度固定,方便程序的存储与查找;但是 char因为其长度固定,所以会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

4) char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

ENUM 和 SET 类型

ENUM中文名称叫枚举类型,它的值范围需要在创建表时通过枚举方式显示。ENUM只允许从值集合中选取单个值,而不能一次取多个值。

SET和 ENUM非常相似,也是一个字符串对象,里面可以包含0-64个成员。根据成员的不同,存储上也有所不同。set类型可以允许值集合中任意选择1或多个元素进行组合。对超出范围的内容将不允许注入,而对重复的值将进行自动去重。

类型

大小

用途

ENUM

对1-255个成员的枚举需要1个字节存储;对于255-65535个成员,需要2个字节存储;最多允许65535个成员。

单选:选择性别

SET

1-8个成员的集合,占1个字节9-16个成员的集合,占2个字节17-24个成员的集合,占3个字节25-32个成员的集合,占4个字节33-64个成员的集合,占8个字节

多选:兴趣爱好

示例

1. enum 枚举

create table t1 (id int(11) primary key, sex enum("male", "female"));

不能同时插入'male,female'两个值,也不能插入不属于'male,female'的值

2. set

create table t1 (name varchar(32), hobby set("唱歌", "跳舞", "书画"));

可以任意选择set()中的项,并自带去重功能, 不能选择set()中以外的项

最后

以上就是典雅冬瓜为你收集整理的mysql返回条数据类型_MySQL的数据类型的全部内容,希望文章能够帮你解决mysql返回条数据类型_MySQL的数据类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部