MySQL 命名约定

引擎和字符集

引擎始终是MyISAM,除非在特殊情况下需要不同。所有数据库都必须使用 UTF8 字符集。

数据库

数据库名称必须与项目名称同名。如果项目名称为“我的网站”,则应将数据库创建为:

CREATE DATABASE mywebsite DEFAULT CHARSET UTF8;

所有表都必须采用 UTF8 编码。同一包中的所有表都必须具有前缀。使用 2 个或 3 个字母来描述要为数据库添加前缀的包。如果项目名称是Real Deal Marketing,最明显的前缀将是“rdm_”;

CREATE TABLE rdm_affiliates;

更改表和文件版本 major.minor[.build[.revision]]

所有表的所有更改都应保存在(database_name).sql文件中。如果数据库名称为“realdealmarketing”文件名应为 realdealmarketing-1.0.0.sql

  1. 初始文件必须为版本 1.0.0
  2. 如果只有表更改文件,则新版本应增加 0.0.1 示例:realdealmarketing-1.0.7.sql
  3. 如果创建新表,则必须将版本增加 0.1。示例:房地产交易营销-1.2.0.sql
  4. 如果删除表,则必须将版本提高 1.0。示例:realdealmarketing-2.0.0.sql
  5. 所有次要修订版都应具有遵循以下模式的适当文件名和版本:major.minor[.build[.revision]]
  6. 所有版本应保存在同一目录中

领域

本节说明如何创建数据库表字段以及如何为每个字段选择名称。

字段名称

字段名称必须以表名的 2-4 个字母为前缀。

字段名称始终以小写形式,用“_”分隔单词

