Mysql其实是把数据存到了表里,表又由若干行组成,每一行又由若干列组成
数值类型:
1.整数类型:无符号数(仅代表非负数),有符号数(代表正数和负数都行)。
TINYINT:非常小的整数;
SMALLINT:小的整数
MEDIUMINT:中等大小的整数
INT:标准的整数
BIGINT:大整数
如何知道某个数据类型是有符号数还是无符号数
在数据类型后面加上UNSIGNED单词,则表示该类型用于表示无符号数
在数据类型后面加上SIGNED单词或者什么都不加,则表示该类型用于表示有符号数。
2.浮点数类型:
用户使用的都是十进制小数,如果我们事先知道表中某个列要存储的小数在一定范围内就可以使用
FLOAT(M, D)【四个字节】,或者DOUBLE(M, D)【八个字节】, M表示该小数最多包含的有效数字个数。D表示该小数保留小数点后十进制数字的个数。改变M,D并不会影响float和douoble类型占用的内存空间大小。
定点数类型:
在某些情况下我们必须保证存储的小数是精确的。而浮点数显然不能满足。DECIMAL(M, D)占用的空间大小取决于M,D。原因是因为这个存储的原理是把小数点左右两边的数分别存储起来。这样以此来达到精确的目的。另外M的值最大为65,D的值最大为30。
日期和时间类型:
类型分为:YEAR DATE TIME DATETIME TIMESTAMP(时间戳)
解释一下时间戳:我们把从0时区1970 01-01 00:00:00开始到现在所经历的秒数称为时间戳。
用时间戳存储时间的好处就是,他展示的值可以随着时区的变化而变化
字符串类型:
字符大致可以分为两种,一种叫可见字符,一种叫不可见字符。顾名思义可见字符就是打印出来能看到的字符
不可见字符也好理解,比如我们输入的空格回车等等。
字符串类型:
CHAR(M):固定长度的字符串
VARCHAR(M):可变长度的字符串
TINYTEXT:非常小型的字符串
TEXT:小型的字符串
MEDIUMTEXT:中等大小的字符串
LONGTEXT:大型的字符串
其中M代表该数据类型最多能存储的字符数量,L代表实际向该类型的列中存储的字符串在特定字符集下所占的字节数,W代表在特定字符集下编码一个字符最多需要的字节数
ENUM类型和SET类型:
格式:ENEU('str1', 'str2', ....)
SET('str1', 'str2'....)
这两个类型都是一种特殊的字符串类型,从字符串链表中单选或者多选元素的时候会用得到他们
BIT类型:
有时候我们需要存储单个或者多个二进制位时,此时我们就可以用到这种类型。
BIT(M):存储M个二进制位的数
BINARY(M)和VARBINSRY(M):
对应之前讲过的存放字符串的CHAR(M)和VARCHAR(M),都是前者是固定长度,后者是可变长度类型。只是这里适用于存放字节类型。
BLOB类型:
TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB用于存储可变长度的二进制数据。比如图片,音频,压缩文件等等。和之前的字符很像,只不过之前那个是存放字符,这个是存放字节。