Skip to content

Оператор SELECT в SQL

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

В первом уроке по языку SQL мы создали базу данных и три таблицы, с помощью оператора CREATE, а во втором уроке — для заполнения таблиц данными мы использовали оператор INSERT.

Общие сведения

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

SELECT * FROM имя_таблицы

Соответственно имя таблицы вы укажете свое. Такой запрос вернет все колонки в таблице, и в том порядке, в котором они записаны в базе данных.

Зачастую нужно выбирать определенные данные из таблицы. Это можно сделать большим количеством способов, в зависимости от того, что вы хотите получить. Например если вам необходимо получить только 2 колонки из таблицы, то запрос примет такой вид:

SELECT имя_колонки_1, имя_колонки_2 
FROM имя_таблицы

И в этом примере порядок отображения будет таким, каким его зададут в самом запросе, это значит, что порядок можно контролировать.

Использование условия WHERE

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

Разберем небольшой пример на таблице salespeople, созданной ранее, но для начала напомним ее структуру.

snum sname city comm
1 Колованов Москва 10
2 Петров Тверь 25
3 Плотников Москва 22
4 Кучеров Санкт-Петербург 28
5 Малкин Санкт-Петербург 18
6 Шипачев Челябинск 30
7 Мозякин Одинцово 25
8 Проворов Москва 25

Теперь для примера выведем информацию о тех продавцах, которые проживают в Москве. Это сделается таким запросом:

SELECT * FROM salespeople 
WHERE city = 'Москва'

Достаточно простой для понимания запрос, который вернет такой результат:

snum sname city comm
1 Колованов Москва 10
3 Плотников Москва 22
8 Проворов Москва 25

Здесь, отлично видно, что мы выбрали все колонки для отображения. Теперь давайте выведем только имена продавцов, у которых комиссия составляет менее 20%. Следующий запрос сделает это:

SELECT sname, comm FROM salespeople 
WHERE comm < 20

И сразу же результат:

sname comm
Колованов 10
Малкин 18

Обратите внимания, что какие именно колонки выводить, мы задали после слова SELECT. В языке SQL такие запросы — самые распространенные.

SELECT WHERE с несколькими условиями

Очевидно, что пока мы рассмотрели запросы с одиночным условием. Но также в языке SQL, в запросе SELECT возможно использовать несколько условий. Эти условия могут быть объединены с помощью булевых операторов: AND, OR, NOT.

Перейдем сразу к примеру, чтобы лучше понять, выведем информацию о всех продавцах из Москвы или Твери, а также имеющих сумму комиссии равную 25%.

SELECT * FROM salespeople 
WHERE (city = 'Москва' or city = 'Тверь') and comm = 25

Результат такого запроса:

snum sname city comm
2 Петров Тверь 25
8 Проворов Москва 25

Стоит отметить, что правила булевой алгебры здесь работают точно так же, как и всегда. Также важно сказать, что такой запрос можно упростить использовав ключевое слово языка SQL — IN. Тогда запрос SELECT может принять вид:

SELECT * FROM salespeople 
WHERE city IN ('Москва', 'Тверь') and comm = 25

Всегда важно оптимизировать свои запросы.

Ключевое слово DISTINCT

Существует такое понятие как избыточность данных, которое описывает случай представления данных в том или ином виде несколько раз. Например исполнив запрос на вывод городов продавцов из нашей таблицы:

SELECT city FROM salespeople

Как мы уже выучили, этот запрос выведет колонку с названием городов. Но в этом запросе есть неточность — данные повторяются и не представляют собой ценности. Для устранения избыточности данных предусмотрели ключевое слово — DISTINCT.

В качестве примера выведем список городов из нашей таблицы:

SELECT DISTINCT city FROM salespeople

Результат:

city
Москва
Тверь
Санкт-Петербург
Челябинск
Одинцово

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

Примеры на SELECT SQL

Теперь, разберем коротко несколько примеров для всех таблиц в нашей базе данных.

1. Напишите команду SELECT, которая бы вывела номер Заказа, сумму, и дату для всех строк из таблицы Заказов.

SELECT onum, amt, odate FROM orders

2. Напишите запрос, который вывел бы все строки из таблицы Заказчиков, для которых номер продавца = 1.

SELECT * FROM customers WHERE snum = 1

3. Напишите команду SELECT, которая вывела бы оценку (rating), сопровождаемую именем каждого заказчика в Москве.

SELECT rating, cname FROM customers WHERE city = 'Москва'

4. Напишите запрос, который может выдать вам все заказы со значениями суммы выше 1000.

SELECT * FROM orders WHERE amt > 1000

5. Напишите запрос, который может выдать вам поля sname и city для всех продавцов в Москве с комиссионными выше 10%.

SELECT sname, city FROM salespeople WHERE comm > 10

6. Напишите запрос к таблице Заказчиков, чей вывод включит всех заказчиков с оценкой =< 100, если они не находятся в Туле.

SELECT * FROM customers 
WHERE rating <= 100 AND
      city != 'Тула'

Заключение

В заключении этой статьи скажем, что мы изучили основные конструкции для оператора SELECT SQL. Также познакомились с ключевыми словами WHERE и DISTINCT, которые часто используются в практике. На этом сегодня все, если у вас возникли вопросы или пожелания, то оставляйте их в комментариях.

Опубликовано вSQL

Будьте первым, кто оставит комментарий

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