DROP TABLE IF EXISTS rdm_affiliates;
CREATE TABLE IF NOT EXISTS rdm_affiliates
(
aff_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
aff_url VARCHAR(120) NOT NULL DEFAULT '',
aff_title VARCHAR(120) NOT NULL DEFAULT '',
aff_website CHAR(10) NOT NULL DEFAULT '',
aff_gender CHAR(8) NOT NULL DEFAULT '',
aff_landing_page VARCHAR(120) NOT NULL DEFAULT '',
aff_link VARCHAR(120) NOT NULL DEFAULT '',
aff_text TEXT, PRIMARY KEY (aff_id),
INDEX (aff_website)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

所有字段名称都必须是描述性的,避免使用“唯一”、“排序”和保留字等名称。

空值和默认值

除AUTO_INCREAMENT、文本、日期(和类似字段)外的所有字段都必须定义为非空默认“值”

例子:

aff_title 		VARCHAR(120) NOT NULL DEFAULT ''
aff_gender ENUM('male','female') NOT NULL DEFAULT 'male'
user_id INT UNSIGNED NOT NULL DEFAULT 0
user_birthday DATE DEFAULT NULL
user_allow_newsletter TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
art_text TEXT

指标

WHERE 和 ORDER BY 中的所有字段都应定义为 INDEX。如果您有这样的疑问:

SELECT * FROM table1 WHERE a='something' ORDER BY b

然后应将字段 a、b 视为索引

INDEX index_name (a,b)

查尔特指数

如果文本字段(CHAR、VARCHAR)用作较大表(> 5000 条记录)的索引,则应始终定义为 CHAR。例如,如果您有如下字段:

aff_url VARCHAR(255) NOT NULL DEFAULT ''

...

INDEX afiliate_url (aff_url)

为了提高性能,应将此表更改为如下所示

aff_url CHAR(20) NOT NULL DEFAULT ''

...

INDEX afiliate_url (aff_url)

查询

保留字应为大写以提高可读性。此外,尝试在多行中分隔长查询,而简单查询应保留在一行中。例:

SELECT a.field_name1, a.field_name2, COUNT(a.field3) AS cnt, b.*

FROM table1 AS a

LEFT JOIN table2 AS b ON (a.key_field = b.key_field)

RIGHT JOIN table3 AS c ON (a.key_field2 = c.key_field2)

WHERE a.field7 = 'something here' AND b.field9 = '45'

GROUP BY a.field_name1

ORDER BY a.field_name2 DESC, b.field8

HAVING cnt > 5

始终在 WHERE 中转义值,即使值为整数

查询中的 PHP 变量

PHP 变量必须在查询之前定义并转义。

避免:

\(q = "SELECT * FROM users WHERE email='"._escape(\)_POST['email'])."' ";

用:

\(email = _escape(\)_POST['email']);

if (empty(\(email))
{
return false;
}
\)q = "SELECT * FROM users WHERE email='{$email}' ";

附录

PHPMyAdmin

尽量避免使用 PHP 我的管理员创建表,因为它存在默认值问题。它是浏览和简单数据库操作的绝佳产品,但它会让您懒惰,并且您通常会忘记保留表更改和其他更改的历史记录。

参考资料

MySQL 编码标准和命名约定的更多相关文章

  1. javascript编码标准

    前面的话 编码标准是有争议的.几乎每个人都有自己的标准,但对标准应该是什么样的,则似乎很少能达成共识.但编码标准意味着,通过共同语言和一致的结构,把开发人员从无意义的工作中解放出来.允许开发人员把创新 ...

  2. C#编码标准--编码习惯

    C#编码标准--编码习惯 0.  书写程序时的大小写规则: a) 类:PascalCase表示法.如 MyClass b) 枚举值:PascalCase表示法.如 Colors.Red c) 枚举类型 ...

  3. mysql编码的那点事

    Mysql编码问题  在php页面可以向mysql插入英文字符,但就是不能插入中文字符,在cmd客户端也可从插入,这是困扰我两天的问题. 在网上找了很多资料,最终确定了是字符编码这个地方出现了问题,首 ...

  4. Linux(Ubuntu)使用日记------Mysql编码(utf-8)的设置

    Mysq版本:5.7.21 操作系统:Linux(Ubuntu) 整个操作的基本思路如下(包括问题的解决思路,想要直接解决问题的可以先看最后的命令总结) 检查mysql编码 找到Mysql的配置文件 ...

  5. VP9 vs H.265——下一代视频编码标准的王道之争

    目前下一代主流的视频编码标准有 ITU-T VCEG 推出来的 H.265 和 Google 推出 VP9 . H.265 在 H.264 的基础上保留其中的部分技术,并对相关技术加以改进研发而成.新 ...

  6. php mysql 编码问题

    php mysql 编码问题 问题: PHP从数据库中读取数据,并echo出来,数据中文显示正常:但是echo出新定义的中文字符串,新定义的字符串会乱码. 由此可能是数据库中提取出来的中文编码和php ...

  7. Java安全编码标准

    Java安全编码标准 具体参考Rules 输入验证和数据净化(IDS)规则风险评估概要 IDS00-J净化穿越受信边界的非受信数据 IDS01-J验证前标准化字符串 IDS02-J在验证之前标准化路径 ...

  8. 视频基础知识:浅谈视频会议中H.264编码标准的技术发展

    浅谈视频会议中H.264编码标准的技术发展 浅谈视频会议中H.264编码标准的技术发展 数字视频技术广泛应用于通信.计算机.广播电视等领域,带来了会议电视.可视电话及数字电视.媒体存储等一系列应用,促 ...

  9. C# 编码标准(二)

    先八卦一下,昨天写了C# 编码标准(一),得到了@h82258652的补充,感到非常欣慰,一是感觉他的观点扩展了我的视野,丰富了我的看法,所以更坚定了我继续写博客的想法,由于是五笔打字,经常不写东西, ...

  10. 防微杜渐——读《C安全编码标准》

    防微杜渐——读<C安全编码标准> 首先这本书的名字是非常洋气的——<C安全编码标准>.然而映入眼帘的却不仅仅是冷冰冰的编码,还有那一套非常严谨的风险评估标准和问题处理方法.对于 ...

随机推荐

  1. C++ ADL 与 模板

    什么是ADL ADL(Argument Dependent Lookup),参数依赖查找,明确的意思是依赖参数的函数查找,即对于函数调用,不仅会依照常规的名称查找规则,还会在函数参数所在的命名空间内查 ...

  2. codeup之C语言11.1 + C语言11.2 + C语言11.4 + 11.7 + C语言11.8(结构体

    讲真,这几道题可以不做,顶多可以注意下结构体和联合体的区别 Description 完成一个对候选人得票的统计程序.假设有3个候选人,名字分别为Li,Zhang和Fun.使用结构体存储每一个候选人的名 ...

  3. java从小白到老白④

    PS:①小陌笔记中蓝色紫色等一切花哨字体皆用来引入知识点(废话流),可忽略不计 . ②黑字正文小陌竭力向言简意赅靠近再靠近. ③红色字体小陌觉得重要的地方 (3)先执行case语句,后再判断defau ...

  4. 企业AI应用模式解析:从本地部署到混合架构

    在人工智能快速发展的今天,企业如何选择合适的大模型应用方式成为了一个关键问题.本文将详细介绍六种主流的企业AI应用模式,帮助您根据自身需求做出最优选择. 1. 本地部署(On-Premise Depl ...

  5. python3里面比较两个字符串的不同【difflib】

    一.difflib库的用法 a = '/Users/melon/Desktop/odoo14/myaddons/watermark_design/fonts/SimSun.ttf' b = '/Use ...

  6. Burp Suite 企业级深度实战教程

    第一部分:环境搭建与高级配置 1.1 专业版激活与插件生态 # 专业版激活(Linux) java -jar -Xmx2048m burpsuite_pro.jar --activate --acti ...

  7. PRIMPERM - Prime Permutations

    将题目分解成两个部分: 判断素数 如果用暴力筛因子的方法,在 $t \le 10^4,n \le 10^7$ 下肯定是要超时的,所以用了时间和空间都比较廉价的埃氏筛法. 代码: bool f[1000 ...

  8. Android Studio 中 TextView 控件学习

    以下图片都来自于B站视频,仅留作学习记录,方便复习 视频链接 代码练习 <LinearLayout android:layout_width="match_parent" a ...

  9. 做思维导图?chatmoney轻轻松松拿下

    本文由 ChatMoney团队出品 嘿,各位职场朋友们 是不是常常对着密密麻麻的笔记感到焦虑呢? 想整理却无从下手? 别怕,ChatmoneyAI知识库来拯救你的整理困难症啦! 咱们都知道,思维导图是 ...

  10. javacv添加字幕 剧中显示

    介绍 javacv目前不能像ffmpeg那样 直接加载字体文件到视频 参考这里 所以实现流程为:提取帧 -> 转图片 -> 编辑图片增加文字 -> 转回帧 -> 输出视频 上代 ...