MySQL之数据类型

这篇文章可谓是“工具人”篇,数据类型每一个不可能都记住,用时or记忆模糊再来查询。

SQL常用数据类型

1、字符型数据

  字符型数据是数据库中最常用的数据类型之一,有时人们
将其称为字符串。字符型数据可由以下几类符号组成。

  • 字母: 小写字母a~z与大写字母A~Z共52个
  • 数字: 0~9共10个
  • 空白符: 空格符、制表符、换行符等统称为空白符
  • 标点、特殊字符与汉字:在数据表中允许存储标点、特殊字符与汉字

注:在SQL语言中,字符型数据被放在一对单引号(’ ‘)中,用于区别其他类型的数据。每个字符型数据都有长度,其长度是该字符型数据的字符个数,例如,’ home ‘的长度为4,’ 047122813810 '的长度为12等。
需要注意的是,每个汉字占两个字符的位置,例如,'张三’的长度是4,而不是2。


2、数字型数据

  数字型数据就是通常所说的数字,它可以由0~9之间的数字、正负符号与小数点(.)组成。例如,100、23.234、-123、-58.42等都是数字型数据。

  • 数字型数据不允许放在任何定界符之内。数字型数据除了上述形式以外,有时也可以用浮点形式的科学记数法表示。例如,3.46E+03等。
  • 在具体的数据库系统中,数字型数据又被详细分为整数型数据、浮点型数据和货币型数据等。
  • 数字型数据与字符型数据一样也有长度。例如,100的长度为3,23.234的长度为6(数字型数据长度包含小数点),-123的长度为3等。

3、日期时间数据

  SQL中还有一种日期时间数据。例如,2018-11-11 12:25:30、2018年9月15日、01/JAN/2018、22:30:10等。


4、二进制数据

  在计算机中所有数据都被保存为二进制数据,如前面介绍的字符型数据、数字型数据和日期时间数据等,其实在计算机中都是以二进制数据的形式存放的。
  这里所说的二进制数据则是专指用来表示图形图像、视频动画和其他类型的文件等等。当前流行的所有数据库系统都支持二进制数据。例如,在SQL Server 中提供了IMAGE数据类型,通常用于存放图片,在MySQL中提供了BLOB和LONGBLOB数据类型,用来存放 BLOBs数据等。


5、自定义数据类型

  除了数据库系统提供的数据类型以外,用户还可以根据自己的需要自定义数据类型。SQL中的CREATE TYPE就是用于自定义数据类型的语句。
  不过遗憾的是,并非全部的数据库系统都支持CREATE TYPE语句,例如,SQL Server 2000中就不可以使用CREATE TYPE语句定义用户数据类型,从SQL Server 2008开始支持该语句。



MySQL中的数据类型

  MySQL支持所有标准SQL数值数据类型。包括整数类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及小数类型(FLOAT、REAL和DOUBLE PRECISION)。作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。除了数值数据类型,MySQL还支持字符串类型、日期和时间类型、复合类型几大类,下面分别介绍这些数据类型。

1、数值类型
  • TINYINT类型:可以存放-128~127之间的所有正负整数。该类型的数据,在内存中占用1个字节的空间,即使用8位二进制数表示,其中的1 位二进制数表示整数值的正负号,其他7位表示整数值的长度和大小。
  • TINYINT UNSIGNED类型:无符号的TINYINT类型,可以存放0~255之间的所有整数。该类型的数据也只占用内存中的1个字节。
  • SMALLINT类型:用于保存-32768~32767之间的所有正负整数。该类型的数据,在内存中占用2个字节的空间
  • SMALLINT UNSIGNED类型:无符号的SMALLINT类型,可以存放从0~65535之间的所有整数。该类型的数据,在内存中占用2个字节的空间
  • MEDIUMINT类型:用于存储-8388608~8388607之间的所有正负整数。该类型的数据,在内存中占用3个字节的空间。
  • MEDIUMINT UNSIGNED类型:无符号的MEDIUMINT类型,用于存放0~16777215之间的所有整数。该类型的数据,在内存中占用3个字节的空间。
  • INT 或 INTEGER类型:用于存放-2147483648~2147483647之间的所有正负整数。该类型的数据,在内存中占用4个字节的空间。
  • INT UNSIGNED 或 INTEGER UNSIGNED类型:无符号的INT 或 INTEGER类型,用于存放0~4294967295之间的所有整数。该类型的数据,在内存中占用4个字节的空间。
  • BIGINT类型:用于存放-9223372036854775808~9223372036854775807之间的所有正负整数。该类型的数据,在内存中占用8个字节的空间。
  • BIGINT UNSIGNED类型:无符号的BIGINT,可以存放0~18446744073709551615之间的所有整数。该类型的数据,在内存中占用8个字节的空间。
  • FLOAT类型:用于存放数据范围为-3.402823466E+38 ~ -1.175494351E-38,0,1.175494351E-38~3.402823466E+38之间的浮点数。该类型的数据,在内存中占用4个字节的空间。
  • DOUBLE或DOUBLE PRECISION或REAL类型:用于存放数据范围为-1.7976931348623157E+308~-2.2250738585072014E-308,0,2.2250738585072014E-308~1.7976931348623157E+308之间的浮点数。该类型的数据,在内存中占用8个字节的空间。
  • DECIMAL[(M,[D])] 或 NUMERIC(M,D)类型:由M(整个数字的长度,包括小数点,小数点左边的位数,小数点右边的位数,但不包括负号)和D(小数点右边的位数)决定的数字数据类型,M默认为10,D默认为0。

