MYSQL的数据类型详解

mysql的数据类型

在mysql数据库当中,每一个库都是有多张表来组成的,每一个表都是由行和列来组成的。

所谓建表就是声明列的过程,数据是以文件的形式保存在系统上的。因此,不同的列类型,占用的空间不一样。

选列的原则:够用又不浪费即可

 

在选择数据类型时考虑如下因素:

1、占据空间

2、储存范围

 

在声明列的时候,为什么要声明某个字段的数据类型?

数据类型有如下意义:

1、确定该字段的值的类型

2、可以确定该字段所占据的空间

3、可以确定该字段是定长还是变长的

4、该字段如何进行比较以及排序

5、该字段是否能够索引

 

数据类型大概柯分为:数值型、字符型、日期时间型、枚举型、布尔型

数值型又可以分为整型和浮点型:

其中整型包括:TINYINT、SMALLINT、MEDIUINT、INT、BIGINT

整型类型占据空间大小默认是否有无符号有符号储存范围无符号储存范围
TINYINT    1byte       有-2^7~2^7-1 0-2^8-1
SMALLINT    2byte       有-2^15~2^15-1 0-2^16-1
MEDIUINT    3byte       有-2^23~2^23-1 0-2^24-1
INT    4byte       有-2^31~2^31-1 0-2^32-1
BIGINT    8byte       有-2^63~2^63-1 0-2^64-1

 浮点型:包括单精度和双精度浮点型

float(l.f):其中l表示浮点型的长度,不包含正负符号和小数点。f表示小数点的位数


字符型: 包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB等类型

字符类型是否区分大小写定长还是 变长占用空间实占空间储存范围
CHAR(n)不区分定长nn0-255bytes
VARCHAR(n)不区分变长nm0-65535bytes
BINARY区分定长nn0-255bytes
VARBINARY区分变长nm0-65532bytes
BLOB不区分变长nm0-65535bytes

 还有一个为text的字符类型,用来储存文本型的字符

对于变长型的字符类型来说,一般有1-2个字节用来记录储存的字符数。

对于定长型的字符类型来说,如果储存的宽度不足给定的储存宽度,那么就会在该字段后面补空格

取出该字段的时候,会将后面的空格删除掉。(如果内容后面有空格的话,将会被删掉)


 日期时间型:包括DATE、TIME、DATETIME、TIMESTAMP

日期时间型储存范围占用空间
日期型DATE"1000-01-01→9999-12-31"3bytes
时间型TIME"-838:59:59"→"838:59:59"3bytes
日期时间型DATETIME"1000-01-01 00:00:00"→"9999-12-31 23:59:59"8bytes
时间戳型TIMESTAMP是1970-01-01 00:00:00到当前的秒数4bytes
年型YEAR(2)"00-99"1bytes
年型YEAR(4)"1901-2155"1bytes

枚举型ENUM:就是列出某个字段的所有可能取得值。储存范围是0-65535bytes

布尔型:只有两种取值,1表示true,0表示false


修饰符

在声明列的时候,可以为这些列加上修饰符,这些修饰符有:

unsigned:表示无符号,非负数,一般用于数值型当中

primary key:设定该列为主键

not  null:该列上的值不能为空

default :表示在声明某个列时,设定该列的默认值

auto_increment:加上该修饰符后,该列必须为整型,且非负数,非空,该列必须是主键或唯一键

 

例如:CREATE TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, Name CHAR(20))

 

 

 

本文出自 “linux学习之路” 博客,请务必保留此出处http://xslwahaha.blog.51cto.com/4738972/1576283

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。