分类:
数值型

  • 整形
  • 小数
    • 定点数
    • 浮点数

字符型:

  • 较短的文本
  • 较长的文本

日期型

6.1 整型


6. 数据类型 - 图1

对应的字节数:1,2,3,4,8。

实例1:无符号和有符号整数定义

  1. CREATE TABLE tab_int(
  2. t1 INT,
  3. t2 INT UNSIGNED
  4. )
  5. DESC tab_int;

6. 数据类型 - 图2
特点:

  1. 如果不设置无符号还是有符号,默认是有符号,如果像设置无符号,需要添加关键字 unsigned。
  2. 如果插入的数值超过了整型的范围,会报 out of range 异常,插入失败。
  3. 如果不设置长度会有默认长度,也可以自己设置长度。
  4. 类型后面的长度不是数据的范围,数据的范围是由字节数决定的,长度的含义是最大的显示宽度。如果不够就会自动再左边填充 0 ,,但是必须在类型后面加上 zerofill 关键字。如果加上这个关键字,那么这个整型就是无符号整型。

    6.2 小数

    6. 数据类型 - 图3

    浮点数只是接近真实值,而定点数类型更为精确,所以需要更为精确的值,一般使用定点数。DEC 是 DECIMAL 的简写。 float 和 double 设置的时候也是 float(M,D),double(M,D)。

特点:

  1. M 表示整数部位 + 小数不为,如果 M 的位数超过范围,直接插入失败。如果 D 的位数超过范围直接去小数点后 D 个小数,并且会四舍五入,所有小数类型都是这样。
  2. M 和 D 都可以省略
  3. DEC 默认是 DEC(10,0),整数部分超过就报错,小数部分超过就四舍五入
  4. float 和 double 默认情况下都没有限制,不超过取值范围就行。
  5. 类型选择的原则:所选择的类型越简单越好,能保存数值的类型越小越好

    6.3 字符型


较短的文本类型:

  • char
  • varchar

较长的文本类型:

  • text
  • blob

    6.3.1 较短的文本类型

    6. 数据类型 - 图4

    用于保存 MySQL 中较短的字符串

特点:

  1. char 代表的固定长度的字符,设定是多少长度,就会给多少长度
  2. varchar 是补丁长度的字符类型,如果没有存储的数据,小于 varchar 规定的长度(M),那么就只会给存储进来的字符的长度的内存
  3. char 的效率比 varchar 的效率高。
  4. 如果存储的固定长度的字符,就用 char,如果是不定长字符的就用 varchar。

    6.3.2 较长的文本

    待更新……

    6.3.3 其他

枚举类型
6. 数据类型 - 图5

存入的值只能是枚举列表中的值 但是在实际情况中及其少用,因为代码回去限定它的类型,数据库只需要存储数据即可,不需要做太多的操作。

set类型
image.png

6.4 日期型

image.png
dateTime和timestamp的区别

  1. Timestamp支持的时间范围较小,取值范围1900101080001—2038年的某个时间; DATe time的取值范围:1000-1-1到9999-12-31
  2. timestamp和实际的时区有关,更能反应实际的日期,而datetime则只能反映出插入时的当地时区
  3. timestamp的属性受MySQL版本和SQLMode的影响很大。
  4. 常用 timestamp,如果时区更改,会自动地更新时间。
  5. 如果不更改时区,timestamp显示的内容和datatime的内容相同。