单双引号
单引号、双引号在不同的数据库管理系统中,有不同的含义和用途。 它们在SQL语法中通常用于字符串、标识符(如表名、列名)以及字段分隔符等,但不同的数据库可能会在这方面有所不同。
- 单引号 (’) 单引号通常用于表示字符串文字(literal)。在绝大多数数据库中,单引号是字符串的标准界定符。
MySQL、SQL Server、PostgreSQL、Oracle 等:单引号用于包围字符串字面量。 示例:
SELECT * FROM users WHERE username = 'john_doe';
- 双引号 (") 双引号的用途在不同数据库中有所不同,通常与标识符(如列名、表名)相关,但在某些数据库中,它的行为是不同的。
在不同数据库中的含义:
MySQL:
- 双引号:默认情况下,MySQL 使用 反引号()来包围标识符(如表名、列名等)。但如果启用了 ANSI_QUOTES` 模式,那么 双引号 可以用来标识标识符。
- 反引号(`):用于包围标识符(如列名、表名、数据库名),以避免与保留字冲突。
SELECT `select`, `from` FROM `order`;
- SQL Server:
- 双引号:SQL Server 也支持使用双引号来包围标识符(如表名和列名),但默认情况下,标识符使用 方括号 ,而不是双引号。
SELECT "column_name" FROM "table_name";
但 SQL Server 默认情况下不会识别双引号作为标识符的界定符,除非启用了 QUOTED_IDENTIFIER 设置。
SET QUOTED_IDENTIFIER ON;
- PostgreSQL:
- 双引号:在 PostgreSQL 中,双引号用于区分标识符(如列名、表名等)。如果标识符包含大写字母或与SQL关键字冲突,可以使用双引号进行转义。
SELECT "Column Name" FROM "My Table";
PostgreSQL 是大小写敏感的,因此 “MyColumn” 和 “mycolumn” 是不同的标识符。
- Oracle:
- 双引号:在 Oracle 中,双引号用于区分标识符。与 PostgreSQL 相似,Oracle 允许标识符包含空格或保留字,并且会区分大小写。
SELECT "First Name" FROM "Employee Data";