linux mysql 数据类型_MYSQL的数据类型及其常用修饰符详解

mysql的数据类型

在mysql数据库当中,每一个库都是有多张表来组成的,每一个表都是由行和列来组成的。列通常将其称为字段。

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

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

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

1、占据空间

2、储存范围

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

数据类型有如下意义:

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

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

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

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

5、该字段是否能够索引

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

数值型

数值型分为整型和浮点型:

整型

整型包括:TINYINT、SMALLINT、MEDIUINT、INT、BIGINT整型类型占据空间大小默认是否有无符号有符号储存范围无符号储存范围

TINYINT1byte有-2^7~2^7-10-2^8-1

SMALLINT2byte有-2^15~2^15-10-2^16-1

MEDIUINT3byte有-2^23~2^23-10-2^24-1

INT4byte有-2^31~2^31-10-2^32-1

BIGINT8byte有-2^63~2^63-10-2^64-1

浮点型

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

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

字符型

字符型: 包括CHAR、VARCHAR、BINARY、VARBINARY、TEXT、BLOB等类型字符类型是否区分大小写定长还是 变长占用空间实占空间储存范围

CHAR(n)不区分定长nn0-2^8-1bytes

VARCHAR(n)不区分变长nm0-2^16-1bytes

TINYTEXT不区分变长0-2^8-1bytes

TEXT不区分变长0-2^16-1bytes

MEDIUMTEXT不区分变长0-2^24-1bytes

LONGTEXT不区分变长0-2^32-1bytes

BINARY区分定长nn0-2^8-1bytes

VARBINARY区分变长nm0-2^16-1bytes

TINYBLOB区分变长0-2^8-1buyes

BLOB区分变长nm0-2^16-1bytes

MEDIUMBLOB区分变长0-2^24-1bytes

LONGBLOB区分变长0-2^32-1bytes

TEXT类型和BLOB类型用于存储超大文本的,因此在表中,存储的并不是真实的数据,而是存储的是指向真实数据的指针。

TEXT类型存储的是文本数据,BLOB类型存储的是超大二进制数据。

BINARY和VARBINARY存储的也是二进制数据。

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

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

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

CHAR和VARCHAR存储时超过n设定时,字符串会被截断或者是不允许插入,这需要根据SQL模型来定,默认SQL模型为空,即超过n后字符串会被截断。

日期时间型

日期时间型:包括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。如ENUM('F','M')。

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

字段修饰符

在声明字段的时候,可以为这些字段添加额外的修饰符,不同的数据类型,其修饰符也是不一样的,数据类型常见的修饰符

整型UNSIGNED:无符号,表示非负。(UNSIGNED要定义在NULL或NOT NULL之前)

NULL:允许为空

NOT NULL:允许非空

DEFAULT N:定义默认值

AUTO_INCREMNET:自动增长,自动增长的字段必须是整型、非空、非负、唯一键或主键。

浮点型floatUNSIGNED,NULL,NOT NULL,DEFAULT    N

字符型(char,varchar和text)NULL,NOT NULL,DEFAULT 'string'

CHARACTER SET 字符集:设置字符集。

show character set可以查看mysql支持的所有字符集;

show variables like ‘%charac%’可以查看mysql支持的默认字符集。

collation '排序规则':设定排序规则;

show collation可以查看mysql支持的所有排序规则;

字符型(binary、varbinary和blob)NULL,NOT NULL,DEFAULT(但不适用于BLOB类型)

日期时间型NULL,NOT NULL,DEFAULT ‘string’

枚举型(ENUM)NULL,NOT NULL,DEFAULT 'string'

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值