哪些单词不能作mysql表名或字段名

陶益 发布于 2024/4/24 22:58

MySQL中,以下类型的单词或字符不应被用作表名或字段名:

  1. MySQL保留字:这些是MySQL用于特定语法目的的关键词,如SELECT, FROM, WHERE, ORDER BY, CREATE, TABLE, INDEX, KEY, ALTER, DROP, VIEW, JOIN, GROUP BY, HAVING, ASC, DESC, UNION, DISTINCT, COUNT, AS, ON, SET, INSERT, UPDATE, DELETE, TRUNCATE, PRIMARY, FOREIGN, REFERENCES, AUTO_INCREMENT, DEFAULT, NULL, NOT NULL, INNER, OUTER, LEFT, RIGHT, FULL, CROSS, CASE, WHEN, THEN, ELSE, END, LIMIT, OFFSET, ESCAPE, BINARY, UNIQUE, TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, DATE, TIME, TIMESTAMP, DATETIME, YEAR, CHAR, VARCHAR, BLOB, TEXT, ENUM, BIT, JSON, BOOLEAN, GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION, ST_AsText, ST_GeomFromText, ST_Intersects, 等等。完整的保留字列表可以在MySQL官方文档中找到。

    如果必须使用保留字作为表名或字段名,必须使用反引号(`)将它们包围起来,例如:

    Sql1CREATE TABLE `select` (2  `from` INT NOT NULL,3  ...4);
  2. 特殊字符:包括但不限于空格、制表符、换行符、井号 (#)、美元符号 ($)、百分号 (%)、单引号 (')、双引号 (")、反斜杠 (\)、正斜杠 (/)、冒号 (:)、分号 (;)、逗号 (,)、感叹号 (!)、问号 (?)、波浪线 (~)、星号 (*)、尖括号 (< >)、方括号 ([ ])、等于号 (=)、加号 (+)、减号 (-)、乘号 (*)、除号 (/)、取余号 (%)、管道符 (|)、与 (&)、非 (^)、逻辑与 (&&)、逻辑或 (||)、双与 (AND)、双或 (OR)、异或 (XOR)、左移 (<<)、右移 (>>)、圆括号 (( ))、花括号 ({ })、方括号 ([ ])、反引号 ( ``)、@符号 (@)、#号 (#)、$符号 ($`)等。

    使用特殊字符可能导致解析错误或需要额外的转义处理,因此应避免在表名或字段名中直接使用它们。如果确实需要包含类似字符,通常会通过编码(如使用下划线 _ 替代空格)或使用反引号包围来规避问题。

  3. 可能导致混淆或解析困难的字符序列:虽然不是严格意义上的禁用字符,但某些组合可能会引起解析问题或者与SQL语法冲突。例如,使用点号 (.) 通常用于表示数据库名与表名之间的层级关系,因此在表名或字段名中直接使用可能会引发误解。类似的,两个连续的下划线 (__) 在某些上下文中可能被视为占位符或有特殊含义。

    为了避免潜在的解析问题和维护性问题,应避免在表名和字段名中使用可能导致混淆或解析困难的字符序列。

  4. 不符合命名规范的字符:尽管MySQL对表名和字段名的字符集支持广泛,但实践中应遵循一定的命名规范,如避免使用全角字符、避免仅使用数字开头(可能导致语法解析错误)、避免使用难以阅读或理解的字符组合等。

总的来说,表名和字段名应选择有意义的单词或短语,使用小写字母、下划线 (_) 分隔单词,并避免上述提到的各种限制。遵循这些原则可以确保SQL语句的可读性和可维护性,减少与MySQL解析器潜在的冲突,并提升数据库管理的便利性。如果您需要确切的保留字列表,建议查阅最新的MySQL官方文档。