mysql__建表相关知识

一. Mysql支持的数据类型

1.整数类型
整数类型 字节 范围(有符号) 范围(无符号) 用途
tinyint 1字节 (-128,127) (0,255) 小整数值 (对应pojo属性数据类型是Boolean)
smallint 2字节 (-32 768,32 767)  (0,65 535) 大整数值
mediumint 3字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 
int或integer 4字节 (-2 147 483 648,2 147 483647)  (0,4 294 967 295)  大整数值 

bigint    8字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 

INT 类型:在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。

指定一个字段的类型为 INT(6), 当设置属性 zerofill: 0填充  例:1 就在前面补0为   000001

需要注意的是 使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

2.小数类型
float(m,d)  单精度浮点型 8位精度(4字节) m总个数 d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数 d小数位
decimal(m, d)   高精度(用于金额)  
M是数字最大位数,范围1-65; D是小数点右侧数字个数范围0-30,但不得超过M。

3.字符串类型
字符串类型 字节大小 描述及存储需求
CHAR     0-255字节 定长字符串
VARCHAR 0-255字节 变长字符串
TEXT 0-65535字节 长文本数据 
如果字符串的长度基本一样,例如电话号码,省份证号码,等可以使用char来存储,不超过50byte(字节),UTF-8一个字符是3个字节, 注意:char存储的字符串如果尾部有空格会自动删除掉尾部空格

4.日期类型
类型 大小(字节) 范围 格式 用途
DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:5 YYYY-MM-DD HH:MM:SS
混合日期和时间
5.mysql类型后面的数字长度含义
int(2) :数据类型括号里的数字不管是多少,所占存储空间都是固定的,并不是说只能输入两位数字,而是只显示两位数字
varchar(N):N指的是最大字符数,而不是字节数.

6.NULL和EmptyStrign的区别

NULL哪方面都是NULL, NULL长度为NULL, 在InnoDB中 NULL比空字串占用更少的空间
EmptyString:是空字符串, 空字串的长度是0
用途:
这两种设计在数据库是否占空间的层面上考虑不会太多,更多的时候还是考虑业务需要会更好
比如某个字段一定要显示,那如果没有只就为“”,前端显示就不要去转换了,也不会引发未考虑到的空指针异常。
而有些字段是可写或可不写,那么为null就表示从来没有填写过,做一些相应的逻辑控制,相当于多了一个状态位。
7.排序规则
utf8_general_ci:不区分大小写
utf8_general_cs: 区分大小写
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

utf8_general_ci:校对速度快,但准确度稍差。 
utf8_unicode_ci:准确度高,但校对速度稍慢。 
通常情况下 utf8_general_ci 的准确性就够我们用的了, 所以新建数据 库时一般选用utf8_general_ci就可以了

二.mysql建表注意事项


   表设计规范
  1. 库名、表名、字段名必须使用小写字母,“_”分割。
  2. 建议使用InnoDB存储引擎。(支持事物)
  3. 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。
  4. 建议使用 UNSIGNED(无符号) 存储非负数值。
  5. 建议使用INT UNSIGNED存储IPV4。
  6. 整形定义中不添加长度,比如使用INT,而不是INT(4)。
  7. 使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED。
  8. 尽可能不使用TEXT、BLOB类型。
  9. VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。
  10. VARCHAR(N),N尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。
  11. 表字符集选择UTF8。
  12. 使用VARBINARY存储变长字符串。
  13. 存储日期使用DATE类型。
  14. 存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节。
  15. 建议字段定义为NOT NULL。
  16. 将过大字段拆分到其他表中。
  17. 禁止在数据库中使用VARBINARY、BLOB存储图片、文件等。

猜你喜欢

转载自blog.csdn.net/mzy755423868/article/details/80471968