MySQL基础知识#
在讲 MySQL 中数据表的增删改查之前,我们先需要创建表。创建表的过程中需要制定表字段的类型,字段的约束以及表的存储引擎等。所以非常有必要先介绍些MySQL的基础语法知识。
字符集和校验规则#
字符集:字符的集合,常见的字符集有ASCLL、GBK和Unicode等;
校验规则:当前字符集内,字符之间大小的比较规则。
数值型#
1. 数值类型
类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TYNYINT | 1 | -128/0 | 127/255 |
SMALLINT | 2 | -32768/0 | 32767/65535 |
MEDIUMINT | 3 | -8388608/0 | 8388607/16777215 |
INT | 4 | -2147483648/0 | 2147483647/4294967295 |
BIGINT | 8 | 很大... | 很大... |
INT(M) UNSIGNED ZEROFILL
可以这样定义数值类型。其中M,表示显示宽度,显示宽度不限制数值的范围。配合zerofill来使用,可以在小于显示宽度的位数前增加0。ZEROFILL 自动为unsigned。Unsigned 表示无符号,只表示正数。
2. 小数类型
单精度(不推荐使用)
FLOAT(M,D) UNSIGNED ZEROFILL
双精度
DOUBLE(M,D) UNSIGNED ZEROFILL
其中M表示总的位数(包括小数位数),D表示小数位数。M,D可以控制保存的范围。比如DOUBLE(10,2)可以表示 -99999999.99 到 99999999.99。
定点数(金额,科学数据推荐使用这个类型)
DECIMAL(M,D) UNSIGNED ZEROFILL
其中M表示总的位数,D表示小数位数。此M,D可以控制保存的范围。M,D省略,默认为10,0;
日期型#
可以考虑使用long类型来存储,也就是时间戳。
或者使用datetime(或timestamp)类型来存储。但是这两个类型有个问题:datetime不包含时区的概念,也就