Наглядные примеры использования SELECT в MySQL



















Введение


Достаточно сложно встретить в интернете годную информацию по использованию оператора SELECT в SQL-запросах. Обычно дело ограничивается только описанием.


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


Теперь немного информации из Wikipedia:



Оператор SELECT имеет следующую структуру:
    SELECT 
       [DISTINCT | DISTINCTROW | ALL]
       select_expression,...
   [FROM table_references]
     [WHERE where_definition]
     [GROUP BY {unsigned_integer | col_name | formula}]
     [HAVING where_definition]
     [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]



Основные ключевые слова, относящиеся к запросу SELECT:
WHERE — используется для определения, какие строки должны быть выбраны или включены в GROUP BY.
GROUP BY — используется для объединения строк с общими значениями в элементы меньшего набора строк.
HAVING — используется для определения, какие строки после GROUP BY должны быть выбраны.
ORDER BY — используется для определения, какие столбцы используются для сортировки результирующего набора данных.



Этой теории нам достаточно для написания запросов.


Примеры


Для начала, понадобится тестовая таблица(назовем её `test_table`) со всеми данными, по которой мы будем делать выборку.






















































































































id category product cost
1 Инструменты

Набор гаечных ключей

1200

3 Инструменты

Шуруповерт

700

4 Инструменты

Перфоратор

3560

5 Инструменты

Набор отверток

630

6 Инструменты

Рубанок

270

8 Инструменты

Дрель

1420

13 Электроника

Сотовый телефон

17990

14 Электроника

Пылесос

4280

15 Электроника

Стиральная машинка

14790

16 Электроника

Телевизор

10500

18 Электроника

Компьютер

45850

27 Мебель

Диван

20000

28 Мебель

Письменный стол

4200

29 Мебель

Шкаф-купе

23740

31 Посуда

Набор тарелок

1500

32 Посуда

Набор столовых приборов

1600

33 Посуда

Набор кострюль

1700

34 Посуда

Набор ножей

800


Запросы


1. Самый простой запрос, конечно же, будет выглядеть так:


SELECT * FROM `test_table`




















































































































id category product cost
1 Инструменты

Набор гаечных ключей

1200

3 Инструменты

Шуруповерт

700

4 Инструменты

Перфоратор

3560

5 Инструменты

Набор отверток

630

6 Инструменты

Рубанок

270

8 Инструменты

Дрель

1420

13 Электроника

Сотовый телефон

17990

14 Электроника

Пылесос

4280

15 Электроника

Стиральная машинка

14790

16 Электроника

Телевизор

10500

18 Электроника

Компьютер

45850

27 Мебель

Диван

20000

28 Мебель

Письменный стол

4200

29 Мебель

Шкаф-купе

23740

31 Посуда

Набор тарелок

1500

32 Посуда

Набор столовых приборов

1600

33 Посуда

Набор кострюль

1700

34 Посуда

Набор ножей

800


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


2. Теперь выполним запрос с условием WHERE:


SELECT * FROM `test_table` WHERE `category`='Инструменты'












































id category product cost
1 Инструменты

Набор гаечных ключей

1200

3 Инструменты

Шуруповерт

700

4 Инструменты

Перфоратор

3560

5 Инструменты

Набор отверток

630

6 Инструменты

Рубанок

270

8 Инструменты

Дрель

1420


После выполнения данного запроса у нас в выборке присутствуют данные только с категорией «Инструменты».


3. Дальше, выведем количество инструментов и их общую стоимость одним запросом:


SELECT COUNT(`id`) as 'Количество', SUM(`cost`) as 'Общая стоимость' FROM `test_table` WHERE `category`='Инструменты'










Количество Общая стоимость
6 7780


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


SELECT `category` as 'Категория', COUNT(`id`) as 'Количество', SUM(`cost`) as 'Стоимость' FROM `test_table` GROUP BY `category`



























Категория Количество
Стоимость

Инструменты

6 7780

Мебель

3 47940

Посуда

4 5600

Электроника

5 93410


Как видим, очень удобно.


5. Теперь добавим сортировку к предыдущему запросу. Сортировать будем по возрастанию стоимости:


SELECT `category` as 'Категория', COUNT(`id`) as 'Количество', SUM(`cost`) as 'Стоимость' FROM `test_table` GROUP BY `category` ORDER BY SUM(`cost`) ASC



























Категория Количество Стоимость
Посуда

4 5600

Инструменты

6 7780

Мебель

3 47940

Электроника

5 93410


Получается, мы в предыдущем запросе сделали группировку по общим значениям в колонке "Категория" и посчитали стоимость категории и количество товара в ней.


6. Ну и еще один способ задать условия выбора – использовать ключевое слово HAVING. Модифицируем предыдущий запрос, выбрав только те категории, где количество элементов больше 5:


SELECT `category` as 'Категория', COUNT(`id`) as 'Количество', SUM(`cost`) as 'Стоимость' FROM `test_table` GROUP BY `category` HAVING COUNT(`id`)>=5

















Категория Количество Стоимость
Инструменты

6 7780

Электроника

5 93410


Получается, с помощью конструкции HAVING мы вводим дополнительное условие для группировок.




Вот и все. С такими знаниями - да в бой идти не страшно:)

7349   1  

Comments

  1. Adam
    Adam 5 лет назад
    Hi there to every one, it’s in fact a fastidious for me to visit this web site, it contains helpful Information. We can get more details about mysql queries from here -
    https://www.etutorialspoint.com/index.php/mysql-tutorial/mysql-create-table