# MySQL教程 - 3 SQL语法规则
SQL 语法有一系列规则和规范,这些规则帮助确保 SQL 代码的正确性和可读性。以下是一些关键的 SQL 语法规则。
# 3.1 SQL中的注释
注释主要是用来解释 SQL 语句的作用,注释不会被 SQL 解释器执行,主要用于提高代码的可读性和可维护性。
在 SQL 中,可以使用以下两种方式来添加注释:
- 单行注释
- 多行注释
# 1 单行注释
使用 --
来表示单行注释。--
后面的内容会被认为是注释,直到行末。
举个栗子:
-- 这是一条单行注释
SELECT * FROM employee;
2
单行注释:适用于对某一行或单个 SQL 语句进行简单的注释。
# 2 多行注释
使用 /* */
来表示多行注释。/*
和 */
之间的内容会被认为是注释,可以跨越多行。
举个栗子:
/*
这是一个多行注释
可以跨越多行
*/
SELECT * FROM employee;
2
3
4
5
多行注释:适用于对多行代码进行详细的说明或注释掉一大块代码。
# 3 井号注释
在 MySQL 中,#
后面的内容会被认为是注释,直到行末。
举个栗子:
# 这是一个单行注释
SELECT * FROM employee;
2
虽然 #
可以用于注释,但它不是所有 SQL 数据库都支持的标准注释方式。对于更广泛的兼容性,建议使用 --
作为单行注释。
# 3.2 其他规则
# 1 命名规则
命名规则就是给数据库中表、列、索引等起名字的规则。
一般来说,名称可以包含字母、数字和下划线,但不能以数字开头,且不能是 SQL 中的保留字。多个单词组成的名称,通常可使用下划线分隔,如 customer_order
。
例如:my_database
是一个有效的数据库名称,而 1database
则无效。
保留字在 SQL 中有特殊的含义和作用,我们不能使用保留字来作为库、表、列等名称,但是名称中可以包含保留字。
以下是一些常见的 SQL 保留字:
保留字 | 保留字 | 保留字 | 保留字 | 保留字 |
---|---|---|---|---|
SELECT | INSERT | UPDATE | DELETE | CREATE |
DROP | ALTER | TRUNCATE | FROM | WHERE |
JOIN | ORDER | GROUP | HAVING | DISTINCT |
UNION | ALL | AND | OR | NOT |
IN | LIKE | IS | NULL | TRUE |
FALSE | BETWEEN | EXISTS | CASE | WHEN |
THEN | END | AS | ON | USING |
INTO | VALUES | SET | PRIMARY | FOREIGN |
KEY | CHECK | DEFAULT | CONSTRAINT | INDEX |
VIEW | DATABASE | TABLE | INNER | OUTER |
LEFT | RIGHT | FULL | CROSS | NATURAL |
IF | ELSE | BEGIN | END | TRANSACTION |
COMMIT | ROLLBACK | SAVEPOINT | GRANT | REVOKE |
DENY | EXEC | PROCEDURE | FUNCTION | DECLARE |
CURSOR | FETCH | OPEN | CLOSE | LOOP |
BREAK | CONTINUE | RETURN | CASE | EXCEPTION |
注意:不同的数据库存在差异,也不用特意去记,你以后会用到上面的保留字,自然不能用来做标识符。
# 2 语句结束符
SQL语句通常以分号(;
)作为结束符,用于标识一个 SQL 语句的结束。
举个栗子:
# 一条sql语句
SELECT * FROM employee;
# 又一条sql语句
INSERT INTO employee (name, email) VALUES ('foooor', 'foooor1024@qq.com');
2
3
4
5
上面的语句先不用理解作用。
# 3 大小写不敏感
SQL对大小写不敏感,这意味着在SQL语句中使用的关键字(例如SELECT、FROM等)、表名、列名和数据值的大小写并不重要。例如,以下两个SQL语句是等价的:
SELECT * FROM Employee WHERE Name = 'Germany';
# 等价于
select * from employee where name = 'Germany';
2
3
上面的语句先不用理解作用。
# 4 字符串
SQL 中的字符串用于表示文本数据,在 SQL 语句中需要用单引号('
)括起来。例如:'Hello World'
。
举个栗子:
INSERT INTO messages (content) VALUES ('Hello, World');
上面的语句先不用理解作用。
如果字符串中包含单引号呢?那么可以使用 \
进行转义:
INSERT INTO messages (content) VALUES ('Hello, it\'s nice to meet you!');
# 5 反引号
如果 SQL 语句中的标识符确实用到了 SQL 的保留字,那么可以使用反引号(`)(英文模式下,键盘上1左边的键)来避免冲突。
举个栗子:
CREATE TABLE `select` (
`student-id` INT NOT NULL,
`order` INT NOT NULL,
`group` VARCHAR(100) NOT NULL
);
2
3
4
5
上面是一个创建表的语句,先不用理解。
上面的列子中 select
、order
和 group
都是 SQL 的保留关键字,student-id
包含特殊字符,但通过反引号包裹,它们可以正常作为表名和列名使用。虽然反引号能解决问题,但是还是推荐使用简单标准的命名方式。
反引号是 MySQL 的特定语法,其他数据库(如 SQL Server、PostgreSQL)中通常使用双引号("
)作为引用标识符的符号。