美文网首页
MySQL数据类型

MySQL数据类型

作者: q若水 | 来源:发表于2018-08-22 14:02 被阅读10次

a>.字符型
  1>.固定长度的字符类型,换句话说就是定义了一个字符长度,如果你存储的字节长度不足时,系统会自动给你用“0”进行占位操作,当字符类型的长度超过我们预定义的长度时,就会报错。用char(#number[最多存储255个字符])关键字来定义。(也就是说,char(10),就表示你每个字符串存储的长度应该是10,比如你的单个字符串长度是7,那么还有3个空位系统自动会用“0”进行占位。也就没有字符存储的大小是一致的。)

2>.自动变化长度的字符类型,即varchar(#bumber[最多存储65535个字符,即2个字节])。和上面的char(#number)用法相似,只不过唯一不同的是存储的字符的长度是可变化的。也就是说,varchar(10),就表示你每个字符串的长度应该是10,如果你的单个字符串长度是6,那么它就会以6个长度来存取的你的数据,而不会去可以给你填满其他的占位符,它是以你实际长度为准的。注意,char(#number)和varchar(#num)存储数据的时候都不区分大小写。如果你强烈要求要区分大小写的话也是可以的,和char(#number)类似的一种方法叫做binary(#number),他们唯一不同就是char(#number)不区分大小写,而binary(#number)是区分大小写的。同理,和varchar(#number)对应的就是varbinary(#number)。

3>.其实char(#number),var(#number),binary(#number),varbinary(#number)它们的存储数据的大小是有上限的。如果你写博客,里面的正文数据长度一定是很大的。这个时候这四种定义类型就不再合适了,这个时候就有了面向对象存储的概念,就是不讲数据放在一个表中了,而是将数据放在一个指定的文件,而在表中存储的只是一个指针。当用户用到该数据时,就会去调用这个指针所对应的文件。而这种存储方式也是区分大小写的,相比之前学习的四种定义类型,test和blob数据类型存储的容量更大,test的类型拥有char(#number),binary(#number)的特点,而blob数据类型拥有varchar(#number),varbinary(#number)。而test和blob又被细分了4类,例如blob分为TinyBlob(最多存储255个字符,即一个字节),Blob(最多存储64kb,需要减去2个字节的空间),MediumBlob(最多存储16MB的空间,需要减去3个字节),LongBlob(最多存储4G的空间,需要减去4个字节)。test分为TinyText(最多存储255个字符,即一个字节与char索引方式是不同的,TinyText不能使用全字段索引而char确实可以的),Text(最多存储65535个字符,需要减去2个字节),MediumText(最多存储16777215个字符,需要减去3个字节),LongText(最多存储4294967295个字符,表示可以存储4个G)等等。

4>.字符型(char、varchar和text)常用的属性修饰符:

A>.NOT NULL(非空约束)
    B>.NULL(允许为空)
    C>.default ‘string’(默认值,不适用于text类型)
    D>.CHARACTER SET 字符集
      mysql>show variables like '%char%'; #查看默认的字符集
      mysql>show character set; #查看数据库支持的字符集
    E>.collation '规则':排序规则
      msyql>show collation; #查看数据库支持的排序规则

5>.binary,varbinaray和blob字符常用的属性修饰符

A>.NOT NULL
    B>.NULL
    C>.default 不适用与blob

b>.数值型

1>.精确数值型

精确数值型有两类,即整形(integer)和十进制(decimal)。在金融领域中,一般都用十进制存储数值型。而integer类型来讲,它有好几种变化形式分别用来表示所能够存储的范围大小的,比如:

A>.只占用一个字节的tinyint(微整型,取值范围是-128127或者0255);

B>.占用两个字节的samllint(小整型,取值范围是-3276832767或者065535);

C>.占用三个字节的mediuint(中等整型,取值范围-83886088388607或者016777215);

D>.占用四个字节的int(整型,取值范围-21474836482147483647或者04294967295);

E>.占用八个字节的bingint(大整形,取值范围是-92233720368547758089223372036854775807或者018446744073709551615)等等。
整形的常用属性修饰符:
     A>.AUTO_INCREMENT:自动增长(前提:非空,且唯一,支持索引,非负值[UNSIGNED],注意:TRUNCATE 用来清空表中数据)
     B>.LEST_INSERT_ID():可以查看上次增长的数值,当插入多行时,只记录第一行
     C>.UNSIGNED:无符号
     D>.NULL
     E>.NOT NULL
     F>.DEFAULT
2>.近似数值型

近似数值型又分为单精度浮点型(float)和双精度浮点型(double)。

浮点型常用修饰符:(使用g,f来定义总共有多少数字和小数点后有多少数字)
      A>.NULL
      B>.NOT NULL
      C>.UNSIGNSD
      D>.DEFAULT

3>.位

按位(bit)实现数据存储的。这种方式不建议使用。

c>.日期时间型

1>我们在数据库中可能需要存储日期或时间,日期时间型其实本质上被我们存储为数值或字符。

A>.其中我们可以用占用三个字节的date(日期型)来存储时间;

B>.用占用三个字节的time(时间型)来存储时间;

C>.用占用八个字节的datetime(日期时间型)来存储日期和时间;

D>.当然,你也可以存储在四个字节的timestamp(时间戳,存储自1970年1月1号0点0分0秒至你所指定的时间为止所经过的秒数。);

E>.对了还有一个字节来记录年的year类型。即Year(2)和year(4),前者表示方法是:“0099”,默认值是:“00”;后者表示方法是:“19012155”,默认为“0000”。

2>.日期时间型常用的修饰符
    A>.NULL
    B>.NOT NULL
    C>.DEFAULT

d>.布尔型

MySQL其实没有真正意义上的布尔型,而是使用的tinyint(微整型),而且只显示一位来表示的,要么是0,要么是1.

e>NULL

表示什么也没有存,注意空白字符不等于空哟,数字0也不代表空。

f>.内置类型(事实上ENUM和SET也是属于字符型哟)

1>.MySQL也有两种常见的内置类型,即ENUM(枚举)和SET(集合)。

2>.枚举类型是指将所有的情况的列举出来,我们从中挑选处一种即可。比如今天是星期几,我们通过枚举方法列出所有的可能性,将星期一至星期日的其中情况都枚举出来,这样用户输入的星期八则是不合法的。集合类型是指在一个范围内有很多元素,你可以把这些元素任意拼凑,怎么拼都行,但是每个元素必须是在给定范围内的,不能超出限定范围。就好比你是某学校的大一新生的班主任,现在你要对你的学生进行分组处理。其中每个组的每一个成员必须都是你的班级的学生,而不能讲其他班级的学生拉倒你的班级进行分组。

3>.ENUM和SET的修饰符
    A>.NULL
    B>.NOT NULL
    C>.DEFAULT ‘’

相关文章

网友评论

      本文标题:MySQL数据类型

      本文链接:https://www.haomeiwen.com/subject/byzeiftx.html