В чем разница между одинарными и двойными кавычками в 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
, но не рекомендуется, чтобы псевдоним столбца был больше одного слова.
SELECT * FROM USERS 'Users'
не работает в SQL Server, ноSELECT * FROM USERS "Users"
работает.SELECT PRODUCT.id 'product_id'
не будет работать в Oracle. Одинарные кавычки предназначены только для символьных литералов. Они не могут использоваться для идентификаторов в (стандартном) SQL (хотя некоторые СУБД просто игнорируют стандарт SQL, когда дело доходит до цитируемых идентификаторов)Простое правило для нас, чтобы помнить, что использовать в этом случае:
В MySQL и MariaDB, то ` (кавычка) символ такой же , как « символ. Вы можете использовать » , когда ваш
SQL_MODE
былANSI_QUOTES
включен.источник
Одинарные кавычки отделяют строковую константу или константу даты / времени.
Идентификаторы-разделители в двойных кавычках, например, для имен таблиц или столбцов. Обычно это необходимо, только если ваш идентификатор не соответствует правилам для простых идентификаторов.
Смотрите также:
Вы можете заставить MySQL использовать двойные кавычки согласно стандарту ANSI:
Вы можете заставить Microsoft SQL Server использовать двойные кавычки в соответствии со стандартом ANSI:
источник
В ANSI SQL двойные кавычки заключают в кавычки имена объектов (например, таблиц), что позволяет им содержать символы, не разрешенные иным образом, или совпадать с зарезервированными словами (действительно, избегайте этого).
Одинарные кавычки для строк.
Тем не менее, MySQL не обращает внимания на стандарт (если его SQL_MODE не изменен) и позволяет использовать их взаимозаменяемо для строк.
Кроме того, Sybase и Microsoft также используют квадратные скобки для цитирования идентификаторов.
Так что это немного зависит от поставщика.
Другие базы данных, такие как Postgres и IBM, фактически придерживаются стандарта ANSI :)
источник
Я использую эту мнемонику:
Это не на 100% правильно в соответствии со спецификациями, но эта мнемоника помогает мне (человеку).
источник
Разница заключается в их использовании. Одинарные кавычки в основном используются для ссылки на строки в WHERE, HAVING, а также в некоторых встроенных функциях SQL, таких как CONCAT, STRPOS, POSITION и т. Д.
Если вы хотите использовать псевдоним с пробелом между ними, вы можете использовать двойные кавычки для ссылки на этот псевдоним.
Например
Вот подзапрос из таблицы заказов, имеющей account_id в качестве Внешнего ключа, который я собираю, чтобы узнать, сколько заказов было размещено каждой учетной записью. Здесь я дал одному столбцу любое случайное имя в качестве «количества» ради цели.
Теперь давайте напишем внешний запрос для отображения строк, в которых «count» больше 20.
Вы также можете применить тот же случай к выражениям Common Table.
источник