Skip to content

MySQL教程 - 3 SQL语法规则

SQL 语法有一系列规则和规范,这些规则帮助确保 SQL 代码的正确性和可读性。以下是一些关键的 SQL 语法规则。

3.1 SQL中的注释

注释主要是用来解释 SQL 语句的作用,注释不会被 SQL 解释器执行,主要用于提高代码的可读性和可维护性。

在 SQL 中,可以使用以下两种方式来添加注释:

  • 单行注释
  • 多行注释

1 单行注释

使用 -- 来表示单行注释。-- 后面的内容会被认为是注释,直到行末。

举个栗子:

sql
-- 这是一条单行注释
SELECT * FROM employee;

单行注释:适用于对某一行或单个 SQL 语句进行简单的注释。

2 多行注释

使用 /* */ 来表示多行注释。/**/ 之间的内容会被认为是注释,可以跨越多行。

举个栗子:

sql
/*
这是一个多行注释
可以跨越多行
*/
SELECT * FROM employee;

多行注释:适用于对多行代码进行详细的说明或注释掉一大块代码。

3 井号注释

在 MySQL 中,# 后面的内容会被认为是注释,直到行末。

举个栗子:

sql
# 这是一个单行注释
SELECT * FROM employee;

虽然 # 可以用于注释,但它不是所有 SQL 数据库都支持的标准注释方式。对于更广泛的兼容性,建议使用 -- 作为单行注释。

3.2 其他规则

1 命名规则

命名规则就是给数据库中表、列、索引等起名字的规则。

一般来说,名称可以包含字母、数字和下划线,但不能以数字开头,且不能是 SQL 中的保留字。多个单词组成的名称,通常可使用下划线分隔,如 customer_order

例如:my_database是一个有效的数据库名称,而 1database 则无效。


保留字在 SQL 中有特殊的含义和作用,我们不能使用保留字来作为库、表、列等名称,但是名称中可以包含保留字。

以下是一些常见的 SQL 保留字:

保留字保留字保留字保留字保留字
SELECTINSERTUPDATEDELETECREATE
DROPALTERTRUNCATEFROMWHERE
JOINORDERGROUPHAVINGDISTINCT
UNIONALLANDORNOT
INLIKEISNULLTRUE
FALSEBETWEENEXISTSCASEWHEN
THENENDASONUSING
INTOVALUESSETPRIMARYFOREIGN
KEYCHECKDEFAULTCONSTRAINTINDEX
VIEWDATABASETABLEINNEROUTER
LEFTRIGHTFULLCROSSNATURAL
IFELSEBEGINENDTRANSACTION
COMMITROLLBACKSAVEPOINTGRANTREVOKE
DENYEXECPROCEDUREFUNCTIONDECLARE
CURSORFETCHOPENCLOSELOOP
BREAKCONTINUERETURNCASEEXCEPTION

注意:不同的数据库存在差异,也不用特意去记,你以后会用到上面的保留字,自然不能用来做标识符。

2 语句结束符

SQL语句通常以分号(;)作为结束符,用于标识一个 SQL 语句的结束。

举个栗子:

sql
# 一条sql语句
SELECT * FROM employee;

# 又一条sql语句
INSERT INTO employee (name, email) VALUES ('foooor', 'foooor1024@qq.com');

上面的语句先不用理解作用。

3 大小写不敏感

SQL对大小写不敏感,这意味着在SQL语句中使用的关键字(例如SELECT、FROM等)、表名、列名和数据值的大小写并不重要。例如,以下两个SQL语句是等价的:

sql
SELECT * FROM Employee WHERE Name = 'Germany';
# 等价于
select * from employee where name = 'Germany';

上面的语句先不用理解作用。

4 字符串

SQL 中的字符串用于表示文本数据,在 SQL 语句中需要用单引号(')括起来。例如:'Hello World'

举个栗子:

sql
INSERT INTO messages (content) VALUES ('Hello, World');

上面的语句先不用理解作用。


如果字符串中包含单引号呢?那么可以使用 \ 进行转义:

sql
INSERT INTO messages (content) VALUES ('Hello, it\'s nice to meet you!');

5 反引号

如果 SQL 语句中的标识符确实用到了 SQL 的保留字,那么可以使用反引号(`)(英文模式下,键盘上1左边的键)来避免冲突。

举个栗子:

sql
CREATE TABLE `select` (
    `student-id` INT NOT NULL,
    `order` INT NOT NULL,
    `group` VARCHAR(100) NOT NULL
);

上面是一个创建表的语句,先不用理解。

上面的列子中 selectordergroup 都是 SQL 的保留关键字,student-id 包含特殊字符,但通过反引号包裹,它们可以正常作为表名和列名使用。虽然反引号能解决问题,但是还是推荐使用简单标准的命名方式

反引号是 MySQL 的特定语法,其他数据库(如 SQL Server、PostgreSQL)中通常使用双引号(")作为引用标识符的符号。