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 # 表示不为空