mysql__建表相关知识

一. Mysql支持的数据类型
1.整数类型
整数类型字节范围(有符号)范围(无符号)用途
tinyint1字节(-128,127)(0,255)小整数值 (对应pojo属性数据类型是Boolean)
smallint2字节(-32 768,32 767) (0,65 535)大整数值
mediumint3字节(-8 388 608,8 388 607)(0,16 777 215)大整数值 
int或integer4字节(-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字节定长字符串
VARCHAR0-255字节变长字符串
TEXT0-65535字节长文本数据 
如果字符串的长度基本一样,例如电话号码,省份证号码,等可以使用char来存储,不超过50byte(字节),UTF-8一个字符是3个字节, 注意:char存储的字符串如果尾部有空格会自动删除掉尾部空格

4.日期类型
类型大小(字节)范围格式用途
DATE41000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:5YYYY-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存储图片、文件等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值