Если вы хотите поддержать меня;
Ссылка на мой канал на YouTube: www.youtube.com/channel/UCPgDzbHbAlj_TbjSxwoL8xQ

Оператор SELECT лежит в основе большинства запросов SQL. Он определяет, какой набор результатов должен быть возвращен запросом, и почти всегда используется вместе с предложением FROM, которое определяет, какие части базы данных следует запрашивать.

Рассмотрим базу данных со следующими двумя таблицами.

Простой оператор выбора

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

При использовании вместо явных имен столбцов он возвращает все столбцы во всех таблицах, которые запрос выбирает ИЗ. Этот эффект применяется ко всем таблицам, к которым запрос обращается через его предложения JOIN.

Рассмотрим следующий запрос:

ВЫБРАТЬ * ИЗ сотрудников

Он вернет все поля всех строк таблицы Employees:

Точечная запись

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

Рассмотрим следующий запрос:

ВЫБЕРИТЕ сотрудников. *, Departments.Name FROM сотрудников ПРИСОЕДИНЯЙТЕСЬ к отделам ON Departments.Id = Employees.DeptId

Это вернет набор данных со всеми полями в таблице Employee, за которым следует только поле Name в таблице Departments:

Предупреждения против использования

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

  1. Избыточный ввод-вывод, сетевая нагрузка, использование памяти и т. Д. Из-за того, что ядро ​​базы данных считывает ненужные данные и передает их внешнему коду. Это особенно важно в тех случаях, когда могут быть большие поля, такие как те, которые используются для хранения длинных заметок или прикрепленных файлов.
    2. Дополнительная избыточная нагрузка ввода-вывода, если базе данных необходимо буферизовать внутренние результаты на диск как часть обработки более сложного запроса, чем SELECT ‹columns› FROM ‹table›.
    3. Дополнительная обработка ( и / или даже больше операций ввода-вывода), если некоторые из ненужных столбцов:
    - вычисляемые столбцы в базах данных, которые их поддерживают
    - в случае выбора из представления, столбцы из таблицы / представления, которые запрос в противном случае оптимизатор мог бы оптимизировать

4. Возможность непредвиденных ошибок, если столбцы добавляются в таблицы и представления позже, что приводит к неоднозначным именам столбцов. Например,
SELECT * FROM orders JOIN people ON people.id = orders.personid ORDER BY. отображаемое имя
если столбец столбца с именем отображаемое имя добавляется в таблицу заказов, чтобы пользователи могли давать своим заказам значимые имена для дальнейшего использования, тогда имя столбца будет отображаться дважды в выводе, поэтому предложение ORDER BY будет неоднозначным, что может вызвать ошибок («неоднозначное имя столбца» в последних версиях MS SQL Server), и если не в этом примере, код вашего приложения может начать отображать имя заказа, в котором предназначено имя человека, потому что новый столбец является первым из возвращенного имени, и поэтому на.

Когда вы можете использовать *, имея в виду вышеуказанное предупреждение?

Хотя лучше избегать использования * в производственном коде, использовать * можно в качестве сокращения при выполнении ручных запросов к базе данных для исследования или работы с прототипами.
Иногда дизайнерские решения в вашем приложении делают это неизбежным (в таких обстоятельствах лучше использовать tablealias. * вместо *, где это возможно).

При использовании EXISTS, например
SELECT A.col1, A.Col2 FROM A WHERE EXISTS (SELECT * FROM B где A.ID = B.A_ID),
мы не возвращаем никаких данных из B. Таким образом, соединение не требуется, и Engine знает, что значения из B не должны быть возвращены, поэтому при использовании * производительность не снижается. Точно так же COUNT (*) подойдет, так как он фактически не возвращает ни один из столбцов, поэтому необходимо читать и обрабатывать только те, которые используются для целей фильтрации.

ВЫБРАТЬ с использованием псевдонимов столбцов

Псевдонимы столбцов используются в основном для сокращения кода и повышения читабельности имен столбцов. Код становится короче, так как можно избежать длинных имен таблиц и ненужной идентификации столбцов (например, в таблице может быть 2 идентификатора, но в операторе используется только один). Наряду с псевдонимами таблиц это позволяет вам использовать более длинные описательные имена в структуре вашей базы данных, сохраняя при этом краткость запросов к этой структуре. Более того, они иногда требуются, например, в представлениях, чтобы давать имена вычисляемым выходным данным.

Все версии SQL

Псевдонимы можно создавать во всех версиях SQL, используя двойные кавычки («).

Различные версии SQL

Вы можете использовать одинарные кавычки (‘), двойные кавычки (“) и квадратные скобки ([]) для создания псевдонима в Microsoft SQL Server.

Оба результата приведут к:

Этот оператор вернет столбцы FName и LName с заданным именем (псевдонимом). Это достигается с помощью оператора AS, за которым следует псевдоним, или просто написания псевдонима непосредственно после имени столбца. Это означает, что следующий запрос имеет тот же результат, что и выше.

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

Еще одна вариация, доступная в MS SQL Server среди прочего, - это =, например:

что эквивалентно:

Оба результата приведут к:

Некоторые находят использование = вместо As более удобным для чтения, хотя многие не рекомендуют этот формат, в основном потому, что он не является стандартным и не поддерживается всеми базами данных. Это может вызвать путаницу с другим использованием символа =

Все версии SQL

Кроме того, если вам нужно использовать зарезервированные слова, вы можете использовать скобки или кавычки для выхода:

Различные версии SQL

Точно так же вы можете экранировать ключевые слова в MSSQL с помощью всех разных подходов:

Кроме того, в качестве псевдонима столбца можно использовать любое из последних предложений того же запроса, например ORDER BY:

Однако вы не можете использовать

Чтобы создать псевдоним из этих зарезервированных слов (SELECT и FROM). Это вызовет множество ошибок при выполнении.

Выбрать отдельные столбцы

Этот оператор вернет столбцы PhoneNumber, Email и PreferredContact из всех строк таблицы Customers. Также столбцы будут возвращены в той последовательности, в которой они указаны в предложении SELECT.

Результат будет:

Если несколько таблиц объединены вместе, вы можете выбрать столбцы из определенных таблиц, указав имя таблицы перед именем столбца: [table_name]. [Column_name].

  • AS OrderId означает, что поле Id таблицы Orders будет возвращено как столбец с именем OrderId. Дополнительную информацию см. В разделе «Выбор с помощью псевдонима столбца». Чтобы избежать использования длинных имен таблиц, вы можете использовать псевдонимы таблиц. Это облегчает написание длинных имен таблиц для каждого поля, которое вы выбираете в объединениях. Если вы выполняете самосоединение (соединение двух экземпляров одной и той же таблицы), вы должны использовать псевдонимы таблиц, чтобы различать ваши таблицы. Мы можем написать псевдоним таблицы, например Customers c или Customers AS c. Здесь c работает как псевдоним для клиентов, и мы можем выбрать, скажем, электронную почту, например: c.Email.

……

#StaySafe #StayHome