2010-01-02 3 views

ответ

107

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

Придерживайтесь использования одинарных кавычек.

Это основное использование в любом случае. Вы можете использовать одинарные кавычки для псевдонима столбца, где вы хотите, чтобы имя столбца, которое вы ссылаетесь в коде приложения, было чем-то иным, чем то, что фактически вызывается в базе данных. Например: PRODUCT.id будет более читаемым, как product_id, поэтому можно использовать одно из следующих действий:

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

Либо работает в Oracle, SQL Server, MySQL ... но я знаю, что некоторые сказали, что TOAD IDE, кажется, дает некоторое горе при использовании подхода с одиночными кавычками.

Вам нужно использовать одинарные кавычки, когда псевдоним столбца содержит пробельный символ, например product id, но не рекомендуется использовать для псевдонима столбца более одного слова.

+22

Двойные кавычки обычно используются для имен объектов (например, имя столбца «Имя»). Это часть стандарта SQL-92. – LukLed

+0

@LukLed: Вы имеете в виду колонку * псевдоним *? Если вы так говорите - я когда-либо видел и/или использовал нотацию «AS column_name» или где вы указываете псевдоним в одинарных кавычках ** после ссылки на столбец. Необходимо заключить псевдоним в одинарных кавычках, если в псевдониме столбца есть пробельный символ (который я не рекомендую). –

+17

Нет. Я имел в виду имена столбцов, но это касается также псевдонимов. Я бы посоветовал использовать двойные кавычки для псевдонимов и имен с необычными символами из-за стандарта SQL-92. 'SELECT * ОТ ПОЛЬЗОВАТЕЛЕЙ« Пользователи не работают в SQL Server, но «SELECT» ОТ ПОЛЬЗОВАТЕЛЕЙ «Пользователи» '. – LukLed

31

В ANSI SQL двойные кавычки цитируют имена объектов (например, таблицы), которые позволяют им содержать символы, которые не разрешены иным образом, или быть такими же, как зарезервированные слова (избегайте этого, действительно).

Одиночные кавычки для строк.

Однако MySQL не обращает внимания на стандарт (если его SQL_MODE не изменен) и позволяет их использовать для строк без перерывов.

Кроме того, Sybase и Microsoft также используют квадратные скобки для цитирования идентификатора.

Так что это немного конкретный поставщик.

Другие базы данных, такие как Postgres и IBM фактически соответствуют стандарту ANSI :)

+4

MySql использует обратную линию 'для цитирования идентификатора. (только для завершения) – dar7yl

+0

Пример: Если вы хотите назвать столбец Postgres «date» (который зарезервирован), вам нужно будет дважды его указать. – fny

55

Одинарные кавычки разграничить строку постоянной или постоянной даты/времени.

Двойные кавычки указывают идентификаторы, например. имена таблиц или имена столбцов. Это, как правило, необходимо только тогда, когда ваш идентификатор не соответствует правилам для простых идентификаторов.

Смотрите также:

Вы можете сделать MySQL использовать двойные кавычки, в соответствии со стандартом ANSI:

SET GLOBAL SQL_MODE=ANSI_QUOTES 

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

SET QUOTED_IDENTIFIER ON 
35
  • [S] Ингл котировки для [S] trings; [D] котировки ouble для [D] идентификаторы atabase;
  • ` символ такой же, как « символ. Вы можете использовать » с ANSI_QUOTES включен.
+4

Чтобы уточнить, backtick (') можно использовать для разграничения идентификаторов независимо от того, включена или нет ANSI_QUOTES, но если включена функция ANSI_QUOTES, то« вы не можете использовать двойные кавычки для цитирования литералов, потому что они интерпретируются как идентификатор ». ([Источник] (https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_ansi_quotes)). (Это все предполагает, что вы говорите о MySQL, ум.) – Sam

+0

Хороший комментарий, спасибо! –

1

Я использую этот Мнемоник:

  • одинарных кавычек для строк (одна вещи)
  • двойных кавычек имен таблиц и имена столбцов (две вещей)

Это не на 100% правильные в соответствии со спецификациями, но эта мнемоника помогает мне (человеку).