【MySQL】数据类型之数字相关

"

目录

#. 数值类型

1. 数值范围验证

/. 有符号

/. 无符号

2. int类型显示长度验证

#. 浮点型

1. 验证

/. 建表

/. 精度

#. 日期类型

1. 验证

/. year

/. date、time、datatime

/. timetamp

/. datetime 与 timestamp 区别

/. 注意事项



详见链接

MySQL常用数据类型概括:

1. 数字:
整型:tinyint int bigint
小数:

  • float: 在位数比较短的情况下不精确
  • double:在位数比较长的情况下不精确(如:0.000001230123123123 存成:0.000001230000)
  • decimal:精确,内部原理是以字符串形式去存(如果是使用小数,则推荐使用此方法)

2. 字符串:

  • char(0):简单粗暴,浪费空间,存取速度快(root 存成 root000000)
  • varchar:精确,节省空间,存取速度慢

sql优化:创建表时,定长的类型往前放(比如性别),变长的往后放(比如地址或描述信息).

>255个字符,超了就把文件路径放到数据库中,比如图片,视频等找一个文件服务器,数据库中只存放路径或url.

3. 事件类型:

  • datatime:最常用,获取当前日期事件

4. 枚举类型与集合类型

  • enum 和 set:前者单选,后者多选

#. 数值类型

整数类型: TINYINT SMALLINT MEDIUMINT INT BIGINT

作用:存储年龄、等级、ID、各种号码等

========================================

tinyint[(m)] [unsigned] [zerofill]

小整数,数据类型用于保存一些范围的整数数值范围:
有符号: -128 ~ 127

无符号: 0 ~ 255

PS:MySQL中无布尔值,使用tinyint(1)构造.

========================================

int[(m)] [unsigned] [zerofill]

整数,数据类型用于保存一些范围的整数数值范围:
有符号: -2147483648 ~ 2147483647

无符号:0 ~ 4294967295

========================================

bigint[(m)] [unsigned] [zerofill]

大整数,数据类型用于保存一些范围的整数数值范围:
有符号:-9223372036854775808 ~ 9223372036854775807

无符号:0 ~ 18446744073709551615

1. 数值范围验证

/. 有符号

默认是有符号的

![在这里插入图片描述](/media/ai/2019-03/a9b689f5-1862-452d-a39a-8c93dc0838a1.png)

/. 无符号

指定unsigned后,即为无符号

![在这里插入图片描述](/media/ai/2019-03/4f299fdd-e300-42f3-8106-1b767fe67b2e.png)

2. int类型显示长度验证

int类型后面可指定的数字是显示宽度,而不是存储宽度.

![在这里插入图片描述](/media/ai/2019-03/5a128ad1-1209-4ad1-8f0c-b86dc73a3c06.png)

注意:为改类型指定宽度时,仅仅只是指定了查询结果的显示宽度,与存储范围无关,存储范围如下表:

![在这里插入图片描述](/media/ai/2019-03/9adee1c9-f145-4555-869b-41e7b9f6e503.png)

完全没有必要为整数类型指定显示宽度,使用默认的就可以了.
默认的显示宽度,都是在最大值的基础上加1.

int的存储宽度是4个bytes,即32个bit,即2**32

无符号的最大值为:4294967296-1

有符号的最大值为:2147483648-1
有符号与无符号的最大数字需要的显示宽度均为0,而针对有符号的最小值则需要11为才能显示完全,所以int类型默认的显示宽度为11是非常合理的.


#. 浮点型

定点数类型:DEC等同于DECIMAL

浮点类型:FLOAT DOUBLE

作用:存储薪资、身高、体重、体质参数等

—————————————— FLOAT ——————————————

float[(M, D)] [unsigned] [zerofill]
# 参数解释:单精度浮点数(非准确小数值),M是全长,D是小数点后个数。M最大值为255,D最大值为30.

有符号:

-3.402823466E+38 to -1.175494351E-38

1.175494351E-38 to 3.402823466E+38
无符号:

