[] скобки в операторах sql

Что делают скобки в выражении sql?

Например, в заявлении:

insert into table1 ([columnname1], columnname2) values (val1, val2)

Кроме того, что он делает, если имя таблицы находится в скобках?

Повторяющийся вопрос: stackoverflow.com/questions/52898/sql-syntax-curiousity

bdukes 30.09.2008 20:33

Лучшее название для этого. Кто, впервые встретив скобки, станет искать «любопытство»?

Shog9 30.09.2008 20:39

Тем более, что «любопытство» даже не слово.

Justin Bennett 30.09.2008 20:49

Ха! Сумасшедшие кануки и их лишние буквы. :-п

Shog9 30.09.2008 21:14
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
27
4
45 500
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Они предназначены для экранирования зарезервированных ключевых слов или недопустимых идентификаторов столбцов.

CREATE TABLE test
(
  [select] varchar(15)
)

INSERT INTO test VALUES('abc')

SELECT [select] FROM test
Ответ принят как подходящий

[] Обозначает разделение идентификатора, поэтому, если у вас есть столбец, имя которого содержит пробелы, такие как Order Qty, вам необходимо заключить его в [], например:

select [Order qty] from [Client sales]

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

Это просто разделители, которые позволяют вставлять специальные символы (например, пробелы) в имя столбца или таблицы. например

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2)

Все, что находится в скобках, считается одним идентификатором (например, [тестовая машина]. Его можно использовать для заключения имен в пробелы или для экранирования резервных слов (например, [порядок], [выбор], [группа]).

Они позволяют использовать ключевые слова (например, датировать) в имени столбца, таблицы и т. д.

Поскольку это изначально плохая практика, они обычно не включаются. Единственное место, где вы должны увидеть их использование, - это люди, начинающие с sql-запросов, которые не знают ничего лучшего. В остальном они просто загромождают ваш запрос.

Это нестандартный синтаксис Microsoft SQL Server для «идентификаторов с разделителями». SQL поддерживает разделители для идентификаторов, чтобы имена таблиц, имена столбцов или другие объекты метаданных могли содержать следующее:

  • Зарезервированные слова SQL: «Заказ»
  • Слова, содержащие пробелы: «Кол-во заказа»
  • Слова, содержащие знаки препинания: "Кол-во заказа"
  • Слова, содержащие международный символы
  • Имена столбцов, которые с учетом регистра: "порядок" или "порядок"

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

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

SET QUOTED_IDENTIFIER ON;

Даже в кавычках или скобках имена в SQL Server не обязательно чувствительны к регистру; это зависит от параметров сортировки сервера или базы данных. Кроме того, скобки не уникальны для SQL Server; они тоже есть в Sybase.

Michael Ratanapintha 30.09.2008 22:59

Спасибо, это имеет смысл, что скобки поддерживаются в Sybase, поскольку он и SQL Server когда-то были одной и той же кодовой базой.

Bill Karwin 01.10.2008 02:56

Относится ли квадратная скобка к MS Access, а также к SQL Server?

Dan W 24.01.2013 20:22

@DanW, MS Access использует квадратные скобки для разделения идентификаторов. Вот краткое описание синтаксиса идентификатора в MS Access: office.microsoft.com/en-us/access-help/…

Bill Karwin 24.01.2013 21:49

если вы используете любое имя столбца, такое же, как любое зарезервированное ключевое слово в sql, в этом случае вы можете поместить имя столбца в квадратную скобку, чтобы различать ваше пользовательское имя столбца и существующее зарезервированное ключевое слово.

Если имена таблиц или имена файлов содержат пробелы или дефисы (-) и т. д., Вы можете получить сообщение «Systax error in FROM clause». Используйте квадратные скобки [], чтобы решить эту проблему.

См .: https://msdn.microsoft.com/en-us/library/ms175874.aspx

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