表设计规范

1.库名,表名,字段名必须使用小写字母,“-”分割 ,长度不得超过12字符 , 要见名识意 ;

2.建议使用Innodb存储引擎

(1)什么是存储引擎

不同的技术及配套的相关功能就是存储引擎

(2)mysql存储引擎

i).MylSAM:Mysql的默认数据库,最为常用。有较高的插入,查询速度,不支持事务

1》、什么是事务

事务是访问并且可能更新数据库中各种数据项的一个程序执行单元(例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。)事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

Ii).InnoDB:支持事务,行级锁定

Iii).Memory:所有数据置于内存的存储引擎,有极高的插入,更新和查询效率。但会占用和数据量成正比的存储空间。并且其内容在重启MySQL时会丢失

3.存储精确浮点数必须使用decimal代替float和double。(float和double,数字溢出不会报错,会有精度损失,decimal数值会因溢出而报错)

(1)float :浮点型,含字节数为4,32bit,7个有效位

double:双精度实型,含字节数为8,15个有效位

decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

4.建议使用unsigned存储非负数值

无符号类型,非负限定。例如,tinyint的存储大小是1字节,取值范围为-127到128。如果限定了unsigned则取值范围为0-255。即不能取负值。

5.建议使用INT UNSIGNED存储IPV4。(ipv4是互联网协议(Internet Protocol,IP)的第四版);

6.整形定义中不添加长度,比如使用INT,而不是INT(4)。

7.不建议使用ENUM类型,使用TINYINT来代替(要插入enum的值,字段必须加引号,不加引号当然是数字,数字就是key,不是value。)

8.尽可能不使用TEXT、BLOB类型。

a) 索引排序问题,只能使用max_sort_length的长度或者手工指定ORDER BY SUBSTRING(column,length)的长度来排序

b) Memory引擘不支持text,blog类型,会在磁盘上生成临时表

c) 可能浪费更多的空间

d) 可能无法使用adaptive hash index

e) 导致使用where没有索引的语句变慢

9.字段定义为not null;

a)如果null字段被索引,需要额外的1字节

b)可以用0,‘’代替

c)如果是索引字段一定要定义为not null

10.VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。

11.使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED。

12.表字符集选择UTF8。

a) 使用utf8字符集,如果是汉字,占3个字节,但ASCII码字符还是1个字节。
b) 统一,不会有转换产生乱码风险
c) 其他地区的用户(美国、印度、台湾)无需安装简体中文支持,就能正常看您的文字,并且不会出现乱码
d)ISO-8859-1编码(latin1)使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃。即把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题,保存的是原封不动的字节流。

13.使用VARBINARY存储变长字符串。

14.存储年用YEAR;存储日期用DATE类型

15.存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节。

mysql建表规范及注意事项的更多相关文章

  1. Mysql的建表规范与注意事项

    一. 表设计规范 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储 ...

  2. MySQL建表规范与常见问题

    一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确 ...

  3. MySQL建表规范与常见问题 (go)

    一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确 ...

  4. Mysql学习总结(28)——MySQL建表规范与常见问题

    一. 表设计 库名.表名.字段名必须使用小写字母,"_"分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB ...

  5. MySQL建表规范

    一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省 ...

  6. mysql 建表规范

    常用字段 CREATE TABLE `che`.`<table_name>` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '索引id', ...

  7. 【记录】Mysql 建表注意事项

    博主最近打算搭建商城,由于之前对建表只有很浅显的理解,没有太过深入了解,建表过程中遇到一些问题,现记录如下, 如有问题请各位留言指正,感激不尽: 建表时设置如何设置联合主键?如下标红处: CREATE ...

  8. MySQL 建库建表规范

    1.约束 1.PrimaryKey(PK)主键 特点:唯一 + 非空,一张表中只能有一个主键约束,一般是一个数字列,最好是无意义的. 2.NOT NULL 非空 特点:不能为空,建议在MySQL中,业 ...

  9. MySQL建表DDL规范(欢迎补充)

    MySQL建表DDL规范(欢迎补充) 基本规范: 表名和字段名全大写,一般表名以T开头 脚本需支持可重复执行,带IF NOT EXISTS ,但不可带DROP语句 字符集使用utf8mb4 (CHAR ...

随机推荐

  1. JS设计模式(4)迭代器模式

    什么是迭代器模式? 定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示. 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游 ...

  2. Character Encoding in .NET

    https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding#Encodings Characters ...

  3. C# 控件置于最顶层、最底层

    btn.BringToFront();//将控件放置所有控件最前端 btn.SendToBack();//将控件放置所有控件最底端

  4. AngularJS服务及注入--Provider

    Provider简介 在AngularJS中,app中的大多数对象通过injector服务初始化和连接在一起. Injector创建两种类型的对象,service对象和特别对象. Service对象由 ...

  5. 关于var time = +new Date;

    文章地址:https://www.cnblogs.com/Raoh/p/4212075.html

  6. 判断网页打开浏览器类型,PC 手机端,微信浏览器,,,

    //判断网页打开浏览器类型,PC 手机端,微信浏览器,,, <script type="text/javascript"> var browser = { versio ...

  7. [hdu P4334] Trouble

    [hdu P4334] Trouble Hassan is in trouble. His mathematics teacher has given him a very difficult pro ...

  8. restful : 面向资源架构

    restful 规范 1. API与用户的通信协议,https协议 2. 域名 https://api.example.com 尽量将API部署在专用域名 https://example.org/ap ...

  9. 和系统运行状况相关的Shell命令总结

    1.  Linux的实时监测命令(watch):    watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行.该命令最为常用的两个选项是-d和-n,其中-n表 ...

  10. canvas绘图基础

    <canvas>元素是HTML5中的绘图元素,通过定义一个画布区域,然后使用javascript动态地在这个区域里面绘制图形,对于2D和3D图形都可以绘制,我们将其分成2D上下文和WebG ...