• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql数据类型分析小结_mysql

mysql 搞代码 7年前 (2018-06-08) 170次浏览 已收录 0个评论

mysql数据类型分析总结

MySQL数据类型

  1. 数值值

数值是诸如48193.62这样的值。MySQL支持说明为整数(无小数部分)或浮点数
(有小数部分)的值。整数可按十进制形式或十六进制形式表示。

  1. (字符)串值

串是诸如“Madison,Wisconsin”或“patientshowsimprovement”这样的值。既可用单引号也可用双引号将串值括起来。


序列说明

/0NUL(ASCII0) /n新行
/’
单引号 /r回车
/”
双引号 /t制表符
/b
退格 //反斜杠

  1. 日期和时间值

日期和时间是一些诸如“1999-06-17”或“12:30:43”这样的值。MySQL还支持日期/时间的组合,如“1999-06-1712:30:43”。要特别注意这样一个事实,即MySQL是按年日的顺序表示日期的。MySQL的初学者通常对这一点很惊奇,其实这是ANSISQL的标准格式。可以利用DATE_FORMAT()函数以任意形式显示日期值,但是缺省显示格式首先显示年,而且输入值也必须首先给出年。

  1. NULL

NULL是一种“无类型”的值。它过去惯常表示的意思是“无值”、“未知值”、“丢失的值”、“溢出值”以及“没有上述值”等。可将NULL值插入表中、从表中检索它们,测试某个值是否是NULL,但不能对NULL值进行算术运算(如果对NULL进行算术运算,其结果为NULL)。

MySQL的列类型

数据库中的每个表都是由一个或多个列构成的。在用CREATETABLE语句创建一个表时,要为每列指定一个类型。列的类型比数据类型更为特殊,它仅仅是如“数”或“串”这样的通用类型。列的类型精确地描述了给定表列可能包含的值的种类,如SMALLINTVARCHAR(32)

MySQL的列类型是一种手段,通过这种手段可以描述一个表列包含什么类型的值,这又决定了MySQL怎样处理这些值。例如,数值值既可用数值也可用串的列类型来存放,但是根据存放这些值的类型,MySQL对它们的处理将会有些不同。每种列类型都有几个特性如下:

其中可以存放什么类型的值。

值要占据多少空间,以及该值是否是定长的(所有值占相同数量的空间)或可变长的(所占空间量依赖于所存储的值)。

该类型的值怎样比较和存储。

此类型是否允许NULL值。

此类型是否可以索引。

数值列类型

TINYINT非常小的整数

SMALLINT较小整数

MEDIUMINT中等大小的整数

INT标准整数

BIGINT大整数

FLOAT单精度浮点数

DOUBLE双精度浮点数

DECIMAL一个串的浮点数

数值列类型的取值范围

TINYINT[(M)]

有符号值:-128127-2^72^7-1

无符号值:025502^8-1

SMALLINT[(M)]

有符号值:-3276832767-2^152^15-1

无符号值:06553502^16-1

MEDIUMINT[(M)]

有符号值:-83886088388607-2^232^23-1

无符号值:01677721502^24-1

INT[(M)]

有符号值:-21476836482147683647-2^312^31-1

无符号值:0429496729502^32-1

BIGINT[(M)]

有符号值:-92233720368547758089223373036854775807-2^632^63-1

无符号值:01844674407370955161502^64-1

FLOAT[(M,D)],最小非零值:±1.175494351E-38

FLOAT(4)最大非零值:±3.402823466E+38

DOUBLE[(M,D)],最小非零值:±2.2250738585072014E-308

FLOAT(8)最大非零值:±1.7976931348623157E+308

DECIMAL(M,D)可变;其值的范围依赖于MD


数值列类型的存储需求

TINYINT[(M)]1字节

SMALLINT[(M)]2字节

MEDIUMINT[(M)]3字节

INT[(M)]4字节

BIGINT[(M)]8字节

FLOAT[(M,D)],FLOAT(4)4字节

DOUBLE[(M,D)],FLOAT(8)8字节

