SQL 中的中括号 [ ]、双引号 “ “、反引号 ` `:SQL Server、Oracle、MySQL三大数据库标识符 定界符 详解

在日常的数据库开发中,我们经常会看到一些 SQL 语句中包含 中括号 []、双引号 ""、反引号 ````` 这样的符号。很多初学者会疑惑:这些符号是干什么用的?可不可以省略?不同数据库是不是一样的规则?

数据库 定界符形式 是否区分大小写(默认) 示例
SQL Server [标识符] [name][order]
Oracle "标识符" 区分大小写 "Name",调用时也要写 "Name"
MySQL 标识符 否(多数配置) selectuser name

1 什么是"标识符"?

在 SQL 中,标识符(identifier) 就是我们给数据库对象起的"名字",比如:

  • 表名(如 Student

  • 字段名(如 namescore

  • 数据库名、视图名、索引名等

2、SQL Server: 定界符使用中括号 []

SQL Server 中,中括号 用于 界定标识符,它用于界定表名、列名、数据库名等标识符,主要解决以下问题:

  1. 避免保留字冲突 :如 selectorder 等字段名。

  2. 支持特殊字符或空格 :如 user name出生日期

  3. 提高兼容性与容错性:特别在复杂的 SQL 语句中。

sql 复制代码
SELECT [order] FROM [select];-- 合法
SELECT [user name] FROM [用户信息];-- 合法
SELECT [order] FROM [select]; -- 合法
SELECT [user name], [出生日期] FROM [用户信息];-- 合法

中括号并非必须,只有在 标识符 为 保留字 或包含特殊字符时才需要。
-- 推荐写法(更稳健)
SELECT [name], [score] FROM [ScoreInfo];

-- 简写写法(字段名安全时可省略中括号)
SELECT name, score FROM ScoreInfo;

3、Oracle: 定界符使用双引号 "",区分大小写

Oracle 中,标识符默认为大写,使用双引号时可以保留大小写,但查询时必须严格匹配:

sql 复制代码
CREATE TABLE "Student" (
  "Id" NUMBER,
  "Name" VARCHAR2(50)
);
注意:查询时要区分大小写。

4、MySQL: 定界符使用反引号 ,通常不区分大小写

MySQL 使用反引号解决标识符冲突,通常不区分大小写,但在 Linux 系统上,表名可能区分大小写:

sql 复制代码
CREATE TABLE `select` (
  `id` INT,
  `value` INT
);

5、编写 SQL 的建议

  1. 跨平台开发:避免使用保留字、空格、中文、特殊符号作为字段名。

  2. SQL Server 开发:推荐在字段名和表名中使用中括号,增加健壮性。

  3. Oracle 开发:尽量不要使用双引号定义字段名,避免大小写混乱。

  4. MySQL 开发:尽量使用小写字母命名,必要时用反引号包裹保留字。

相关推荐
吴声子夜歌11 小时前
SQL经典实例——元数据查询
数据库·sql
睡不醒男孩03082312 小时前
生产环境故障销账:PostgreSQL 突发连接数暴涨与死锁,如何利用 CLup 秒级定位与解锁?
运维·数据库
2601_9620549512 小时前
终端与IDE形态的vibe coding实测:两款AI编程工具迭代能力对比
数据库·ide·ai编程
万岳科技12 小时前
教育培训系统开发流程详解:平台建设关键环节解析
数据库·后端·学习
Nturmoils12 小时前
线上修一批脏数据,先别急着全量重来
数据库·后端
吴声子夜歌12 小时前
SQL经典实例——处理字符串
数据库·sql
睡不醒男孩03082313 小时前
PostgreSQL 数据库运维转型:从传统模式到 CLup 平台的 25 个核心 FAQ
运维·数据库·postgresql
凡人叶枫13 小时前
Effective C++ 条款40:明智而审慎地使用多重继承
java·数据库·c++·嵌入式开发·effective c++
至此流年莫相忘13 小时前
Spring 依赖注入三剑客:@Autowired、@Resource 与 @RequiredArgsConstructor 深度对比与实战指南
java·数据库·spring
Rain50913 小时前
2.2 数据基础:数据库集成与 ORM(TypeORM / Prisma)
数据库·人工智能·ai·数据分析·node.js·自动化·ai编程