美文网首页
SQL规范总结

SQL规范总结

作者: FoxLayla | 来源:发表于2019-04-01 15:33 被阅读0次

SQL规范总结

遵循一定的规范有助于提高代码的可读性和可移植性,对SQL来说规范中最主要的是命名规范和代码规范,这里给出了一些通用的规范,具体应该遵循的规范需要依据项目要求来确定。

命名规范

可用字符

  • 对SQL来说,命名可用的字符包括 A-Z、a-z、0-9 及下划线。

  • 命名时尽量不用数字。

  • 下划线用于分割单词,不要以下划线作为开头或结尾

命名方式

  • 使用英文而非拼音

  • 做到见名知义

  • 使用带有集合意义的词语,使用单数形式

    例如:用 stuff 而不是 employees

  • 表明和列明尽量不要重名

  • 避免通过组合两个表明来命名关系表

大小写规范

  • 数据库名,小写,单词间用下划线分隔
  • 表名,小写,单词间用下划线分隔
  • 列名,小写,单词间用下划线分隔
  • 别名,小驼峰命名法

长度限制

  • 命名尽可能详细准确,但切忌太过冗长
  • 表名、列名尽量限制在30字符以内

单词缩写

  • 谨慎使用缩写

  • 表名超过15字符、列名超过20字符时可以考虑用缩写

  • 获得单词对应的缩写的方法:

    • 查字典
    • 推荐网站:http://shortof.com/
    • 删除除首字母外的元音字符和重复字符
  • 对于主从表,从表从第二个单词开始缩写

其他

  • 外键的命名建议采用“主表名_字段名”的形式

    例如:student_id

  • 表示日期和时间字段建议通过后缀指明该字段精确到什么范围

    例如:birth_date 说明精确到日期

  • 含义为“是否...”的布尔型字段前缀加 is

    例如:is_success、is_active

语句规范

关键字

  • 关键字使用大写形式,以和其他代码区分
  • 尽量使用关键字的全称而非缩写,以增强可读性
SELECT 
    name
FROM
    student;

格式

通过适当的空格、换行和缩进来提高代码的可读性

  • 可以添加空格的地方:

    • 运算符两侧
    • 逗号后
    SELECT
      name, age
    FROM
      student
    WHERE
      age > 18
    
  • 可以添加换行的地方:

    • ANDOR关键字另起一行
    • 分号后另起一行
    • 每个关键字的定义之后另起一行
    SELECT
      name, age
    FROM
      student
    WHERE
      name LIKE '王%'
      AND age > 18;
    
  • 可以添加缩进的地方:

    • 联结查询应缩进
    • 子查询应缩进
    • 对字段的约束应缩进
    SELECT 
        name, SUM(score) AS sum
    FROM
        student
            INNER JOIN
        score ON student.id = student_id
    GROUP BY student_id;
    

简洁性

保持代码的简洁性,去掉不必要的SQL语句

  • 能用BETWEEN指定查询条件的地方不要用AND加多个子句的形式
  • 能用IN指定查询条件的地方不要用OR加多个子句的形式
  • 尽量少使用UNION和临时表
-- 正例
SELECT
    name
FROM
    student
WHERE
    age BETWEEN 18 AND 22;
    
-- 反例
SELECT
    name
FROM
    student
WHERE
    age > 18 
    AND age < 22;

其他

  • 使用标准的SQL函数来保证代码的可移植性
  • 在必要的地方添加注释,不要滥用注释

创建表的规范

数据类型

  • 使用SQL标准数据类型以保证可移植性

  • 仅在必要的时候使用REALFLOAT类型,尽量使用NUMERICDECIMAL类型

    因为FLOAT型存在圆整错误

默认值

  • 默认值应和字段类型相同

    例如:对于DOUBLE类型的字段,其默认值应指定为0.0而非0

  • 默认值应定义在数据类型之后、NOT NULL约束之前

    例如:sex CHAR(1) DEFAULT '男' NOT NULL

  • 指定为键的字段的值应具有唯一性
  • 键字段在各表中的类型应该保持一致,且发生改变的可能性较低
  • 尽量使键为简单值,必要情况下也可以使用复合值

约束

  • 表应该至少拥有一个键

  • UNIQUEPRIMARY KEYFOREIGN KEY外应给约束定义名称

  • 约束的定义顺序:

    • 主键约束应定义在CREATE TABLE语句之后

    • 各列约束应定义在列的下方,使用缩进对齐

    • 涉及多个列的约束应尽量放置在涉及到的列的附近,如果不行的话放在表的创建的最后

    • 对整个表的约束应该放在表的创建的最后

    • 按照字母表的顺序排列约束

      例如,ON DELETE约束应该在ON UPDATE约束之前

  • 定义必要的检查约束:

    • 当字符串类型的字段值格式已知时,使用LIKESIMILAR TO约束来检查
    • 当数字类型的字段值范围已知时,利用CHECK约束语句来检查
CREATE TABLE student (
    PRIMARY KEY (id),
    id INT,
    name VARCHAR(100) NOT NULL,
    birth_date DATE,
    sex CHAR(1) NOT NULL
        CONSTRAINT sex_value
        CHECK (sex IN ('男', '女'))
);

参考

相关文章

  • SQL规范总结

    SQL规范总结 遵循一定的规范有助于提高代码的可读性和可移植性,对SQL来说规范中最主要的是命名规范和代码规范,这...

  • Mysql 规范

    Mysql 规范 数据库命名规范总结 数据库基本设计规范 索引设计规范 数据库字段设计规范 数据库SQL开发规范 ...

  • SQL语句规范总结

    SQL语句规范第一条(建库): CREATE DATABASE oldboy CHARSET utf8mb4 关键...

  • SQL 规范

    适用场景:并发量大、数据量大的互联网业务 一、 基础规范 1. 推荐使用InnoDB存储引擎 支持事务、行级锁、并...

  • sql规范

    一、基础规范 (1)必须使用InnoDB存储引擎 支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利...

  • SQL 规范

    基础规范 表存储引擎必须使用InnoDB MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)...

  • SQL规范

    一般原则 SQL不区分大小写。但是我们在写代码时应该保持风格的统一。建议保留字大写。 灵活使用空格和缩进来增强可读...

  • SQL规范

    首先是命名的规范 可以使用的字符:数据库、表、字段等所有名称的可用字符范围为:A-Z,a-z,0-9和_下划线。数...

  • SQL 规范

    一、命名规范 确保名称是唯一的,并且不作为保留关键字存在 。 名称必须以字母开头,并且不得以下划线结尾。 名称中只...

  • 数据库开发设计规范

    数据库开发设计规范 命名规范 基础规范 字段设计规范: 索引规范 索引禁忌 SQL设计 操作规范: 注意事项:

网友评论

      本文标题:SQL规范总结

      本文链接:https://www.haomeiwen.com/subject/obpvbqtx.html