mysql快速上手之数据类型、字符集

Mysql支持的数据类型

数值类型

  • MySQL 支持所有标准 SQL 中的数值类型,其中包括严格数值类型(INTEGER、SMALLINT、 DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION),并在此基础上做了扩展。扩展后增加了 TINYINT、MEDIUMINT 和 BIGINT 这 3 种长度不同的整 型,并增加了 BIT 类型,用来存放位数据。

 

 注意:

  • 所有的整数类型都有一个可选属性 UNSIGNED(无符号),如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,例如,tinyint 有符号范围是-128~+127,而无符号范围是 0~255。
  • 整数类型还有一个属性:AUTO_INCREMENT。这个属性只用于整数类型。值一般从 1 开始,每行增加 1。一个表中最多只能有一个AUTO_INCREMENT列。应该定义为 NOT NULL,并定义为 PRIMARY KEY 或定义为 UNIQUE 键。
  • MySQL 小数分为两种方式:浮点数和定点数。浮点数包括 float(单精度) 和 double(双精度),而定点数则只有 decimal 一种表示。定点数在 MySQL 内部以字符串形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
  • 数据插入 bit 类型字段时,首先转换为二进制,如果位数允许,将成功插入;如果位数小于 实际定义的位数,则插入失败。

字符串类型

  • MySQL 中提供了多种对字符数据的存储类型, MySQL 中提供了多种对字符数据的存储类型。

 

 注意:

  • CHAR 和 VARCHAR 很类似, 二者的主要区别在于存储方式的不同:CHAR 列的长度固定为创建表时声明的长度,长度可以为从 0~255 的任何值; 而 VARCHAR 列中的值为可变长字符串, 在检索的时候,CHAR 列删除了尾部的空格,而 VARCHAR 则保留这些空格。

日期时间类型

 

 注意:

  • 如果要用来表示年月日,通常用 DATE 来表示。
  • 如果要用来表示年月日时分秒,通常用 DATETIME 表示。
  • 如果只用来表示时分秒,通常用 TIME 来表示。
  • 如果只是表示年份,可以用 YEAR 来表示,它比 DATE 占用更少的空间。
  • 如果需要经常插入或者更新日期为当前系统时间,则通常使用 TIMESTAMP 来表示。

复合类型

区别:
  • enum 只允许从一个集合中 取出一个值
  • set 允许从集合中 取出任意多个值

总结示例

create table if not exists numbers(
    id INT(11) UNSIGNED not null,
    username VARCHAR(50) not null,
    content LONGTEXT not null,
    create_time datetime not null,
    sex TINYINT UNSIGNED not null DEFAULT 1,
    age TINYINT DEFAULT 18
)ENGINE=INNODB DEFAULT CHARSET=utf8;

create table if not exists nums(
    id INT(11)  not null,
    username VARCHAR(50) not null,
    content LONGTEXT not null,
    create_time datetime not null,
    sex TINYINT UNSIGNED not null DEFAULT 1,
    age TINYINT zerofill
)ENGINE=INNODB DEFAULT CHARSET=utf8;

zerofill # 表示填充0
UNSIGNED # 不能出现负数
default # 设置默认值
not null # 表示不为空

字符集

posted @ 2020-01-16 00:25  少年阿成  阅读(180)  评论(0编辑  收藏  举报