MySQL数据类型详解
数值类型
MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。
许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。
表列出了各种数值类型以及它们的允许范围和占用的内存空间。
INT 类型
在MySQL 中支持的 5 个主要整数类型是TINYINT,SMALLINT,MEDIUMINT,INT 和BIGINT。
这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。
MySQL 以一个可选的显示宽度指示器的形式对SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。
例如,指定一个字段的类型为INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。
需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。
万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。
还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为0。
UNSIGNED 修饰符规定字段只保存正值。
因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。
从而增大这个字段可以存储的值的范围。
ZEROFILL 修饰符规定0(不是空格)可以用来真补输出的值。
使用这个修饰符可以阻止MySQL 数据库存储负值。
FLOAT、DOUBLE 和DECIMAL 类型
MySQL 支持的三个浮点类型是FLOAT、DOUBLE 和DECIMAL 类型。
FLOAT 数值类型用于表示单精度浮点数值,而DOUBLE 数值类型用于表示双精度浮点数值。
与整数一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。
比如语句FLOAT(7,3) 规定显示的值不会超过7 位数字,小数点后面带有3 位数字。
对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它。
DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。
精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。
比如语句DECIMAL(7,3) 规定了存储的值不会超过7 位数字,并且小数点后不超过3 位。
忽略DECIMAL 数据类型的精度和计数方法修饰符将会使MySQL 数据库把所有标识为这个数据类型的字段精度设置为10,计算方法设置为0。
UNSIGNED 和ZEROFILL 修饰符也可以被FLOAT、DOUBLE 和DECIMAL 数据类型使用。
并且效果与INT 数据类型相同。
字符串类型
MySQL 提供了8 个基本的字符串类型,可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数
CHAR 和VARCHAR 类型
CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。
这个大小修饰符的范围从0-255。
比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。
CHAR 类型可以使用BINARY 修饰符。
当用于比较运算时,这个修饰符使CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。
CHAR 类型的一个变体是VARCHAR 类型。
它是一种可变长度的字符串类型,并且也必须带有一个范围在0-255 之间的指示器。
CHAR 和VARCHGAR 不同之处在于MuSQL 数据库处理这个指示器的方式:CHAR 把这个大小视为值的大小,不长度不足的情况下就用空格补足。
而VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。
所以短于指示器长度的VARCHAR 类型不会被空
格填补,但长于指示器的值仍然会被截短。
因为VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。
VARCHAR 类型在使用BINARY 修饰符时与CHAR 类型完全相同。
TEXT 和BLOB 类型
对于字段长度要求超过255 个的情况下,MySQL 提供了TEXT 和BLOB 两种类型。
根据存储数据的大小,它们都有不同的子类型。
这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。
TEXT 和BLOB 类型在分类和比较上存在区别。
BLOB 类型区分大小写,而TEXT 不区分大小写。
大小修饰符不用于各种BLOB 和TEXT 子类型。
比指定类型支持的最大范围大的值将被自动截短。
日期和时间类型
在处理日期和时间类型的值时,MySQL 带有5 个不同的数据类型可供选择。
它们可以被分成简单的日期、时间类型,和混合日期、时间类型。
根据要求的精度,子类型在每个分类型中都可以使用,并且MySQL 带有内置功
DATE、TIME 和TEAR 类型
MySQL 用DATE 和TEAR 类型存储简单的日期值,使用TIME 类型存储时间值。
这些类型可以描述为字符串或不带分隔符的整数序列。
如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开,而TIME 类型的值应该使用冒号作为分隔符分开。
需要注意的是,没有冒号分隔符的TIME 类型值,将会被MySQL 理解为持续的时间,而不是时间戳。
MySQL 还对日期的年份中的两个数字的值,或是SQL 语句中为TEAR 类型输入的两个数字进行最大限度的通译。
因为所有TEAR 类型的值必须用4 个数字存储。
MySQL 试图将2 个数字的年份转换为4 个数字的值。
把在00-69 范围内的值转换到2000-2069 范围内。
把70-99 范围内的值转换到1970-1979 之内。
如果MySQL 自动转换后的值并不符合我们的需要,请输入4 个数字表示的年份。
DATEYIME 和TIMESTAMP 类型
除了日期和时间数据类型,MySQL 还支持DATEYIME 和TIMESTAMP 这两种混合类型。
它们可以把日期和时间作为单个的值进行存储。
这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。
如果我们对TIMESTAMP 类型的字段没有明确赋值,或是被赋与了null 值。
MySQL 会自动使用系统当前的日期和时间来填充它。
复合类型
MySQL 还支持两种复合数据类型ENUM 和SET,它们扩展了SQL 规范。
虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。
一个ENUM 类型只允许从一个集合中取得一个值;而SET 类型允许从一个集合中取得任意多个值。
ENUM 类型
ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。
在处理相互排拆的数据时容易让人理解,比如人类的性别。
ENUM 类型字段可以从集合中取得一个值或使用null 值,除此之外的输入将会使MySQL 在这个字段中插入一个空字符串。
另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值。
ENUM 类型在系统内部可以存储为数字,并且从1 开始用数字做索引。
一个ENUM 类型最多可以包含65536 个元素,其中一个元素被MySQL 保留,用来存储错误信息,这个错误值用索引0 或者一个空字符串表示。
MySQL 认为ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。
这说明通过搜索包含空字符串或对应数字索引为0 的行就可以很容易地找到错误记录的位置。
SET 类型
SET 类型与ENUM 类型相似但不相同。
SET 类型可以从预定义的集合中取得任意数量的值。
并且与ENUM 类型相同的是任何试图在SET 类型字段中插入非预定义的值都会使MySQL 插入一个空字符串。
如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。
一个SET 类型最多可以包含64 项元素。
在SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。
“位”是创建有序元素集合的一种简单而有效的方式。
并且它还去除了重复的元素,所以SET 类型中不可能包含两个相同的元素。
希望从SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为0 的行。
MySQL(二)数据库数据类型详解
MySQL(⼆)数据库数据类型详解 序⾔ 今天去健⾝了,感觉把⾝体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这⾥讲清楚了,以后在看到什么数据类型,咱度应该认识,下⾯就跟着我的节奏去把这个拿下吧。
---WZY⼀、数据类型 MySQL的数据类型有⼤概可以分为5种,分别是整数类型、浮点数类型和定点数类型、⽇期和时间类型、字符串类型、⼆进制类型。
现在可以来看看你对这5种类型的熟悉程度,哪个看起来懵逼了,那就说明⾃⼰哪个不熟悉,不理解。
注意:整数类型和浮点数类型可以统称为数值数据类型,这不难理解。
数值数据类型 整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 浮点数类型:FLOAT、DOUBLE 定点⼩数:DECIMAL ⽇期/时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP 字符串类型 CHAR、VARCHAR、TEXT、ENUM、SET等 ⼆进制类型 BIT、BINARY、VARBINARY、BLOB 1、整数类型 不管你学什么语⾔,在基础⽅⾯,都应该知道 1个字节= 8位⼆进制数。
每个类型的取值范围也就能够知道,⽐如TINYINT占⽤1个字节,也就是8位,2的8次⽅减1等于255,也就是说如果代表没符号的整数,该取值范围为0~255,如果是有符号的,最⾼位为符号号位,也就是2的7次⽅减1,也就是127,取值范围为-128~127,为什么需要减1,这个问题就需要考虑临界值的问题了。
⽽考虑临界值问题⼜有需要讨论原码补码反码的知识,这些度不是我们讨论的重点,所以在这就⾃⾏百度。
给出⼀张范围表,给⼤家做参考。
不同整数类型的取值范围 根据⾃⼰所需去选取不同的类型名称, 例如: CREATE TABLE aaa( id INT(10) PRIMARY KEY, age INT(6) ); 这个例⼦中INT(10)、INT(6) 括号中的数字表⽰的是该数据类型指定的显⽰宽度,指定能够显⽰的数值中数字的个数。
MYSQL数据类型——字符串类型
MYSQL数据类型——字符串类型⼀、字符串类型在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set。
1.1 定长字符串定义:char,磁盘(⼆维表)在定义结构的时候,就以及确定了最终数据的存储长度。
Char(L): L代表length,可以存储的长度,单位为字符,最⼤长度值可以为255.Char(4):在UTF8环境下,需要4*3=12个字节。
1.2 变长字符串定义:varchar,在分配空间的时候,按照最⼤的空间分配,但是实际上最终⽤了多少,是根据具体的数据来确定。
Varchar(L): L表⽰字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存储的实际长度Varchar(10): 的确存了10个汉字,UTF8环境,10*3+1=31存储了3个汉字,UTF8环境,3*3+1=10(bytes)定长与变长的存储实际空间(UTF8)存储实际空间Char(4)Varchar(4)Char占⽤字节Varchar占⽤字节ABCD ABCD ABCD4*3=124*3+1=13A A A4*3=121*3+1=4ABCDE××数据超过长度数据超过长度如何选择定长或者是变长字符串呢?定长的磁盘空间⽐较浪费,但是效率⾼:如果数据基本上确定长度都⼀样,就是使⽤定长,如:⾝份证,电话号码,⼿机号码等变长的磁盘空间⽐较节省,但是效率低:如果数据不能确定长度(不同数据有变化),如姓名、地址等。
1.3 ⽂本字符串如果数据量⾮常⼤,通常说超过255个字符就会使⽤⽂本字符串⽂本字符串根据存储的格式进⾏分类:text和blobText: 存储⽂字(⼆进制数据实际上都是存储路径)Blob: 存储⼆进制数据(通常不⽤)1.4 枚举字符串枚举定义:enum,事先将所有可能出现的结果都设计好,实际上存储的数据都必须是规定好的数据中的⼀个。
枚举的使⽤⽅式定义:enum(可能出现的元素列表); //如 enum(‘男’,‘⼥’,‘不男不⼥’,‘妖’,‘保密’);使⽤:存储数据,只能存储上⾯定义好的数据(a) 创建枚举表1CREATE TABLE my_enum(gender enum('男','⼥','保密')) charset utf8;(b)加⼊数据作⽤之⼀:规范数据格式;数据只能是规定的数据的其中⼀个1insert into my_enum values('男'),('保密'); --有效数据2insert into my_enum values('male'); --错误数据(没有male元素)(b)作⽤之⼆:节省存储空间(枚举通常有⼀个别名:单选框):枚举实际存储的是数值⽽不是字符串本⾝。
MySQL数据类型详解及使用方法
MySQL数据类型详解及使用方法MySQL是一种广泛使用的关系型数据库管理系统,被广泛应用于各种规模的企业和个人项目中。
在MySQL中,数据类型是一项关键的概念,用于定义数据库表中的字段类型以及数据的存储方式。
本文将详细介绍MySQL中常用的数据类型及其使用方法,帮助读者更好地理解和运用MySQL。
一、字符型数据类型1. CHAR:CHAR数据类型用于存储固定长度的字符,最多可存储255个字符。
例如,可以使用CHAR(10)来存储一个固定长度为10个字符的字符串。
需要注意的是,如果实际存储的字符数少于指定的长度,MySQL会在末尾填充空格字符。
2. VARCHAR:VARCHAR数据类型用于存储可变长度的字符串,最多可存储65535个字符。
与CHAR不同,VARCHAR只会存储实际使用的字符数,不会占据固定的空间。
例如,可以使用VARCHAR(50)来存储最多长度为50的字符串。
3. TEXT:TEXT数据类型适用于存储大量文本数据,最多可存储65535个字符。
相比于VARCHAR,TEXT类型没有长度限制,适用于存储较长的文本数据,如文章内容或日志记录。
二、数值型数据类型1. INT:INT数据类型用于存储整数,范围为-2147483648到2147483647。
可以使用INT(11)来指定显示宽度,但实际存储的位数不受影响。
2. FLOAT:FLOAT数据类型用于存储单精度浮点数,适用于存储较小的浮点数。
可以使用FLOAT(p,d)来指定显示宽度和小数点位数,其中p表示总位数,d表示小数点后的位数。
3. DOUBLE:DOUBLE数据类型用于存储双精度浮点数,适用于存储较大的浮点数。
与FLOAT类似,可以使用DOUBLE(p,d)来指定显示宽度和小数点位数。
三、日期和时间型数据类型1. DATE:DATE数据类型用于存储日期,格式为YYYY-MM-DD。
例如,可以使用DATE来存储生日或注册日期等信息。
Mysql数据类型(字段)介绍
MySql数据库的列类型(字段类型)MySQL数据库的表是一个二维表,由一个或多个数据列构成。
每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。
MySQL中的列类型有三种:数值类、字符串类和日期/时间类。
从大类来看列类型和数值类型一样,都是只有三种。
但每种列类型都还可细分。
下面对各种列类型进行详细介绍。
数值类的数据列类型数值型的列类型包括整型和浮点型两大类。
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38 DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。
整型数据列类型MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。
它们之间的区别是取值范围不同,存储空间也各不相同。
在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。
MySQL数据类型-decimal详解
MySQL数据类型-decimal详解1.⾸先,对于精度⽐较⾼的东西,⽐如money,我会⽤decimal类型,不会考虑float,double,因为他们容易产⽣误差,numeric和decimal同义,numeric将⾃动转成decimal。
DECIMAL从MySQL 5.1引⼊,列的声明语法是DECIMAL(M,D)。
在MySQL 5.1中,参量的取值范围如下:·M是数字的最⼤数(精度)。
其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。
·D是⼩数点右侧数字的数⽬(标度)。
其范围是0~30,但不得超过M。
说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。
如DECIMAL(5,2) 的最⼤值为9 9 9 9 . 9 9,因为有7 个字节可⽤。
M 与D 对DECIMAL(M, D) 取值范围的影响类型说明取值范围(MySQL < 3.23)取值范围(MySQL >= 3.23)MySQL < 3.23 MySQL >=3.23DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9DECIMAL(5,1) -99.9 到 999.9 -9999.9 到 99999.9DECIMAL(6,1) -999.9 到 9999.9 -99999.9 到 999999.9DECIMAL(6,2) -99.99 到 999.99 -9999.99 到 99999.99DECIMAL(6,3) -9.999 到 99.999 -999.999 到 9999.999# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。
结论:当数值在其取值范围之内,⼩数位多了,则直接截断⼩数位。
mysql数据库的number类型
mysql数据库的number类型全文共四篇示例,供读者参考第一篇示例:MySQL数据库的Number类型是一种非常常用的数据类型,它用来存储数值型数据,包括整数和小数。
在实际的数据库设计和开发中,我们经常会用到Number类型来存储各种数字数据,比如订单金额、产品价格、数量等等。
在本文中,我们将详细介绍MySQL数据库中的Number类型,包括其各种子类型和用法。
MySQL数据库中的Number类型主要包括两种子类型,即整数型和浮点型。
整数型包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,分别用来存储不同范围的整数数据。
浮点型包括FLOAT和DOUBLE,用来存储小数数据。
下面我们将分别介绍这些Number类型的特点和用法。
1. TINYINTTINYINT类型用来存储小范围的整数数据,取值范围为-128到127。
TINYINT类型占用1个字节的存储空间,适用于存储性别、状态等只有两个取值的数据。
6. FLOATFLOAT类型用来存储单精度浮点数,即小数数据。
FLOAT类型占用4个字节的存储空间,可以存储6-7位的有效数字,适用于存储科学计算、工程测量等领域的数据。
第二篇示例:MySQL数据库中的number类型主要用于存储数值型数据,包括整型和浮点型两种。
整型数据包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,而浮点型数据包括FLOAT和DOUBLE。
在数据库表的设计中,合理地选择number类型可以提高数据库的性能和数据存储效率。
让我们来了解一下MySQL数据库中number类型的具体描述和用法。
1. TINYINT:TINYINT类型用于存储非常小的整数数据,范围在-128到127之间。
它占用1个字节的存储空间,适用于存储布尔类型数据或者只需要记录小整数的场景。
6. FLOAT:FLOAT类型用于存储单精度浮点数数据,范围在-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38之间。
Mysql中的数据类型
ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在ENUM列表中列出最大65535个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM('X','Y','Z')
TINYTEXT 存放最大长度为255个字符的字符串。
TEXT 存放最大长度为65,535个字符的字符串。
BLOB 用于BLOBs (Binary Large OBjects) 。存放最多65,535 字节的数据。
数据类型 描述
TINYINT(size) -128 到127 常规。0到255 无符号*。在括号中规定最大位数。
SMALLINT(size) -32768 到32767 常规。0 到65535 无符号*。在括号中规定最大位数。
DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在d参数中规定小数点右侧的最大位数。
DECIMAL(size,d) 作为字符串存储的DOUBLE类型,允许固定的小数点。
Date 类型: (*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD 。)
MEDIUMINT(size) -8388608 到8388607 普通。0 to 16777215 无符号*。在括号中规定最大位 数。
php数据库,mysql字段类型,字段属性详解
本文由lchengm贡献 doc1。
MySQL 字段类型详解 MySQL 提 供 了 整 数 和 浮 点 数 的 数 值 类 型 。
可 根 据 所 要 表 示 的 值 的 范 围 选 择 相 应 的 类 型 。
对 于 整 数 类 型 , 如 果 指 定 了 AUTO_INCREMENT 属 性 , 则 列 必 须 为 PRIMARY KEY 或 UNIQUE 索 引 。
将 NULL 插 入 AUTO_INCREMENT 列 将 会 插 入 一 个 大 于 该 列 中 当 前 最 大 值 的 值 。
如 果 指 定 了 UNSIGNED 属 性 , 则 相 应 的 整 数 类 型 不 允 许 取 负 值 。
如 果 指 定 了 ZEROFILL 属 性 , 则 用 前 导 零 填 充 数 值 类 型 值 以 达 到 列 的 显 示 宽 度 。
1. TINYINT[(M)] 说明:非常小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 128 到 127( - 27 到 27- 1) 或 者 如 果 为 U N S I G N E D, 则 0 到 2 5 5 , ( 0 到 2 8-1) 缺 省 值 : 如 果 列 可 为 NULL; 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:1 字节 2. SMALLINT[(M)] 说明:小整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 32768 到 3 27 6 7( - 215 到 215- 1) 或 者 如 果 为 U N S I G N E D, 则 , 0 到 6 5 5 3 5( 0 到 216- 1) 缺 省 值 : 如 果 列 可 为 NULL; 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:2 字节 3. MEDIUMINT[(M)] 说明:中等大小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : -8388608 到 8 3 8 8 6 07( - 22 3 到 22 3- 1) 或 者 如 果 为 U N S I G N E , D, 则 0 到 16 7 7 2 15( 0 到 22 4- 1) 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:4 字节 4. INT[(M)] 说明:标准大小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 2147483648 到 2 14 7 4 8 3 6 4 7( - 231 到 2 3 1- 1) 或 者 如 果 为 U N , S I G N E D, 则 0 到 4 2 9 4 9 6 7 2 9 5( 0 到 2 3 2- 1) 缺 省 值 : 如 果 列 为 NULL, 则 为 NULL; 如 果 列 为 NOT FULL, 则 为 0 存储需求:4 字节 同 义 词 : I N T E G E R [(M)] 5. BIGINT[(M)] 说明:大整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 9223372036854775808 到 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07( - 263 到 2 6 3- 1) 或 者 如 果 为 U N S I G N E D, 则 0 到 18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 , 15( 0 到 26 4 -1) 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:8 字节 6. FLOAT [(M, D)] 说 明 : 小 浮 点 数 ; 单 精 度 ( 精 度 小 于 D O U B L E) 允许的属性:Z E R O F I L L 取 值 范 围 : 最 小 非 零 值 为 ±1.75494351E -38; 最 大 非 零 值 为 ±3 . 4 0 2 8 2 3 4 6 6 E + 3 8 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:4 字节 同 义 词 : MySQL3.23 版 以 前 , FLOAT(4) 为 具 有 缺 省 M 和 D 值 的 FLOAT 的 同 义 词 。
mysql 小数点后两位数据类型
mysql 小数点后两位数据类型MySQL中小数点后两位的数据类型是DECIMAL。
DECIMAL是一种精确数值类型,用于存储固定精度的小数。
DECIMAL数据类型可以存储可变长度的小数,根据指定的精度和小数位数来确定其存储的范围。
它可以用来存储任意大小的小数,而不会丢失精度。
在MySQL中,DECIMAL的语法如下:DECIMAL(p, s)其中,p表示精度,即允许的总位数,s表示小数位数。
p的值可以在1-65之间,s的值可以在0-p之间。
DECIMAL数据类型具有以下特点:1. 精度控制:使用DECIMAL数据类型可以精确地表示小数,避免了浮点数运算中可能出现的精度丢失问题。
这一特点使得DECIMAL在金融和科学计算等领域得到广泛应用。
2. 存储空间:DECIMAL数据类型的存储空间是固定的,与数字的精度无关。
对于每个DECIMAL列,MySQL会根据精度的大小来分配存储空间。
因此,在设计数据库时,需要根据需求选择合适的精度,以兼顾存储空间和计算精度的平衡。
3. 运算性能:DECIMAL数据类型的运算性能相对较低,比浮点数类型的运算速度慢。
这是因为DECIMAL数据类型的运算需要进行精确的数值计算,而浮点数类型可以通过近似计算来提高运算速度。
因此,在进行大量数值计算的场景中,需要考虑使用浮点数类型来提高运算效率。
在实际的数据库设计和开发中,使用DECIMAL数据类型需注意以下几点:1. 精度和小数位数的选择:需要根据具体业务需求和数据特点来选择合适的精度和小数位数。
过高或过低的精度会导致不必要的空间浪费或精度丢失。
2. 数据计算的准确性:使用DECIMAL数据类型可以确保计算结果的准确性,避免了浮点数计算可能带来的误差。
尤其在涉及金额和财务数据的计算中,DECIMAL是首选的数据类型。
3. 存储空间的优化:尽量避免过度使用DECIMAL数据类型,以减少数据库的存储空间。
对于不需要精确到小数点后两位的数据,可以考虑使用其他数据类型,如整数类型或浮点数类型。
MySQL数据库的数据类型和字段属性详解
MySQL数据库的数据类型和字段属性详解引言MySQL是一种非常流行和常用的关系型数据库管理系统,广泛应用于各种网站和应用程序中。
在使用MySQL进行数据库设计和开发时,数据类型和字段属性的选择非常重要,它们直接影响着数据库的性能和数据的完整性。
本文将详细介绍MySQL数据库中常用的数据类型和字段属性,以便读者能够更好地理解和应用它们。
一、数值类型1. 整型(INT)整型是MySQL中最基本和常用的数据类型之一。
在MySQL中,整型包括int、tinyint、smallint、mediumint和bigint五种。
它们的区别在于存储范围和占用空间的大小。
例如,int类型的范围是-2147483648到2147483647,占用空间为4字节。
2. 浮点型(FLOAT和DOUBLE)浮点型用于存储小数,包括单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)。
FLOAT类型占用4字节,DOUBLE类型占用8字节。
浮点型能够存储非常大和非常小的数字,但是在精度上有一定的限制。
3. 定点类型(DECIMAL)定点类型用于存储精确的小数,其精度和范围可以由用户自定义。
DECIMAL类型在数据库中的存储是以字符串形式存储的,它具有较高的精度和较小的存储空间。
二、字符串类型1. 字符型(CHAR和VARCHAR)字符型用于存储字符串,包括固定长度的字符类型(CHAR)和可变长度的字符类型(VARCHAR)。
CHAR类型在数据库中占用固定的空间,而VARCHAR 类型根据存储的内容变化而变化。
CHAR类型在存储短字符串时效率较高,而VARCHAR类型适用于存储可变长度的内容。
2. 文本型(TEXT)文本型用于存储较长的字符串,其分为四种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
它们分别用于存储不同长度的文本内容,MEDIUMTEXT类型可以存储最大长度为16MB的文本。
三、日期和时间类型1. 日期类型(DATE)日期类型用于存储日期,包括年、月、日。