1.175494351E-38 to 3.402823466E+38

精确度:随着小数的增多,精度变得不准确

—————————————— DOUBLE ——————————————

double[(M, D)] [unsigned] [zerofill]
# 参数解释:双精度浮点数(非精确小数值),M是全长,D是小数点后个数。M最大值为255,D最大值为30.

有符号:

-1.7976931348623157E+308 to -2.2250738585072014E-308

2.2250738585072014E-308 to 1.7976931348623157E+308
无符号:

2.2250738585072014E-308 to 1.7976931348623157E+308

精确度:随着小数的增多,精度比float要高,但也会变得不准确

—————————————— DECIMAL ——————————————

decimal[(M[,D])] [unsigned] [zerofill]
# 参数解释:准确的小数值,M是整数部分总个数(负号不算),D是小数点个数。M最大值为65,D最大值为30.

精确度:
随着小数的增多,精确度始终准确
对于精确数值计算时需要用此类型

decaimal能够存储精确值的原因在于其内部按照字符串存储

1. 验证

/. 建表

![在这里插入图片描述](/media/ai/2019-03/38a73e10-3474-4b9e-b84c-627ec9ab62b1.png)

/. 精度

![在这里插入图片描述](/media/ai/2019-03/e970eef8-ee11-4afd-b225-6834ef50fc9b.png)


#. 日期类型

DATE TIME DATETIME TIMESTAMP YEAR

作用:存储用户注册时间,文章发布时间,员工入职时间,出生日期,过期时间等.

语法:

YEAR

YYYY (1901/2155)    # 1901/2155是年份限制,18年测试是在这个范围,往后可能会增加

DATE

YYY-MM-DD (1000-01-01/9999-12-31)

TIME

HH:MM:SS (‘-838:59:59‘/‘838:59:59‘)

DATETIME

YYY-MM-DD HH:MM:SS (1000-01-01 00:00:00/9999-12-31 23:59:59)

TIMESTAMP

YYYYMMDD HHMMSS (1970-01-01 00:00:00/2037 年某时)

1. 验证

/. year

![在这里插入图片描述](/media/ai/2019-03/73282bc0-2c3a-4e68-b1ae-0a6ff37c9ced.png)

/. date、time、datatime

now():MySQL只带函数,调用时会自动获取当前类型指定的时间.

接上图:

![在这里插入图片描述](/media/ai/2019-03/f3c83ddf-613d-4e50-b42d-98ed5e42922f.png)

/. timetamp

![在这里插入图片描述](/media/ai/2019-03/3b4006af-5dbc-496d-b310-cd9e372c0f35.png)

可见,插入的记录默认为当前时间,指定为null时依然为当前时间.

/. datetime 与 timestamp 区别

在实际应用的很多场景中,MySQL的这两种日期类型都能够满足我们的需要,存储精度都为秒,但在某些情况下会展现出它们各自的优劣.

下面是这两种日期类型的区别:

  1. 前者的日期范围是1001-9999年;后者的日期范围是1970-2038年.
  2. 前者存储时间与时区无关;后者存储时间与时区有关,显示的值也依赖于时区,在MySQL服务器.
  3. 前者使用8字节的存储空间;后者的存储空间为4字节,因此,后者比前者的空间利用率更高.
  4. 前者的默认值为null;后者的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),即如果不做特殊处理,并且update语句中没有指定改列的更新值,则默认更新为当前时间.

/. 注意事项

  1. 单独插入时间时,需要以字符串的形式,按照对应的格式插入.
  2. 插入年份时,尽量使用4位值.
  3. 插入两位年份时:0<=value<=69 ,以20开头,比如50,结果2050;100>value>=70,以19开头,比如71,结果1971.

    ![在这里插入图片描述](/media/ai/2019-03/b2149016-253f-41f4-8add-9c0ec8a22d1d.png)



"

原文地址:https://www.cnblogs.com/zyk01/p/11375902.html

时间: 2024-10-06 16:08:47

【MySQL】数据类型之数字相关的相关文章

