Разные базы данных используют разные кавычки?

Например, имя таблицы цитирования mysql, используя

SELECT * FROM `table_name`;

обратите внимание на `

Использует ли другая база данных когда-либо другой символ для цитирования имени таблицы

3 ответа

Решение

Такое использование кавычек называется идентификаторами с разделителями. Это важная часть SQL, потому что иначе вы не можете использовать идентификаторы (например, имена таблиц и столбцов), которые:

  • Включить пробел: "моя таблица"
  • Включите специальные символы и знаки препинания: "моя таблица"
  • Включите международные символы: "私のテーブル"
  • Чувствительны к регистру: "MyTable"
  • Подберите ключевые слова SQL: "таблица"

Стандартный язык SQL использует двойные кавычки для идентификаторов с разделителями:

SELECT * FROM "my table";

MySQL по умолчанию использует обратные кавычки. MySQL может использовать стандартные двойные кавычки:

SELECT * FROM `my table`;
SET GLOBAL SQL_MODE=ANSI_QUOTES;
SELECT * FROM "my table";

Microsoft SQL Server использует скобки по умолчанию. Microsoft может использовать стандартные двойные кавычки:

SELECT * FROM [my table];
SET QUOTED_IDENTIFIER ON;
SELECT * FROM "my table";

InterBase и Firebird должны установить диалект SQL на 3 для поддержки идентификаторов с разделителями.

Большинство других брендов базы данных используют двойные кавычки правильно.

SQL Server использует [квадратные скобки] или "двойные кавычки", когда опция QUOTED_IDENTIFIER включена.

Я считаю, что двойные кавычки в стандарте SQL-92.

Кратко да.

Стандарт SQL использует двойные кавычки вокруг имени для обозначения "идентификатора с разделителями".

Informix по умолчанию использует одинарные и двойные кавычки взаимозаменяемо для обозначения символьных строк. Однако, установив переменную среды DELIMIDENT, вы можете включить стандартное поведение SQL - одинарные кавычки вокруг строк и двойные кавычки вокруг идентификаторов с разделителями.

Другие люди перечислили другие поведения для других СУБД; Мне не нужно повторять это.

Другие вопросы по тегам