4-mysql字段类型(数据类型)

mysql字段类型(数据类型)

在这里插入图片描述

整数类型

  • tinyint(1字节)
  • smallint(2字节)
  • mediumint(3字节)
  • int(4字节)
  • bigint(8字节)

括号中表示该类型所占空间的长度(字节数)。

1字节=8位,1位只能表达2个意思(2个数字,0或者1),2位可以表达4个意思,3位可以表达8个意思。

8位(1个字节)可以表达256个数字。

默认情况下,这些整数类型都是可正可负的,那么:tinyInt就只能存储: -128—127这些数。

取值范围

在这里插入图片描述

整数类型通用设定形式

类型名[(M)] [unsigned] [zerofill]
  • 其中M表示“显示长度”,其需与zerofill结合使用才有效,即不够该长度的会自动左侧补0,当然如果超出也不影响。
  • unsigned表示“无符号数”,表示其中的数值是“非负”数字。
  • 如果设置了zerofill,则自动也就表示同时具备了unsigned修饰。
  • 如果设置了zerofill但没有设定长度M,则其会默认将所有数的左边补0到该类型的最大位数。

小数类型

浮点

  • 单精度浮点型: float,非精确数,通常不设定长度
    • 范围大约是-3.4E+38到-1.1E-38、0和1.1E-38到3.4E+38。
  • 双精度浮点:double,非精确数,通常不设定长度
    • 范围大约是-1.7E+308到-2.2E-308、0和2.2E-308到 1.7E+308。
    • real是double的别名。

定点

  • decimal,精确数,通常,定点型需要设定长度,形式为:decimal(总长, 小数位数)
    • 也可以写成:dec,numeric,fixed(当然这3者尽量不用)。
    • decimal类型整数最大65位,小数最大30位(均以10进制计)。

小数类型通用设定形式

类型名[(M,D)] [unsigned] [zerofill]
  • 其中M表示总位数,D表示小数点后位数,均可省略。
  • float和double是“不精确数”,不加位数设定更通用,而decimal是“精确数”,通常需要位数设定。
  • unsigned和zerofill含义同整数类型。
  • 虽然3种小数类型也支持unsigned修饰,但是不保存负数,最大值并不因此改变。

时间日期类型

时间日期类型:date, time, datetime, year, timestamp。

注意:写入数据库时,直接的时间日期数据,应该用单引号引起。

year类型可以是4位整数或4位纯数字字符串,也可以是2位整数或2位纯数字字符串。

timestamp表示的含义是“时间戳”,其实就是指“当前时刻”,本质上是一个数字,代表从1970年1月1日0点0分0秒到某个时间之间的秒数数值。该类型的字段值无需赋值,而是会自动取得当前时间值。

  • date类型: 支持的范围为’1000-01-01’到’9999-12-31’。
  • time类型: 支持的范围是’-838:59:59’到’838:59:59’。
  • datetime类型:支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。
  • timestamp类型:时间戳,就是表示“当前时刻”,类似函数now()获得的值,用于INSERT或UPDATE操作时自动获得当前时间。
  • year类型:
    • 四位字符串,范围为’1901’到’2155’;
    • 四位数字,范围为1901到2155;
    • 两位字符串,范围为’00’到’99’;
    • 两位整数,范围为1到99。

字符串类型

mysql,一行所有内容的总存储长度会有限制,约65535个字节。

  • char类型:

    • 定长字符串类型

    • 需要设定长度值,如果存储的数据不足设定的长度,则会右侧自动补空格填满。

    • char(6);
      
    • 最多能存储256个字符。

    • 要考虑字符编码问题。

  • varchar类型

    • 变长字符串类型

    • 需要设定长度值,最多能存储65535个字节。

    • 设定的长度只是最长长度,但可以不存满,则实际长度以数据长度为准。实际还得考虑一行的其他字段所占的长度,因为一行的最大长度是65535个字节;实际长度以实际内容为准,但不超过设定值。

    • varchar(20)
      
    • 要考虑字符编码问题。

2个二进制文本

  • binary类型
    • 定长二进制字符串类型
    • 类似char,应该设定长度值,只是按“二进制字节”保存字符数据,不存“文本”,而是存“文本的二进制数据”。
    • 最大255个字节
    • 无编码问题
  • varbinary类型
    • 变长二进制字符串类型
    • 类似varchar,需要设定长度值,只是按“二进制字节”保存字符数据,不存“文本”,而是存“文本的二进制数据”。
    • 最大65535个字节
    • 无编码问题

2个大文本类型

  • text类型:
    • 文本列类型
    • 用于存储普通文本,不受行的最大长度的限制,同类还有:tinytext, mediuntext, longtext。
    • 可以存储“超大文本”,且其实际的长度并不占用一行的长度。相对char和varchar,效率低。
  • blob类型:
    • 二进制列类型
    • 用于存储二进制字节内容,不受行的最大长度的限制,同类的还有:tinyblob, mediumblob, longblob。
    • 可以存储“超大二进制文本”,通常用于存储图片这种“二进制数据”。

2个有关“选项”的文本存储形式

enum,set类型的字段,可以限制“字符串”的数据值。

  • enum类型:

    • 枚举类型

    • 类似单选项应用中的多个选项值,最大65535个选项值;

    • 使用形式:enum(‘value1’, ‘value2’, … );

    • 选项的值虽然是字符串,但其数据库内部存储数据的时候其实存的是一个对应的数字序号(效率高),序号从1开始,最多6万多个。

    • 专门用于方便存储类似表单中的“单选项”的值

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 结果:在这里插入图片描述

  • set类型:

    • 类似多选项应用中的多个选项,最多64个选项,

    • 使用形式:set(‘value1’, ‘value2’, …);

    • 选项的值虽然是字符串,但其数据库内部存储其实是数字(效率高)(依次为1,2,4,8, …)最多6万多个。

    • 但可以是多个值,比如5就表示2个值(1,4),14就表示3个值(2,4,8)。

    • 专门用于方便存储类似表单中的“多选项”的值。

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 输入不存在数据的情形:在这里插入图片描述

  • bit类型:

    • 位类型
    • 使用形式:bit[(M)],其中M是1-64的数字,表示使用多少位二进制数字来存储数据。
    • 插入形式为:b’value’,比如:b’10’。
  • serial类型:

    • 序列类型
    • 其实只是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一个别名(同义词)。
  • bool类型:

    • 布尔类型
    • 其实只是tinyint(1)的一个同义词,其值为0就表示false,否则表示true。

通用设定形式

定义一个字段类型的写法:

create  table  tab1  (f1  数据类型 );

数据类型: 类型名[(长度n)]  [unsigned]  [zerofill]

长度n: 表示的意思是该数字的“显示形式上的长度”。

unsigned:设定为“无符号”数,则此时不能存储负数,正数几乎加倍。

zerofill:填充0,是指如果一个数字的长度不够指定长度的时候,可以在左边填充0以补到该长度。

注意: 如果设置了zerofill,则自动也就表示同时具备了unsigned修饰的含义。


版权声明:本文为jyn15159原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。