(转)mysql数据类型

1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为

MySQL 数据类型(转)

MySQL 数据类型 在 MySQL 中,有三种主要的类型:文本.数字和日期/时间类型. Text 类型: 数据类型 描述 备注 CHAR(size) 保存固定长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的长度.最多 255 个字符.   VARCHAR(size) 保存可变长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的最大长度.最多 255 个字符. 注释:如果值的长度大于 255,则被转换为 TEXT 类型.   TINYTEXT 存放最大长度为 25

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长

跟王老师学MySQL:MySQL数据类型之字符类型

跟王老师学MySQL:MySQL数据类型之字符类型 主讲教师:王少华   QQ群号:483773664 学习内容: 字符串类型的种类及其特点 char和varchar的异同 字符串类型是在数据库中存储字符串的数据类型. 字符串类型包括 CHAR. VARCHAR BLOB TEXT 一.char和varchar (一)定义语法 1 字符串类型 (M) 注: 字符串类型:char或varchar M:指定了该字符串最大长度 (二)二者不同之处 char类型长度是固定的,即在创建表时就指定了,其长度

跟王老师学MySQL:MySQL数据类型之日期与时间类型

跟王老师学MySQL:MySQL数据类型之日期与时间类型 主讲教师:王少华   QQ群号:483773664 学习内容 YEAR类型的特点及使用 TIME类型的特点及使用 DATE类型的特点及使用 DATETIME类型的特点及使用 TIMESTAMP类型的特点及使用 MySQL表示日期和时间的数据类型有以下几种: 1.YEAR类型 2.TIME类型 3.DATE类型 4.DATETIME类型 5.TIMESTAMP类型 一.Year类型 (一)简介 year使用一个字符串来表示年份 MySQL中

跟王老师学MySQL:MySQL数据类型常见问题及解答

跟王老师学MySQL:MySQL数据类型常见问题及解答 主讲教师:王少华   QQ群号:483773664 学习内容 整数类型和浮点类型的异同 浮点数类型和定点数类型的异同 char和varchar类型的异同 时间和日期类型的异同 text和blob的异同 存储路径字符串的注意事项 mysql如何存储boolean类型 null的处理 在MySQL中创建表时,需要考虑为字段选择哪种数据类型是最合适的.选择了合适的数据类型,会提高数据库的效率. 一.整数类型和浮点类型 整数类型和浮点类型最大区别是

跟王老师学MySQL:MySQL数据类型之整数类型

跟王老师学MySQL:MySQL数据类型之整数类型 主讲教师:王少华   QQ群号:483773664 MySQL的数据类型包括整数类型.浮点数类型.定点数类型.日期和时间类型.字符串类型和二进制数据类型. 学习目标 整型包括哪些类型以及它们的取值范围 以tinyint为例,讲解了定义整型的三个属性 一.简介 整数类型是数据库中最基本的数据类型. 标准SQL中支持INTEGER和SMALLINT这两类整数类型. MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT.MEDIUMIN

MySQL入门很简单: 2 MySQL数据类型

2. MySQL数据类型 2.1 整数类型 后面的是默认显示宽度: tinyint(4) smallint(6) mediumint(9) int(11) bigint(20) 2.2 浮点型和定点数类型 MySQL可以指定浮点数和定点数的精度:    数据类型(M,D)  M:数据总长度, D:小数点后的长度

21分钟 MySQL 入门教程 &amp;&amp; mysql数据类型

转自:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#c1 http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html 21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据类型 五.使用MySQL数据库 登录

DF学Mysql(三)——Mysql数据类型

Mysql数据类型分为:整数类型.浮点数类型.定点数类型日期与时间类型字符串类型二进制类型 整数类型 字节数 无符号数取值范围 有符号数取值范围TINYINT 1 0-255 -128-127SMALLINT 2 0-65535 -32768-32767MEDIUMINT 3 0-16777215 -8388608-8388607INT 4 0-4294967295 -2147483648-2147483647INTGER 4 0-4294967295 -2147483648-214748364