DECIMAL(M,D)M字节(MySQL<3.23),M+2字节(MySQL³3.23

可对所有数值类型指定ZEROFILL属性。它使相应列的显示值用前导零来填充,以达到显示宽度。

AUTO_INCREMENT。在需要产生唯一标识符或顺序值时,可利用AUTO_INCREMENT属性。AUTO_INCREMENT值一般从1开始,每行增加1。在插入NULL到一个AUTO_INCREMENT列时,MySQL插入一个比该列中当前最大值大1的值。一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT的列,应该定义为NOTNULL并定义为PRIMARYKEY或定义为UNIQUE键。

UNSIGNED。此属性禁用负值。将列定义为UNSIGNED并不改变其基本数据类型的取值范围,它只是前移了取值的范围。设为UNSIGNED,则可取原双倍的值。

串列类型

CHAR定长字符串

VARCHAR可变长字符串

TINYBLOB非常小的BLOB(二进制大对象)

BLOBBLOB

MEDIUMBLOB中等的BLOB

LONGBLOBBLOB

TINYTEXT非常小的文本串

TEXT小文本串

MEDIUMTEXT中等文本串

LONGTEXT大文本串

ENUM枚举;列可赋予某个枚举成员

SET集合;列可赋予多个集合成员

串列类型

类型说明 最大尺寸 存储需求

CHAR(M) M字节 M字节

VARCHAR(M) M字节 L+1字节

TINYBLOB,TINYTEXT 2^8-1字节 L+1字节

BLOB,TEXT 2^16-1字节 L+2字节

MEDIUMBLOB,MEDIUMTEXT 2^24-1字节 L+3字节

LONGBLOB,LONGTEXT 2^32-1字节 L+4字节

ENUM(“value1”,“value2”,…)65535个成员12字节

SET(“value1”,“value2”,…)64个成员12348字节

串实际是一种“通用”类型,因为可用它们来表示任意值。例如,可用串类型来存储二进制数据,如影像或声音,或者存储gzip的输出结果,即存储压缩数据。

CHARVARCHAR是最常使用的串类型。它们是有差异的,CHAR是定长类型而VARCHAR是可变长类型。CHAR(M)列中的每个值占M个字节;短于M个字节的值存储时在右边加空格(但右边的空格在检索时去掉)。如果所需的值在长度上变化不大,则CHAR是一种比VARCHAR好的选择,因为处理行长度固定的表比处理行长度可变的表的效率更高。

BLOB是一个二进制大对象,是一个可以存储大量数据的容器,可以使其任意大。在MySQL中,BLOB类型实际是一个类型系列(TINYBLOBBLOBMEDIUMBLOBLONGBLOB),除了在可以存储的最大信息量上不同外,它们是等同的。MySQL还有一个TEXT类型系列(TINYTEXTTEXTMEDIUMTEXTLONGTEXT)。除了用于比较和排序外,它们在各个方面都与相应的BLOB类型等同,BLOB值是区分大小写的,而TEXT值不区分大小写。BLOBTEXT列对于存储可能有很大增长的值或各行大小有很大变化的值很有用,例如,字处理文档、图像和声音、混合数据以及新闻文章等等。

ENUMSET是一种特殊的串类型,其列值必须从一个固定的串集中选择。它们之间的主要差别是ENUM列值必须确实是值集中的一个成员,而SET列值可以包括集合中任意或所有的成员。换句话说,ENUM用于互相排斥的值,而SET列可以从一个值的列表中选择多个值。可对ENUM成员按名或者按编号进行运算,SET列的数值表示与ENUM列的表示有所不同,集合成员不是顺序编号的。每个成员对应SET值中的一个二进制位。第一个集合成员对应于0位,第二个成员对应于1位,如此等等。

可对CHARVARCHAR类型指定BINARY属性使列值作为二进制串处理(即,在比较和排序操作区分大小写)。可对任何串类型指定通用属性NULLNOTNULL。如果两者都不指定,缺省值为NULL。但是定义某个串列为NOTNULL并不阻止其取空串。空值不同于遗漏的值,因此,不要错误地认为可以通过定义NOTNULL来强制某个串列只包含非空的值。还可以对除BLOBTEXT类型外的所有串列类型用DEFAULT属性指定一个缺省值。如果不指定缺省值,MySQL会自动选择一个。对于可以包含NULL的列,其缺省值为NULL。对于不能包含NULL的列,除ENUM列外都为空串,在ENUM列中,缺省值为第一个枚举成员。

日期与时间列类型

DATE“YYYY-MM-DD”格式表示的日期值

TIME“hh:mm:ss”格式表示的时间值

DATETIME“YYYY-MM-DDhh:mm:ss”格式

TIMESTAMP“YYYYMMDDhhmmss”格式表示的时间戳值

YEAR“YYYY”格式的年份值

日期和时间列类型

DAT E “ 1000 – 01 – 01 ”到“ 9999- 12 – 31 ”

TI M E “ – 838:59:59”到“83 8 : 5 9 : 5 9”

DAT E T I M E “ 1000 – 01 – 01 00:00:00” 到“ 9999- 12 – 31 23:59:59”

TI M E S TA M P [ (M) ] 19700101000000 2037年的某个时刻

YE A R [ (M) ] 1901 21 5 5

TIMESTAMP显示格式

TI M E S TA M P ( 1 4 ) Y Y Y Y M M D D h h m m s s

TI M E S TA M P ( 1 2 ) Y Y Y Y M M D D h h m m

TI M E S TA M P ( 1 0 ) Y Y M M D D h h m m

TI M E S TA M P ( 8 ) Y Y Y Y M M D D

TI M E S TA M P ( 6 ) Y Y M M D D

TI M E S TA M P ( 4 ) Y Y M M

TI M E S TA M P ( 2 ) Y Y

日期和时间列类型的存储需求

DAT E 3 字节

TI M E 3 字节

DAT E T I M E 8 字节

TI M E S TA M P 4 字节

YE A R 1 字节

如果将DATE 值赋给DATETIME 列,MySQL会自动地追加一个为“00 : 0 0 : 0 0”的时间部分。TI M E S TAMP 类型之所以得到这样的名称是因为它在创建或修改某个记录时,有特殊的记录作用。如果在一个TI M E S TAMP 列中插入NU L L,则该列值将自动设置为当前的日期和时间。在建立或更新一行但不明确给TI M E S TAMP 列赋值时也会自动设置该列的值为当前的日期和时间。

欢迎大家阅读mysql数据类型分析小结_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql数据类型分析小结_mysql
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址