数据类型(列类型):

讲了这么久终于到了数据类型,到目前为止我只用了int和varchar类型,其他类型都没了解过,现在进行学习。

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_存储数据

不得不说真的是应有尽有,而且每种类型还分这么细

这里有个新指令:

desc  表名       等价于      show columns from 表名

用于查看数据表的结构;

数值型

1.整数型

  • tinyint:迷你整型,使用 1 个字节存储数据(常用);
  • smallint:小整型,使用 2 个字节存储数据;
  • mediumint:中整型,使用 3 个字节存储数据;
  • int:标准整型,使用 4 个字节存储数据(常用);
  • bigint:大整型,使用 8 个字节存储数据。

各种数据类型以及unsigned的应用:

数值类型都是默认有符号的,想要无符号就要在末尾追加unsigned,若数据超出范围是会报错的:

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_字符串_02

显示宽度问题:

即desc 表名时出现的在类型中的括号的数字,表示显示宽度,并不影响数据类型的大小。

通常用法:前导0的使用:

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_数据_03

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_存储数据_04

2.小数型

  • 浮点型:小数点浮动,精度有限,容易丢失精度;
  • 定点型:小数点固定,精度固定,不会丢失精度。

浮点型:

以float为例,直接声明float就没有小数部分,使用float(M,D),其中M表示总长度,D表示小数部分长度,可以以科学计数法表示。

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_数据_05

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_数据_06

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_字符串_07

定点型:

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_mysql 查询一列内容等于新列显示_08

这是一个神奇的例子,那个float类型并没有超过位数但还是被四舍五入了,而定点型就不会,至少整数部分不会被四舍五入,对精度要求精确的如货币的存储就用定点型型,而想要表示更大范围又不是很在乎精度问题的就可以用浮点型。

日期时间型

  • datetime:日期时间,其格式为yyyy-MM-dd HH:mm:ss,表示的范围是从 1000 年到 9999 年,有零值,即0000-00-00 0000:00
  • date:日期,就是datetimedate部分;
  • time:时间,或者说是时间段,为指定的某个时间区间之间,包含正负时间;
  • timestamp:时间戳,但并不是真正意义上的时间戳,其是从1970年开始计算的,格式和datetime一致;
  • year:年份,共有两种格式,分别为year(2)year(4)

其中比较有用的一个类型就是timestamp类型,因为它只要记录被更新它就会变为当前时间,即可以用来记录数据更新的时间。

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_存储数据_09

 

mysql 查询一列内容等于新列显示 mysql查看列的数据类型_存储数据_10

如图,我并没有插入timestamp的数据,但它会在当前这一行数据被更新时自动更新为当前时间

字符串类型

在 SQL 中,将字符串类型分成了 6 类,分别为:charvarchartextblobenumset.

  • char:定长字符串,最大长度255个字符,对空间比较浪费,但效率高,如果数据长度确定如身份证等就用这个类型;
  • varchar:不定长字符串,最大长度65536个字符,比较省空间,但效率低,如果数据长度一开始不确定就用这个类型;
  • text:存储文字;
  • blob:存储二进制数据,通常不用;
  • enum:枚举类型:一个数据只能保存一个元素
  • 创建enum类型:
  • 插入数据:
  • set:集合字符串,一个数据可以保存多个元素:
  • 创建set类型:
  • 插入数据:
  • 而且不管插入顺序如何都会自动排序的,即插入'large,small'后查看时发现会变成'small,large'