В чем разница между одиночными и двойными кавычками в SQL?
==========================================================

В чем разница между одинарными кавычками и двойными кавычками в SQL?

 

 Одинарные кавычки используются для обозначения начала и конца строки в 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`, но не рекомендуется, чтобы псевдоним столбца составлял более одного слова.

 

Одиночные кавычки ограничивают строковую константу или константу даты/времени.

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

См. также:

* [Используют ли разные базы данных разные цитаты с именами?](/questions/37891/do-different-databases-use-different-name-quote/275476#275476)

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

```
SET GLOBAL SQL_MODE=ANSI_QUOTES

```

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

```
SET QUOTED_IDENTIFIER ON

```
 

 Два простых правила для нас, чтобы помнить, что использовать в этом случае:

 * [ **S** ] одиночные кавычки для [ **S** ] trings; [ **D** ] двойные кавычки для идентификаторов [ **D** ] атабазы;
* **'Символ** такой же, как **„символ.** Вы можете **использовать“** с ANSI\_QUOTES поддержкой.

 

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

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

Тем не менее, MySQL не обращает внимания на стандарт (если его SQL\_MODE не изменен) и позволяет использовать их для строк без прерывания.

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

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

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

 

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

* Одиночные кавычки для строк (одна вещь)
* Двойные кавычки предназначены для имен таблиц и имен столбцов (две вещи)

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

 

 Разница заключается в их использовании. Одинарные кавычки в основном используются для ссылки на строки в WHERE, HAVING, а также в некоторых встроенных функциях SQL, таких как CONCAT, STRPOS, POSITION и т.д.

  Если вы хотите использовать псевдоним с пробелом между ними, вы можете использовать двойные кавычки для ссылки на этот псевдоним.

  Например

 
```
(select account_id,count(*) "count of" from orders group by 1)sub 

```
  Вот подзапрос из таблицы заказов, имеющей account\_id в качестве внешнего ключа, который я собираю, чтобы узнать, сколько заказов было размещено каждым аккаунтом. Здесь я дал одному столбцу любое случайное имя в качестве "количества" ради цели.

  Теперь давайте напишем внешний запрос для отображения строк, в которых "count" больше 20.

 
```
select "count of" from 
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;

```
  Вы можете применить тот же случай к выражениям Common Table также.