> SmartGate 41 752 9863

SELECT

Основной оператор для извлечения данных из базы

Теория

Представьте, что база данных — это большая таблица в Excel. А SELECT — это инструмент, который говорит: «покажи мне вот эти колонки из этой таблицы». При этом сами данные в таблице остаются нетронутыми — мы просто их вытягиваем и смотрим.

SELECT переводится с английского как «выбрать». И он действительно выбирает то, что вы попросите: какие столбцы, из какой таблицы, а потом отдаёт вам результат. Самые простые запросы выглядят так: «покажи мне вот это из такой-то таблицы».

Синтаксис

SELECT column1, column2, ...
FROM table_name;
SQL
После SELECT через запятую перечисляете столбцы, которые хотите увидеть. Запятая ставится между названиями, но после последнего — не ставится. Если хотите все столбцы сразу, можно написать *, но в реальной работе лучше так не делать: чем меньше данных запрашиваете, тем быстрее работает запрос. После FROM указываете имя таблицы — откуда брать данные.

Примеры

1. Все столбцы из таблицы workers

Вернёт всю таблицу целиком: id, имена, фамилии, зарплаты, даты приёма и всё остальное. Удобно, когда нужно посмотреть, что вообще есть в таблице.

🔄 Попробуйте изменить запрос:

  • • Замените * на конкретные столбцы: first_name, position
  • • Добавьте ORDER BY salary в конце

2. Только имена и зарплаты

В этом запросе выводим только то, что необходимо: имена и зарплаты.

🔄 Попробуйте изменить запрос:

  • • Добавьте столбец position в SELECT
  • • Попробуйте увеличить зарплату на 20%, напишите отдельным столбцом: salary * 1.2

3. Переименовываем столбцы в результате

Ключевое слово AS используется, чтобы столбцам таблицы присвоить другие названия (псевдонимы). В результате столбцы будут называться «Имя» и «Зарплата» — чаще так понятнее, особенно когда данные показываете коллегам или в отчёте. AS можно не писать, но с ним код читается легче.

🔄 Попробуйте изменить запрос:

  • • Переименуйте first_name в Имя_сотрудника
  • • Добавьте position с псевдонимом Должность

4. Уникальные значения

DISTINCT - это ключевое слово, которое убирает дубликаты строк. В этом примере видно, какие вообще отделы есть в компании: 1, 2, 3 и так далее. Без повторов.

🔄 Попробуйте изменить запрос:

  • • Попробуйте DISTINCT position — какие должности есть в компании?
  • • А если убрать DISTINCT — что изменится?

5. Уникальные комбинации

Здесь выводятся уникальные пары «отдел — должность». Например, в отделе 1 есть «Продавец-консультант» и «Менеджер по продажам». DISTINCT проверяет сочетание двух столбцов целиком.

🔄 Попробуйте изменить запрос:

  • • Попробуйте поменять порядок столбцов: сначала position, потом department_id
  • • Попробуйте добавить в SELECT еще один столбец после position

Типичные ошибки

Звёздочка там, где не надо
Пользователи часто пишут SELECT * всегда и везде. Это удобно, но на больших таблицах запрос будет тормозить и тащить кучу лишнего. Лучше привыкать сразу перечислять только нужные столбцы.

Забывают про FROM
Запрос должен быть полным: SELECT first_name FROM workers; — а не просто SELECT first_name;. Без FROM СУБД не поймёт, откуда брать данные.

Лишние запятые
SELECT first_name, last_name, FROM workers; — запятая после last_name лишняя, будет ошибка. Запятые только между названиями, после последнего — нет.

Путают AS с переименованием столбцов в самой таблице
AS меняет название столбца только в результате, сами столбцы в таблице остаются с прежними именами.

Практика

Проверь себя

Ответьте на вопросы, чтобы закрепить материал:

1
Что вернёт запрос SELECT email FROM users;?
2
Из таблицы products нужно получить список всех категорий товаров. Каждая категория должна встретиться только один раз. Напишите SQL запрос.
3
Какой результат вернёт запрос SELECT city, registration_date FROM users;?
4
Напишите запрос, который покажет названия товаров product_name и их цены price из таблицы products, но чтобы в результате колонки назывались Товар и Цена.
5
Чем отличаются запросы SELECT * FROM orders; и SELECT status FROM orders;?
6
В таблице orders есть статусы заказов. Нужно узнать, какие вообще статусы бывают, без повторений.
7
Сколько строк вернёт запрос SELECT DISTINCT city FROM users;, если в таблице 50 пользователей, из которых 15 живут в Москве, 10 в Казани, а остальные в разных городах?
8
Напишите запрос, который выведет имена first_name и фамилии last_name всех пользователей из таблицы users.