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

Я новичок в PostgresSQL. Я пробовал

select * from employee where employee_name="elina";

Но это приводит к ошибке следующим образом:

ERROR: column "elina" does not exist.

Затем я попытался заменить двойные кавычки одиночными кавычками следующим образом:

select * from employee where employee_name='elina';

В результате получается точная. Какая разница между одинарными кавычками и двойными кавычками в postgresql.Если мы не можем использовать двойные кавычки в postgres-запросе, то, если любое другое использование для этих двойных кавычек в postgreSQL?

Ответ 1

Двойные кавычки предназначены для имен таблиц или полей. Иногда их можно опустить. Одиночные кавычки предназначены для строковых констант. Это стандарт SQL. В сложной форме ваш запрос выглядит так:

select * from "employee" where "employee_name"='elina';

Ответ 2

Как объяснено в в руководстве PostgreSQL:

Строковая константа в SQL - это произвольная последовательность символов, ограниченная одинарными кавычками ('), например 'This is a string'. Чтобы включить символ одиночной кавычки в строковой константе, напишите две соседние одинарные кавычки, например, 'Dianne' horse'. Обратите внимание, что это не то же самое, что символ двойной кавычки (").

В другом месте на той же странице:

Существует второй тип идентификатора: идентификатор с разделителями или цитируемый идентификатор. Он формируется путем включения произвольной последовательности символов в двойные кавычки ("). Идентификатор с разделителями всегда является идентификатором, а не ключевым словом. Поэтому "select" можно использовать для ссылки на столбец или таблицу с именем "select", тогда как некорректный select будет использоваться как ключевое слово и поэтому будет провоцировать ошибку синтаксического анализа при использовании там, где ожидается имя таблицы или столбца.

TL; DR: одинарные кавычки для строковых констант, двойные кавычки для имен таблиц/столбцов.

Ответ 3

Нулевые кавычки используются для строковых литералов, а двойные кавычки используются для экранирования объектов БД, таких как имя таблицы/имя столбца и т.д.

В частности, двойные кавычки используются для экранирования имени столбца/таблицы, если оно похоже на любое резервное/ключевое слово. Хотя у каждой РСУБД есть свой способ избежать того же (например, backtique в MySQL или квадратной скобке в SQL Server), но использование двойных кавычек - стандарт ANSI.