SQL оператор SELECT

Резюме: в этой статье вы узнаете, как использовать SQL оператор SELECT для написания запроса выборки данных из одной таблицы.

Введение в оператор SQL SELECT

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

простой select

Простой выбор данных

Ниже описан основной синтаксис оператора SELECT, позволяющий выбрать данные из одной таблицы. Он применим как для MySQL так и для других систем.

В этом синтаксисе:

  • В первую очередь укажите перечень столбцов таблицы в предложении SELECT. Разделите колонки запятыми.
  • После чего следует написать непосредственно имя таблицы после предложения FROM.

При построении плана запроса система баз данных SQL вначале считывает предложение FROM, а уже после этого предложение SELECT.

Это можно читать следующим образом: «выбери мне из таблицы следующие столбцы».

Разделитель в виде точки с запятой (;) не является частью запроса. Сервер баз данных использует ее для разделения нескольких операторов SQL.

К примеру, в случае если выполняются два или более оператора SELECT, следует разграничить их точкой с запятой (;).

При необходимости запросить данные из всех столбцов таблицы, можно применить оператор звездочка (*) вместо перечисления поименно всех столбцов таблицы:

выбор данных

Сиквел не чувствителен к регистру. Поэтому написание команды в виде SELECT или select не теряет смысла запроса.

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

Группировка данных

Традиционно в SQL для группировки данных применяется оператор GROUP BY

группировка данных

Группировка или объединение применяется при необходимости сжать какую-то информацию, сгруппировав ее по заданным полям. На картинке выше показан синтаксис применения данной команды. В качестве примера можно рассмотреть продажи фруктов в магазине. Для этого мы группируем записи по колонке fruit, а в качестве второго поля берем агрегатную функцию подсчитывающую количество продаж (в данном случае, независимо от объема). Агрегатные функции (такие как AVG, SUM, COUNT и другие) будут рассмотрены нами позднее в рамках отдельной статьи.

пример-группировки-данных

Команда HAVING

Команда HAVING берется обычно как дополнение к группировке используемой в SQL с помощью условия GROUP BY для SELECT.

having

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

Выборка из нескольких таблиц (горизонтальное соединение)

Эта функция реализована благодаря применению операнда JOIN. Простейшая реализация представлена далее

пример джойна

Здесь таблица A соединяется с таблицей B, поля по которым они соединяются представлены в блоке ON.

Вертикальное соединение выборки из разных таблиц

Бывают ситуации, когда SELECT помогает отобрать записи из нескольких таблиц грубо говоря друг под другом. В подобной ситуации незаменима команда UNION. Ниже продемонстрировано как вывести в один столбец идентификаторы из разных таблиц. Практическое применение такого SELECT‘а сложно представить. А вот в качестве наглядной иллюстрации SQL запроса с применением UNION почему бы и нет.

union

Упорядочивание

Поменять порядок в выборке можно благодаря добавлению ASC (по алфавиту, от меньшего к большему) и DESC (в обратном порядке) команд. Детали здесь.

asc desc

Копирование в другие таблицы через SELECT

Если позволяет структура таблиц, то имея одинаковую структуру содержимого в SQL допустимо через SELECT производить добавление данных в отдельную таблицу строкой INSERT INTO table:

insert into table

Обратите пожалуйста внимание, что здесь мы применили условие WHERE в соответствии с которым данные в table2 фильтруются по некоему заданному условию. Включающему операторы сравнения (AND, OR). Подробнее в этой статье.

Чтобы это стало возможно как уже говорилось выше структура у них должна быть одинаковой, для этой цели применим оператор CREATE TABLE name. Он не относится к SELECT, но мы не могли не упомянуть его в этой статье.

create table

Что касается заполнения таблиц, в примере выше не упомянули, однако следует понимать важность использования правильных типов данных в SQL. Также немаловажный вопрос использования NULL и NOT NULL колонок. В зависимости от выбранной опции будет определяться позволит ли вам база данных поместить данные с неопределенным значением (NULL) в табличку или нет. При отсутствии этого указания (как на рисунке выше), считается, что вы такое разрешение дали.

Исключение дублей

Вычленить только неповторяющуюся информацию команде SELECT дает возможность DISTINCT. Именно его применение вы можете увидеть под этим текстом. Подробнее здесь.

distinct

Это получение всех возможных вариантов зарплат из сущности со списком сотрудников. Если вы обратили внимание, то безусловно заметили применение в SQL запросе сортировки и указания обратного порядка с помощью DESC.

Примеры использования SELECT в языке программирования SQL

Для демонстрации мы будем использовать таблицу employees.

структура таблицы employees

1) Пример SQL SELECT — получение информации при выборе данных из всех столбцов.

В следующем примере применяется запрос с использованием команды SELECT для выборки всех строк и столбцов таблицы employees:

выбор данных из employees

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

полученные данные

Команда SELECT * полезна только для специфических запросов и редко применяется профессиональными программистами. Это обусловлено тем что крайне редко возникают ситуации, когда требуются получить полный набор данных. Обычно он ограничен частью столбцов. Поэтому в процессе разработки рекомендуется избегать использования звездочки select.

Если вы используете select *, БД требуется больше времени, чтобы прочитать информацию с диска, нежели если использовать именованную выборку (т.е. перечислить имена всех нужных колонок). Это часто приводит к ухудшению производительности. Особенно это чревато проблемами, если таблица содержит большое количество столбцов со значительным числом строк.

2) SQL SELECT — выбор данных из определенных столбцов

Чтобы выбрать данные из определенных столбцов, можно указать список столбцов после пункта SELECT оператора SELECT.

Например, ниже приведена выборка данных из идентификатора сотрудника, имени, фамилии и даты приема на работу из всех строк таблицы «Сотрудники»:

перечисление колонок для select

Теперь набор результатов включает только четыре столбца, указанные в предложении SELECT:

сокращенный набор данных

3) SQL SELECT — выполнение простого вычисления

В следующем примере оператор SELECT используется для получения имени, фамилии, зарплаты и новой зарплаты:

калькуляция в запросе

Выражение salary * 1.05 добавляет 5% к зарплате каждого сотрудника. По умолчанию SQL использует выражение в качестве заголовка столбца:

результат калькуляции

Чтобы присвоить выражению или столбцу псевдоним, нужно указать ключевое слово AS, за которым следует псевдоним столбца, как показано ниже:

алиас

Например, следующий оператор SELECT использует new_salary в качестве псевдонима столбца для выражения salary * 1.05:

алиас использование

Вывод:

алиас результат

Сводка

Используйте оператор SQL SELECT для выбора данных из таблицы.

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

SELECT * — это сокращение от SELECT все столбцы таблицы.

Предыдущая статья: Синтаксис SQL

Следующая статья: Сортировка данных (ORDER BY)

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: