SQL语言的规则与规范



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、SQL概述

1、SQL背景知识

  • 1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰。但在这片浩荡的波动里,有一门技术从未消失,甚至“老当益壮”,那就是 SQL。

  • 45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长了。

  • 不论是前端工程师,还是后端算法工程师,都一定会和数据打交道,都需要了解如何又快又准确地提取自己想要的数据。更别提数据分析师了,他们的工作就是和数据打交道,整理不同的报告,以便指导业务决策。

  • SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言,与数据直接打交道,由IBM上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准,先后有SQL-86SQL-89SQL-92SQL-99等标准。

  • SQL 有两个重要的标准,分别是 SQL92 和 SQL99,它们分别代表了 92 年和 99 年颁布的 SQL 标准,我们今天使用的 SQL 语言依然遵循这些标准。

  • 不同的数据库生产厂商都支持SQL语句,但都有特有内容。

在这里插入图片描述

2、SQL语言排行榜

自从 SQL 加入了 TIOBE 编程语言排行榜,就一直保持在 Top 10。
在这里插入图片描述

3、SQL 分类

SQL语言在功能上主要分为如下3大类:

  • DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。

    • 主要的语句关键字包括CREATEDROPALTER等。
  • DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。

    • 主要的语句关键字包括INSERTDELETEUPDATESELECT等。
    • SELECT是SQL语言的基础,最为重要。
  • DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。

    • 主要的语句关键字包括GRANTREVOKECOMMITROLLBACKSAVEPOINT等。

因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。

还有单独将COMMITROLLBACK 取出来称为TCL (Transaction Control Language,事务控制语言)。

二、SQL语言的规则与规范

