分类:
数值型
- 整形
- 小数
- 定点数
- 浮点数
字符型:
- 较短的文本
- 较长的文本
日期型
6.1 整型

对应的字节数:1,2,3,4,8。
实例1:无符号和有符号整数定义
CREATE TABLE tab_int(t1 INT,t2 INT UNSIGNED)DESC tab_int;

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

浮点数只是接近真实值,而定点数类型更为精确,所以需要更为精确的值,一般使用定点数。DEC 是 DECIMAL 的简写。 float 和 double 设置的时候也是 float(M,D),double(M,D)。
特点:
- M 表示整数部位 + 小数不为,如果 M 的位数超过范围,直接插入失败。如果 D 的位数超过范围直接去小数点后 D 个小数,并且会四舍五入,所有小数类型都是这样。
- M 和 D 都可以省略
- DEC 默认是 DEC(10,0),整数部分超过就报错,小数部分超过就四舍五入
- float 和 double 默认情况下都没有限制,不超过取值范围就行。
- 类型选择的原则:所选择的类型越简单越好,能保存数值的类型越小越好
6.3 字符型
较短的文本类型:
- char
- varchar
较长的文本类型:
特点:
- char 代表的固定长度的字符,设定是多少长度,就会给多少长度
- varchar 是补丁长度的字符类型,如果没有存储的数据,小于 varchar 规定的长度(M),那么就只会给存储进来的字符的长度的内存
- char 的效率比 varchar 的效率高。
- 如果存储的固定长度的字符,就用 char,如果是不定长字符的就用 varchar。
6.3.2 较长的文本
待更新……6.3.3 其他
枚举类型
存入的值只能是枚举列表中的值 但是在实际情况中及其少用,因为代码回去限定它的类型,数据库只需要存储数据即可,不需要做太多的操作。
set类型
6.4 日期型

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