2、字符串类型
  • CHAR(M) [BINARY] 或 NCHAR(M) [BINARY]类型:用于保存定长的字符串,其中,M表示字符串的最大长度,其范围为1~255,字符串中的每个字符占用1个字节的存储空间。默认BINARY项,则表示不分大小写字母。NCHAR表示使用默认的字符集。当输入的字符串个数小于M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。
  • [NATIONAL] VARCHAR(M) [BINARY]类型:用于存放变长的字符串,占用的存储空间范围为0~255字节,M的取值范围为1 – 255。如果没有BINARY项,默认BINARY项,则表示不分大小写字母。当输入的字符串个数小于M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。
  • TINYBLOB 类型:用于保存不超过255个字符的二进制字符串,所占用的存储空间范围为0~255字节。
  • TINYTEXT类型:用于存储短文字符串,所占用的存储空间范围为0~255字节。
  • BLOB类型:用于存储二进制的长文本数据,所占用的存储空间范围为0~65535字节。
  • TEXT类型:用于存储长文本数据,所占用的存储空间范围为0~65535字节。
  • MEDIUMBLOB类型:用于存储二进制形式的中等长度的长文本数据,所占用的存储空间范围为0~16777215字节。
  • MEDIUMTEXT类型:用于存储中等长度的长文本数据,所占用的存储空间范围为0~16777215字节。
  • LONGBLOB类型:用于保存二进制形式的极大长度的长文本数据,所占用的存储空间范围为0~4294967295字节。
  • LONGTEXT类型:用于保存极大长度的长文本数据,所占用的存储空间范围为0~4294967295字节。

3、日期与时间类型
  • DATE类型:用于存储日期数据,日期数据的范围为1000-01-01至9999-12-31。每个DATE类型的数据占用3字节的存储空间,其输入格式为“年-月-日(YYYY-MM-DD)”。
  • DATETIME类型:用于存储混合日期和时间数据,日期和时间数据的范围为1000-01-01 00:00:00至9999-12-31 23:59:59。每个DATETIME类型的数据占用8字节的存储空间,其输入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”。
  • TIME类型:用于存储时间数据或持续时间的数据,时间数据的范围为-838:59:59′至 838:59:59′。每个TIME类型的数据占用3字节的存储空间,其输入格式为“时-分-秒(HH:MM:SS)”。
  • YEAR类型:用于存储年份数据,年份的取值范围为1901至2155。每个YEAR类型的数据占用1字节的存储空间,其输入格式为“年(YYYY)”。
  • TIMESTAMP类型:用于存储混合日期和时间值、时间戳,混合日期和时间数据、时间戳的范围为1970-01-01 00:00:00 - 2037年的某个时候。每个TIMESTAMP类型的数据占用8字节的存储空间,其输入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”。

4、复合类型
  • ENUM(‘value1’,‘value2’,…)类型:用于存储从预先定义的字符集合中选取互斥的数据值,可以有65535个不同的值。
  • SET(‘value1’,‘value2’,…)类型:用于存储从预先定义的字符集合中选取任意数目的值,最多有64个成员。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值