1、基本规则

  • SQL 可以写成一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
  • 每条命令以 ; 或 \g 或 \G 结束
  • 关键字不能被缩写也不能分行
  • 关于标点符号
    • 必须保证所有的()、单引号、双引号是成对结束的
    • 必须使用英文状态下的半角输入方式
    • 字符串型和日期时间类型的数据可以使用单引号(’ ')表示
    • 列的别名,尽量使用双引号(" "),而且不建议省略as

2、SQL大小写规范 (建议遵守)

  • MySQL 在 Windows 环境下是大小写不敏感的
  • MySQL 在 Linux 环境下是大小写敏感的
    • 数据库名、表名、表的别名、变量名是严格区分大小写的
    • 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。
  • 推荐采用统一的书写规范:
    • 数据库名、表名、表别名、字段名、字段别名等都小写
    • SQL 关键字、函数名、绑定变量等都大写

3、注 释

可以使用如下格式的注释结构

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字  */

4、命名规则(暂时了解)

  • 数据库、表名不得超过30个字符,变量名限制为29个
  • 必须只能包含 A–Z, a–z, 0–9, _共63个字符
  • 数据库名、表名、字段名等对象名中间不要包含空格
  • 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
  • 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
  • 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了

举例:

# 以下两句是一样的,不区分大小写
show databases;
SHOW DATABASES;

#创建表格
#create table student info(...); #表名错误,因为表名有空格
create table student_info(...); 

#其中order使用``飘号,因为order和系统关键字或系统函数名等预定义标识符重名了
CREATE TABLE `order`(
    id INT,
    lname VARCHAR(20)
);

select id as "编号", `name` as "姓名" from t_stu; #起别名时,as都可以省略
select id as 编号, `name` as 姓名 from t_stu; #如果字段别名中没有空格,那么可以省略""
select id as 编 号, `name` as 姓 名 from t_stu; #错误,如果字段别名中有空格,那么不能省略""

5、数据导入指令

在命令行客户端登录mysql,使用source指令导入

mysql> source d:\mysqldb.sql
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id    | int(6)      | NO   | PRI | 0       |       |
| first_name     | varchar(20) | YES  |     | NULL    |       |
| last_name      | varchar(25) | NO   |     | NULL    |       |
| email          | varchar(25) | NO   | UNI | NULL    |       |
| phone_number   | varchar(20) | YES  |     | NULL    |       |
| hire_date      | date        | NO   |     | NULL    |       |
| job_id         | varchar(10) | NO   | MUL | NULL    |       |
| salary         | double(8,2) | YES  |     | NULL    |       |
| commission_pct | double(2,2) | YES  |     | NULL    |       |
| manager_id     | int(6)      | YES  | MUL | NULL    |       |
| department_id  | int(4)      | YES  | MUL | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
  • 48
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 47
    评论
本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则 进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以 及其性能影响讨论,非常便于实践,为你的实际工作提出了具体建议。本书 适合SQL数据库开发者、软件架构师,也适合DBA,尤其是数据库应用维护人 员阅读。 本书目录 前言 1 制定计划:为性能而设计 数据的关系视图 规范化的重要性 有值、无值、空值 限用Boolean型字段 理解子类型(Subtype) 约束应明确声明 过于灵活的危险性 历史数据的难题 设计与性能 处理流程 数据集中化(Centralizing) 系统复杂性 小结 2 发动战争:高效访问数据库 查询的识别 保持数据库连接稳定 战略优先于战术 先定义问题,再解决问题 保持数据库Schema稳定 直接操作实际数据 用SQL处理集合 动作丰富的SQL语句 充分利用每次数据库访问 接近DBMS核心 只做必须做的 sQL语句反映业务逻辑 把逻辑放到查询中 一次完成多个更新 慎用自定义函数 简洁的SQL SQL的进攻式编程 精明地使用异常(Exceptions) 3 战术部署:建立索引 找到“切入点” 索引与目录 让索引发挥作用 函数和类型转换对索引的影响 索引与外键 同一字段,多个索引 系统生成键 索引访问的不同特点 4 机动灵活:思考SQL语句 SQL的本质 掌握SQL艺术的五大要素 过滤 5 了如指掌:理解物理实现 物理结构的类型 冲突的目标 把索引当成数据仓库 记录强制排序 数据自动分组(Grouping) 分区是双刃剑 分区与数据分布 数据分区的最佳方法 预连接表 神圣的简单性 6 锦囊妙计:认识经典SQL模式 小结果集,直接条件 小结果集,间接条件 多个宽泛条件的交集 多个间接宽泛条件的交集 大结果集 基于一个表的自连接 通过聚合获得结果集 基于日期的简单搜索或范围搜索 结果集和别的数据存在与否有关 7 变换战术:处理层次结构 小结果集,直接条件 小结果集,间接条件 多个宽泛条件的交集 多个间接宽泛条件的交集 大结果集 基于一个表的自连接 通过聚合获得结果集 基于日期的简单搜索或范围搜索 结果集和别的数据存在与否有关 8 孰优孰劣:认识困难,处理困难 看似高效的查询条件 抽象层 分布式系统 动态定义的搜索条件 9 多条战线:处理并发 数据库引擎作为服务提供者 并发修改数据 10 集中兵力:应付大数据量 增长的数据量 数据仓库 11 精于计谋:挽救响应时间 数据的行列转换 基于变量列表的查询 基于范围的聚合 一般规则,最后使用 查询与列表中多个项目相符的记录 最佳匹配查询 优化器指令 12 明察秋毫:监控性能 数据库速度缓慢 服务器负载因素 何谓“性能优良” 从业务任务角度思考 执行计划 合理运用执行计划 总结:影响性能的重要因素 Photo Credits 索引
SQL(Structured Query Language)是用于处理关系型数据库的编程语言。华为在其SQL编程语言规范中,提供了一套指导规则和标准,以确保在编写SQL代码时的一致性和可靠性。 首先,华为的SQL编程语言规范涵盖了SQL语法的用法和限制。这些规范定义了如何编写SQL查询,更新和删除语句,包括语句的结构和关键字的使用方式。这有助于开发人员更好地理解SQL语法,减少语法错误和歧义。 其次,规范还提供了对SQL数据类型和表结构的约定。这些约定可以帮助开发人员在设计数据库时选择适当的数据类型,确保数据的完整性和一致性。 此外,该规范还涉及到SQL查询性能的优化技巧。通过遵循规范中的最佳实践,开发人员可以优化查询的执行计划,提高查询速度和性能。规范中还包括了如何创建和使用索引、优化查询语句等内容。 另外,该规范还包括了对SQL代码编写风格的要求。规范中可能包含对代码缩进、命名规范、注释等方面的建议,以确保代码的可读性和可维护性,降低代码的复杂性和错误率。 最后,规范还可能包含对异常处理和安全性的要求。开发人员需要遵循规范中关于处理异常情况和保护数据安全的建议,以保证系统的稳定性和安全性。 综上所述,华为的SQL编程语言规范是一套指导性的标准,帮助开发人员编写合规、高效、可读性强的SQL代码。遵循该规范可以提高开发效率、降低错误发生率,并且促进团队之间的合作和交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_GGBond_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值