首页 > 数据库 >MySQL 编码标准和命名约定

MySQL 编码标准和命名约定

时间:2023-02-12 16:56:01浏览次数:62  
标签:VARCHAR 编码标准 约定 email DEFAULT url MySQL NULL aff

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 我的管理员创建表,因为它存在默认值问题。它是浏览和简单数据库操作的绝佳产品,但它会让您懒惰,并且您通常会忘记保留表更改和其他更改的历史记录。

参考资料

标签:VARCHAR,编码标准,约定,email,DEFAULT,url,MySQL,NULL,aff
From: https://www.cnblogs.com/guangzan/p/16115645.html

相关文章

  • linux环境千万数据导入mysql遭遇问题
    看黑马mysql视频有数据是一千万条数据,分批使用loadfile方式导入数据库表的时候出现了导入失败问题表结构CREATETABLE`tb_sku`(`id`int(11)NOTNULLAUTO_INC......
  • maven的java工程取mysql数据库数据
    maven的java工程取mysql数据库数据maven的java工程取mysql数据库数据创建User实体类: publicclassUser{privateintid;privateStringNAME;@Ov......
  • MySQL——优化(二):索引创建和失效
    一、创建索引的原则1、建议创建索引的场景where语句的查询条件select语句,对于某些字段经常作为where语句的查询条件;Update/delete语句的where条件频繁使用时......
  • 在macos系统终端中使用mysql
    1.启动/usr/local/mysql/bin/mysql-uroot-p2.配置mysql环境变量使用如下命令:sudoln-s/usr/local/mysql/bin/mysql/usr/local/bin而后可通过以下命令运行my......
  • maven工程运行环境修改 maven的java工程取mysql数据库数据
    maven工程运行环境修改 <plugins><plugin><!--https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin-......
  • sqlalchemy_python_mysql
    /Users/song/Code/sqlalchemy_mysql_learn00/python_sqlalchemy_mysql/query_table_data.py#!/usr/bin/envpython3#-*-coding:utf-8-*-'''@File:query_table_d......
  • 5、MySQL中的锁
    1.6. MySQL中的锁InnoDB中锁非常多,总的来说,可以如下分类:这些锁都是做什么的?具体含义是什么?我们现在来一一学习。1.6.1.解决并发事务问题我们已经知道事务并发执行时可......
  • MySQL - 进阶
    1、存储引擎MySQL体系结构:连接层最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所......
  • 4.docker安装mysql
    下载mysql镜像打开docker镜像仓库https://hub.docker.com   我们下载官方镜像,点击打开   可以看到tags有很多不通版本的mysql   比如我想安装5.7......
  • MySQL主从复制
    原理配置第一步:准备主库以及从库,然后开放指定端口或者直接关闭防火墙 第二步:主库配置binlog-ignore-db=数据库名字:代表忽略对某数据库的复制binlog-do-db=数据......