MySql(7)------mysql数据类型之数值类型
2016-08-20 12:16
417 查看
MySql跟oracle一样,有多种数据类型,当然MySql与Oracle数据类型还是有些区别,
这里主要分析MySql数据类型,MySql数据类型主要包括数值,字符串,日期和时间。
这篇单独介绍数值类型。
1.1 整数类型
根据取值范围和存储方式不同,将整数分为tinyint,smallint,mediumint,int和bigint这5个类型。
因为不同的表示,范围是不同的,如果插入数据超过长度,都会报超过字段范围(out of range)错误。
数据库设计阶段,都需要根据需求,结合实际慎重选择类型和确定长度范围,避免返工。
对于整数类型,我们可以在建表的时候通过()指定长度,如果不指定,就是默认长度。
比如int默认为11位,我们可以通过int(5)指定长度为5位。
看一个int的实例:
创建一个表t1,有两个字段,均为int类型,一个id1,无长度限制,另外一个id2,限制长度为3,
然后正常插入一条数据:
如果插入数据超过字段位数限制会怎样?能否插入?
这个有两种情况,如果数据库是非严格模式,会进行自动截取长度位数保存,
如果数据库是严格模式,超过长度则无法保存。
看一下严格模式下插入报错信息:
实际应用中一般都是采用数据库的严格模式,否则对于敏感数据风险太大。
对于int还有一个属性,就是自增长属性:AUTO_INCREMENT,该属性只能用于int类型,
数据自增长,默认从1开始,对于自增长列除了是int类型外,必须是not null,同时必须是主键(primary key)或唯一列(unique)。
而且,每一个表中只能出现一个唯一列。一般在实际应用中作为主键属性使用,例如:
从实例可以看出,插入语句中并没有指定主键f_userId插入列,主键是靠auto_increment属性自动增长的,
当然,也可以显示的去插入主键值。
1.2 小数
MySql的小数分为两类:浮点数和定点数。
浮点数:float(单精度)和double(双精度)。
定点数:decimal
浮点数和定点数同样可以用(M,D)来设置精度,M表时精度,D表示标度,M = 整数位+小数位,D 为小数位,
对于decimal,如果我们不设置小数位,默认为decimal(10,0),小数位就存不进去。
注意,整个M的长度不包括小数点的,网上有些说包括小数点,其实自己试试就知道不包括小数点,自己动手,
显真实,别人说得天花乱坠的并不一定是事实,别人的东西对自己来说永远只是参考,如果是依赖,会束缚住自己前行。
对于要求精度比较高的,金钱,一般使用decimal,因为decimal是以字符串的形式存储在数据库中,比较准确。
eg1:
这里建立一个表,其中id1,id2,id3的类型分别为float,double,decimal,总长度为5为,小数部分占2位,
我们采用的是正常插入数值,没有报任何异常。
eg2:
我在严格模式,当插入数据超过定义小数位,报错。
eg3:
把数据库设置成非严格模式,这个是会话级别的设置,不是永久的设置,永久设置可以修改数据库配置,比如windows下,修改my.ini配置,
linux下修改/etc/my.cnf配置,重启数据库生效。这里作为测试,设置成会话级别的,在上面例子中,数据库在严格模式下插入超过长度限制
的数值,不让插入,但是,在非严格模式下,数据库自动进行四舍五入的保存。
1.3 bit(位)
对于位类型BIT(M)可以用来存放多为二进制数,M范围1~64位,如果不显示的设置,默认为1位。
对于二进制bit存入数据后直接通过select是看不到的,传说中的肉眼看不到,
还需使出火眼金睛bin()和hex()两个函数读取二进制为。关于这两个函数,
bin():读取显示为二进制格式
hex():读取显示为十六进制格式
eg:
直接通过select看不到显示值,通过bin(),hex()可以看到值二进制和十六进制显示值。
这里主要分析MySql数据类型,MySql数据类型主要包括数值,字符串,日期和时间。
这篇单独介绍数值类型。
1.1 整数类型
根据取值范围和存储方式不同,将整数分为tinyint,smallint,mediumint,int和bigint这5个类型。
因为不同的表示,范围是不同的,如果插入数据超过长度,都会报超过字段范围(out of range)错误。
数据库设计阶段,都需要根据需求,结合实际慎重选择类型和确定长度范围,避免返工。
对于整数类型,我们可以在建表的时候通过()指定长度,如果不指定,就是默认长度。
比如int默认为11位,我们可以通过int(5)指定长度为5位。
看一个int的实例:
创建一个表t1,有两个字段,均为int类型,一个id1,无长度限制,另外一个id2,限制长度为3,
然后正常插入一条数据:
如果插入数据超过字段位数限制会怎样?能否插入?
这个有两种情况,如果数据库是非严格模式,会进行自动截取长度位数保存,
如果数据库是严格模式,超过长度则无法保存。
看一下严格模式下插入报错信息:
实际应用中一般都是采用数据库的严格模式,否则对于敏感数据风险太大。
对于int还有一个属性,就是自增长属性:AUTO_INCREMENT,该属性只能用于int类型,
数据自增长,默认从1开始,对于自增长列除了是int类型外,必须是not null,同时必须是主键(primary key)或唯一列(unique)。
而且,每一个表中只能出现一个唯一列。一般在实际应用中作为主键属性使用,例如:
从实例可以看出,插入语句中并没有指定主键f_userId插入列,主键是靠auto_increment属性自动增长的,
当然,也可以显示的去插入主键值。
1.2 小数
MySql的小数分为两类:浮点数和定点数。
浮点数:float(单精度)和double(双精度)。
定点数:decimal
浮点数和定点数同样可以用(M,D)来设置精度,M表时精度,D表示标度,M = 整数位+小数位,D 为小数位,
对于decimal,如果我们不设置小数位,默认为decimal(10,0),小数位就存不进去。
注意,整个M的长度不包括小数点的,网上有些说包括小数点,其实自己试试就知道不包括小数点,自己动手,
显真实,别人说得天花乱坠的并不一定是事实,别人的东西对自己来说永远只是参考,如果是依赖,会束缚住自己前行。
对于要求精度比较高的,金钱,一般使用decimal,因为decimal是以字符串的形式存储在数据库中,比较准确。
eg1:
这里建立一个表,其中id1,id2,id3的类型分别为float,double,decimal,总长度为5为,小数部分占2位,
我们采用的是正常插入数值,没有报任何异常。
eg2:
我在严格模式,当插入数据超过定义小数位,报错。
eg3:
把数据库设置成非严格模式,这个是会话级别的设置,不是永久的设置,永久设置可以修改数据库配置,比如windows下,修改my.ini配置,
linux下修改/etc/my.cnf配置,重启数据库生效。这里作为测试,设置成会话级别的,在上面例子中,数据库在严格模式下插入超过长度限制
的数值,不让插入,但是,在非严格模式下,数据库自动进行四舍五入的保存。
1.3 bit(位)
对于位类型BIT(M)可以用来存放多为二进制数,M范围1~64位,如果不显示的设置,默认为1位。
对于二进制bit存入数据后直接通过select是看不到的,传说中的肉眼看不到,
还需使出火眼金睛bin()和hex()两个函数读取二进制为。关于这两个函数,
bin():读取显示为二进制格式
hex():读取显示为十六进制格式
eg:
直接通过select看不到显示值,通过bin(),hex()可以看到值二进制和十六进制显示值。
相关文章推荐
- MySQL 的数值数据类型
- MySql数据类型分析(数值(整形)类型) Part1
- MySQL 的数值数据类型
- mysql数据类型-数值型
- MySQL数值数据类型的范围
- MySQL支持所有标准SQL数值数据类型
- MySql数据类型分析(数值(整形)类型) Part1
- mysql常用数据类型的使用方式--数值型
- MySQL支持的数据类型,数值类型
- 【MySQL数据类型1之--数值类型】
- MySQL基础教程1 —— 数据类型之数值类型
- MySql数据类型分析(数值(小数型)类型) Part2
- MySQL学习----MySQL数据类型----01MySQL 数值类型
- MySQL数据类型_数值类型
- MySQL 的数值数据类型
- MySQL 的数值数据类型
- MySQL数据类型之数值类型,对理解类型定义中的“位”有莫大的帮助
- MySql数据类型分析(数值(小数型)类型) Part2
- MySQL 数值数据类型
- MySQL的数值数据类型汇总