mysql数据类型分析总结

MySQL数据类型

  1. 数值值

数值是诸如48或193.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语句创建一个表时,要为每列指定一个类型。列的类型比数据类型更为特殊,它仅仅是如“数”或“串”这样的通用类型。列的类型精确地描述了给定表列可能包含的值的种类,如SMALLINT或VARCHAR(32)。

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

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

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

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

■此类型是否允许NULL值。

■此类型是否可以索引。

数值列类型

TINYINT非常小的整数

SMALLINT较小整数

MEDIUMINT中等大小的整数

INT标准整数

BIGINT大整数

FLOAT单精度浮点数

DOUBLE双精度浮点数

DECIMAL一个串的浮点数

数值列类型的取值范围

TINYINT[(M)]

有符号值:-128到127(-2^7到2^7-1)

无符号值:0到255(0到2^8-1)

SMALLINT[(M)]

有符号值:-32768到32767(-2^15到2^15-1)

无符号值:0到65535(0到2^16-1)

MEDIUMINT[(M)]

有符号值:-8388608到8388607(-2^23到2^23-1)

无符号值:0到16777215(0到2^24-1)

INT[(M)]

有符号值:-2147683648到2147683647(-2^31到2^31-1)

无符号值:0到4294967295(0到2^32-1)

BIGINT[(M)]

有符号值:-9223372036854775808到9223373036854775807(-2^63到2^63-1)

无符号值:0到18446744073709551615(0到2^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)可变;其值的范围依赖于M和D

数值列类型的存储需求

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字节(MySQL33.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(二进制大对象)

BLOB小BLOB

MEDIUMBLOB中等的BLOB

LONGBLOB大BLOB

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个成员1或2字节

SET(“value1”,“value2”,...)64个成员1、2、3、4或8字节

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

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

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

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

可对CHAR和VARCHAR类型指定BINARY属性使列值作为二进制串处理(即,在比较和排序操作区分大小写)。可对任何串类型指定通用属性NULL和NOTNULL。如果两者都不指定,缺省值为NULL。但是定义某个串列为NOTNULL并不阻止其取空串。空值不同于遗漏的值,因此,不要错误地认为可以通过定义NOTNULL来强制某个串列只包含非空的值。还可以对除BLOB和TEXT类型外的所有串列类型用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 列赋值时也会自动设置该列的值为当前的日期和时间。

时间: 2024-10-19 13:38:29

mysql数据类型分析总结的相关文章

mysql数据类型分析

CHAR, VARCHAR, TEXT CHAR 定长字符串,占用空间大,速度快 VARCHAR 变长字符串,占用空间小,速度慢 CHAR后面的空格会被去掉,VARCHAR不会去掉 TEXT 不能有默认值 数据检索的效率   CHAR > VARCHAR > TEXT ENUM() 枚举的每一个元素都有一个序号 自动去掉元素后面的空格 插入数据时value必须是枚举中的一个,除了NULL 只能从列表中选取一个值 SET() 可以从列表中选取多个值,多个值之间用逗号分隔 以二进制数值保存在表中

[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】

你看到的这个文章来自于http://www.cnblogs.com/ayanmw 转载自:http://blog.csdn.net/daydreamingboy/article/details/6310907 分析MySQL数据类型的长度 MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length).VARCHAR(Length).TINYINT(Length).SMALLINT(Length).MEDIUMINT(Length).INT(Length).BIGINT(L

MySQL数据类型及sql模型

MySQL数据类型及sql模型 存储引擎,也被称为表类型: MyISAM表: 无事务,表锁     .frm: 表结构定义文件     .MYD: 表数据     .MYI: 索引 InnoDB表:事务,行锁     .frm: 表结构     .ibd: 表空间(数据和索引)     所有表共享一个表空间文件:     建议:每表一个独立的表空间文件:(修改配置文件在[mysqld]项下加入innodb_file_per_table = 1) MySQL:      在默认的mysql数据库中

Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用

MySQL 存储引擎,也被称为表类型:    MyISAM表:无事务处理功能,支持表锁 .frm:表结构定义文件 .MYD:表数据文件 .MYI:表索引文件 InnoDB表:支持事务处理功能,支持行锁 .frm:表结构定义文件 .ibd:表空间(包含数据和索引文件) MySQL常用的查询命令: SHOW ENGINES;  #查看数据库支持的引擎及状态. SHOW TABLE STATUS LIKE 'user' \G  #查看表user的属性信息,\G竖排显示 mysqld --help --

MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解

1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY     JdbcType BIGINT   BIGINT JdbcType BINARY     JdbcType BIT   BIT JdbcType BLOB BLOB BLOB JdbcType BOOLEAN     JdbcType CHAR CHAR CHAR JdbcType CLOB CLOB CLOB–>修改

MySQL性能分析之explain

mysql性能分析之explain Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句. Explain语法:explain select … from … [where …] 例如:explain select * from news; 输出:+--+-----------+-----+----+-------------+---+----

(转)mysql数据类型

1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为

MySQL 数据类型(转)

MySQL 数据类型 在 MySQL 中,有三种主要的类型:文本.数字和日期/时间类型. Text 类型: 数据类型 描述 备注 CHAR(size) 保存固定长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的长度.最多 255 个字符.   VARCHAR(size) 保存可变长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的最大长度.最多 255 个字符. 注释:如果值的长度大于 255,则被转换为 TEXT 类型.   TINYTEXT 存放最大长度为 25

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长