MySQL的数据类型(一)
每一个常量、变量和参数都有数据类型、它用来指定一定的存储格式、约束和有效范围。MySQL提供了多种数据类型、主要有数值型、字符串类型、日期和时间类型。不同的MySQL版本支持的数据类型可能会稍有不同。
数值类型:
MySQL支持所有标准SQL 中的数值类型、其中包括了严格数值类型、近似数值数据类型、并在此基础上做了一些扩展、增加了三种不同长度的整型。
在整数类型中、按照取值范围和存储方式不同、分为tinyint、smallint、mediumint、int和bigint这五种类型,如果超出类型范围的操作,会发生“Out of range” 错误提示。为了避免此类问题的发生,在选择数据类型的时候要根据应用的实际情况确定其取值范围,最后根据确定的结果去选择数据类型。
对于整型数据,MySQL还支持在类型名称后面的小括号能指定显示宽度,例如 int(5) 表示当数值宽度小于5位的时候在数字前面填满宽度,如果不显示指定宽度则默认为int(11)。一般配合zerofill使用,zerofill就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。
所有的整数类型都有一个可选属性UNSIGNED(无符号),如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,他的取值范围时正常值得下限取0,上限取原值的2倍,例如tinyint有符号范围是-128~+127,而无符号范围是0~255。如果一个列指定为zreofill,则MySQL自动为该列添加UNSIGNED属性。
整数类型还有一个属性,AUTO_INCREMENT。在需要产生唯一标识符或顺序值时,可以使用此属性,这个属性只能用于整数。ATUO_INCREMENT值一般从1开始,每行增加1。在插入NULL到一个AUTO_INCREMENT列时,MySQL插入一个比该列中当前最大值大1的值。一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT的列,应该定义为NOT NULL,并定义为PRIMARY KEY 或者为 UNIQUE键。
小数类型,MySQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数则只有decimal一种表示。定点数在mysql中以字符串的形式存放,比浮点数更准确,适合用来表示货币等精度高的数据。
浮点数和定点数都可以在类型名称后加(M,D)的方式来表示“(M,D)”表示该值一共显示M位数字(整数位+小数位)其中D位位于小数点后面,M和D又称为精度和标度。需要注意的是浮点数后面跟“(M,D)”的用法是非标准用法,如果要用于数据库的迁移,则最好不要这么使用。float和double在不指定精度时,默认会按照实际的精度(由实际的硬件和操作系统来决定)来显示,而decimal在不指定精度时,默认的整数位为10,默认小数位为0。
浮点数如果不写精度和标度,则会按照实际精度值来显示,如果有精度和标度,则会自动将四舍五入的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。
BIT(位)类型,用于存放字段值,BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写则默认为1位。对于位字段,直接使用SELECT命令将不会看到结果,可以用bin()
(显示为二进制格式)或者hex()(显示为十六进制格式)函数来进行读取。
日期时间类型:
MySQL中有多种数据类型可以用于日期和时间的表示,不同的版本可能有所差异,这些数据类型主要区别如下:
1.如果用来表示年月日,通常使用DATE来表示。字节:4,最小值:1000-01-01,最大值:9999-12-31
2.如果用来表示年月日时分秒,通常使用DATETIME来表示。字节:8,最小值:1000-01-01 00:00:00,最大值:9999-12-31 23:59:59
3.如果用来表示时分秒,通常使用TIME来表示。字节:4,最小值:-838:59:59,最大值:838:59:59
4.如果需要经常插入或者更新时间为当前系统时间,则通常是用TIMESTAMP来表示。TIMESTAMP值返回后显示为“YYY-MM-DD HH:MM:SS”格式的字符串,显示宽度固定位19个字符,如果想要获得数字值,应在TIMESTAMP列添加“+0”。字节:4,最小值:19700101080001,最大值:2038年的某个时刻
5.如果中表示年份,可以使用YEAR来表示,它比DATE占用更少的空间,YEAR有2位或4位格式的年,默认为4位格式。在4位格式中,允许的值:1901-2155和0000.在2位中,允许的值:70-69,表示1970-2069年。MySQL以YYYY格式显示年YEAR值(从5.5.27开始,2位格式的year已不被支持)。字节:1,最小值:1901,最大值:2155
每个日期时间类型都有一个有效值范围,如果超出这个范围,在默认的SQLMode下,系统会进行错误提示,并将以零值来进行存储。
TIMESTAMP还有一个重要特点,就是和时区相关。当插入日期时,会先转换为本地时区后存放;而从数据库取出时,也同样需要将日期转换为本地时区后显示。这样,两个不同时区的用户看到的同一个日期可能不一样。
MySQL的数据类型(一)的更多相关文章
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
- Mysql常用数据类型
Mysql常用数据类型 数字: 字符串: 时间:
- MySQL日期数据类型、时间类型使用总结
MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下. MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 ...
- MySQL日期数据类型、MySQL时间类型使用总结
MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --- ...
- MySQL数据库数据类型之集合类型SET测试总结
MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...
- mysql 的数据类型
mysql 的数据类型(描述的是字段)三大类:一.整型:1.tinyint(M),其中M是显示宽度,需要配合zerofill,就是前面0填充,存储单位为1个字节(8位),无符文是最大能存储范围0000 ...
- MySQL的数据类型(转)
MySQL的数据类型 1.整数 TINYINT: 8 bit 存储空间 SMALLINT: 16 bit 存储空间 MEDIUMINT: 24 bit 存储空间 INT: 32 bit 存储空间 BI ...
- mysql之数据类型
一.概述: 所谓建表,就是声明列的过程: 数据是以文件的形式放在硬盘中(也有放在内存里的) 列:不同的列类型占的空间不一样 选列的原则:够用又不浪费: 二.mysql的数据类型: 整形:Tinyin ...
- MySQL/MariaDB数据类型
1.为什么要定义MySQL数据类型 定义MySQL数据类型其实就是为了对数据进行分类,实现对不同的分类进行不同的处理 1.使系统能够根据数据类型来操作数据. 2.预防数据运算时出错.例如,通过强大的数 ...
- mysql的数据类型和字段属性
本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空\不为空值:NULL.NOT NULL 主键:primary ...
随机推荐
- 求大神帮忙解决一下c#winfrom bindingNavigatorPositionItem加载直接跳转问题
c# winfrom bindingNavigatorPositionItem控件问题加载直接跳转到相对应的行的问题
- tornado基本使用【服务】
1.安装 2.请求处理程序和请求参数 1.安装 pip install tornado 2.请求处理程序和请求参数 Tornado 的 Web 程序会将 URL 或者 URL 范式映射到 tornad ...
- Java虚拟机之栈帧
写在前面的话:Java虚拟机是一门学问,是众多Java大神们的杰作,由于我个人水平有限,精力有限,不能保证所有的东西都是正确的,这里内容都是经过深思熟虑的,部分引用原著的内容,讲的已经很好了,不在累述 ...
- hiveQL随笔
hiveQL中union all直接用于select 子句
- 重构指南 - 移除重复内容(Remove Duplication)
在项目中或多或少的都存在着重复的或者功能相似的代码,如果要对代码做改动,就要修改多个地方,所以我们需要将多处重复的代码提取到一个公共的地方供统一调用,以减少代码量,提高代码可维护性. 重构前代码 pu ...
- mysql二:库操作
一.系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 performance_schema: My ...
- Java中去除字符串中空格的方法
昨天写了一个关于Excel文件处理的脚本,在字符串匹配功能上总是出现多余不正确的匹配,debug调试之后,发现一个坑. ------->代码中字符串使用了replaceAll()方法,去除了所有 ...
- 【Mood 21】要不要重复造轮子
90%的人应该使用另外10%的人制造的轮子 但是每个人都应该有能力去创造属于自己的轮子 使用不代表伸手拿来,使用也是需要学习的,使用也可以升级为创新,关键在于这个轮子是在谁的手中! 90%的能套用着别 ...
- mongodb 3.4 学习 (一) 安装
https://www.mongodb.com/blog/post/capacity-planning-and-hardware-provisioning-mongodb-ten-minutes 安装 ...
- Service Broker完成实例之间的会话详细解读
首先了解service broker是什么东西: Service Broker 是数据库引擎的组成部分,因此管理这些应用程序就成为数据库日常管理的一部分. Service Broker 为 SQL S ...