MySQL Оператор SELECT с примерами
⚡ Умное резюме
MySQL Оператор SELECT извлекает строки из одной или нескольких таблиц, и каждый из приведенных ниже примеров выполняется на примере базы данных myflix, переходя от простого звездообразного запроса к выражениям, псевдонимам столбцов и строковым функциям.
Что такое запрос SELECT в MySQL?
ВЫБРАТЬ запрос используется для получения данных из MySQL База данных. Базы данных хранят данные для последующего извлечения. Цель MySQL Оператор SELECT возвращает одну или несколько строк из таблиц базы данных, соответствующих заданным критериям. Запрос SELECT можно использовать в скриптовых языках, таких как PHP или Ruby, или выполнить из командной строки.
Поскольку команда SELECT — это та команда, которую вы будете использовать чаще всего, стоит изучить её синтаксис, прежде чем работать с примерами данных.
Синтаксис оператора SQL SELECT
Команда SELECT является наиболее часто используемой командой SQL и имеет следующий общий синтаксис:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
ВОТ
- ВЫБОР — это ключевое слово SQL, которое сообщает базе данных, что вы хотите получить данные.
- [ОТЛИЧНЫЕ | ВСЕ] — это необязательные ключевые слова, которые уточняют результаты, возвращаемые оператором SQL SELECT. Если ничего не указано, по умолчанию используется значение ALL.
- {*| [fieldExpression [AS newName]} Необходимо указать хотя бы одну часть. Символ «*» выбирает все поля из указанного имени таблицы; fieldExpression выполняет вычисления над указанными полями, например, сложение чисел или объединение двух строковых полей в одно.
- от Параметр tableName является обязательным и должен содержать как минимум одну таблицу. Несколько таблиц должны быть разделены запятыми или объединены с помощью ключевого слова JOIN.
- ГДЕ Условие является необязательным. Оно задает критерии в результирующем наборе, возвращаемом запросом.
- ГРУППА ПО используется для объединения записей, имеющих одинаковые значения полей.
- HAVING Параметр condition используется для указания критериев при работе с ключевым словом GROUP BY.
- СОРТИРОВАТЬ ПО используется для указания порядка сортировки набора результатов.
*
Символ звездочки выделяет все столбцы в таблице. Простой оператор SELECT выглядит так, как показано ниже.
SELECT * FROM `members`;
Приведенное выше выражение выбирает все поля из таблицы members. Точка с запятой завершает выражение. Она не является обязательной, но считается хорошей практикой завершать выражения таким образом.
SELECT DISTINCT and LIMIT in MySQL
Два необязательных ключевых слова в синтаксисе заслуживают более подробного рассмотрения, поскольку новички сталкиваются с ними, как только таблица начинает расти.
DISTINCT Удаляет повторяющиеся строки из результирующего набора. В таблице movies хранится информация о нескольких фильмах, выпущенных в 2007 году, поэтому простой запрос повторяет этот год. DISTINCT возвращает каждое значение один раз.
SELECT DISTINCT `year_released` FROM `movies`;
ОГРАНИЧЕНИЯ ограничивает количество возвращаемых строк, что защищает клиента от запроса, который в противном случае извлек бы миллионы записей.
SELECT * FROM `movies` LIMIT 5;
| Ключевое слово | Что она делает | Когда это использовать |
|---|---|---|
| ВСЕ (по умолчанию) | Возвращает все совпадающие строки, включая дубликаты. | Подсчет или составление списка исходных записей |
| DISTINCT | Объединяет повторяющиеся строки в одну. | Составление списка уникальных ценностей |
| ОГРАНИЧЕНИЯ | Возвращает только первые N строк | Предварительный просмотр данных или постраничный просмотр результатов |
После того как синтаксис улажен, пример базы данных оживляет эти условия.
Практические примеры использования оператора SELECT
Нажмите, чтобы скачать База данных myflix, использованная для практических примеров.
Вы можете узнать, как импортировать файл .sql в MySQL Верстак.
Примеры приведены на основе следующих двух таблиц.
Таблица 1: члены (см. таблицу ниже)
| Количество членов | полные имена | пол | Дата рождения | Физический адрес | почтовый адрес | контактный_ номер | |
|---|---|---|---|---|---|---|---|
| 1 | Джанет Джонс | F | 21-07-1980 | Первая улица, участок № 4 | Частная сумка | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Джанет Смит Джонс | F | 23-06-1980 | Мелроуз 123 | NULL, | NULL, | jj@fstreet.com |
| 3 | Роберт Фил | M | 12-07-1989 | 3-я улица, 34 | NULL, | 12345 | rm@ttreet.com |
| 4 | Глория Уильямс | F | 14-02-1984 | 2-я улица, 23 | NULL, | NULL, | NULL, |
Таблица 2: кино (см. таблицу ниже)
| Movie_id | название | директор | год_выпущено | ид_категории |
|---|---|---|---|---|
| 1 | Пираты Карибского моря 4 | Роб Маршалл | 2011 | 1 |
| 2 | Забыть Сару Маршал | Николас Столлер | 2008 | 2 |
| 3 | X-Men | NULL, | 2008 | NULL, |
| 4 | Code Имя Черный | Эдгар Джимз | 2010 | NULL, |
| 5 | Папины маленькие девочки | NULL, | 2007 | 8 |
| 6 | Ангелы и демоны | NULL, | 2007 | 6 |
| 7 | Да Винчи Code | NULL, | 2007 | 6 |
| 9 | Honey moonERS | Джон Шульц | 2005 | 8 |
| 16 | 67% Виновен | NULL, | 2012 | NULL, |
Получение списка участников
Предположим, нам нужен список всех зарегистрированных членов библиотеки из нашей базы данных. Для этого мы воспользуемся приведенным ниже скриптом.
SELECT * FROM `members`;
Выполнение скрипта в MySQL Программа Workbench выдает следующие результаты.
| Количество членов | полные имена | пол | Дата рождения | Физический адрес | почтовый адрес | контактный_ номер | |
|---|---|---|---|---|---|---|---|
| 1 | Джанет Джонс | F | 21-07-1980 | Первая улица, участок № 4 | Частная сумка | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Джанет Смит Джонс | F | 23-06-1980 | Мелроуз 123 | NULL, | NULL, | jj@fstreet.com |
| 3 | Роберт Фил | M | 12-07-1989 | 3-я улица, 34 | NULL, | 12345 | rm@ttreet.com |
| 4 | Глория Уильямс | F | 14-02-1984 | 2-я улица, 23 | NULL, | NULL, | NULL, |
Запрос вернул все строки и столбцы из таблицы members.
Выбор определенных столбцов
Допустим, нас интересуют только поля full_name, gender, physical_address и email. Следующий скрипт позволяет это сделать.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Выполнение скрипта в MySQL Программа Workbench выдает следующие результаты.
| полные имена | пол | Физический адрес | |
|---|---|---|---|
| Джанет Джонс | F | Первая улица, участок № 4 | janetjones@yagoo.cm |
| Джанет Смит Джонс | F | Мелроуз 123 | jj@fstreet.com |
| Роберт Фил | M | 3-я улица, 34 | rm@ttreet.com |
| Глория Уильямс | F | 2-я улица, 23 | NULL, |
Создание списка фильмов с использованием выражений
Выражения также можно использовать в операторах SELECT. Допустим, нам нужен список фильмов, в котором название и имя режиссера указаны в одном поле, имя режиссера — в скобках, а также год выхода фильма. Следующий скрипт это делает.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
ВОТ
- Функция Concat() MySQL Эта функция объединяет значения столбцов.
- Строка “Concat(`title`, ' (', `director`, ')')” получает заголовок, добавляет открывающую скобку, за которой следует имя режиссера, а затем закрывающую скобку.
- В функции Concat() части строки разделяются запятыми.
Выполнение скрипта в MySQL Программа Workbench выдает следующий набор результатов.
| Concat(`title`, ' (', `режиссер`, ')') | год_выпущено |
|---|---|
| Пираты Карибского моря 4 (Роб Маршалл) | 2011 |
| Забыть Сару Маршал (Николас Столлер) | 2008 |
| NULL, | 2008 |
| Code Имя Блэк (Эдгар Джимз) | 2010 |
| NULL, | 2007 |
| NULL, | 2007 |
| NULL, | 2007 |
| Honey mooners (Джон Шульц) | 2005 |
| NULL, | 2012 |
Примечание: Функция Concat() возвращает NULL, если хотя бы один из аргументов равен NULL, поэтому фильмы без указания режиссера отображаются выше как NULL.
Названия полей-псевдонимов
В приведенном выше примере в качестве имени поля был возвращен код конкатенации. Чтобы использовать более описательное имя поля в результирующем наборе, примените псевдоним столбца. Ниже приведен базовый синтаксис.
SELECT `column_name|value|expression` [AS] `alias_name`;
ВОТ
- “SELECT `column_name|value|expression`” Это обычный оператор SELECT, который может представлять собой имя столбца, значение или выражение.
- "[КАК]" Это необязательное ключевое слово перед именем псевдонима.
- «`имя_псевдонима`» — это псевдоним, который возвращается в результирующем наборе в качестве имени поля.
Тот же запрос, но с более осмысленным названием столбца:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
В результате получаем следующее.
| Конкат | год_выпущено |
|---|---|
| Пираты Карибского моря 4 (Роб Маршалл) | 2011 |
| Забыть Сару Маршал (Николас Столлер) | 2008 |
| NULL, | 2008 |
| Code Имя Блэк (Эдгар Джимз) | 2010 |
| NULL, | 2007 |
| NULL, | 2007 |
| NULL, | 2007 |
| Honey mooners (Джон Шульц) | 2005 |
| NULL, | 2012 |
Отображение года рождения в списке участников
Предположим, нам нужен список всех участников, содержащий номер участника, полные имена и год рождения. Мы можем использовать строковую функцию LEFT для этого.tracГод рождения определяется по полю «Дата рождения».
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
ВОТ
- «ЛЕВЫЙ(`дата_рождения`,4)» ЛЕВАЯ строковая функция Принимает дату рождения в качестве параметра и возвращает только 4 символа слева.
- «КАК `год_рождения`» это псевдоним столбца Возвращено в наших результатах. Ключевое слово AS не является обязательнымВы можете его опустить, и запрос все равно будет работать.
Выполнение запроса в MySQL Результаты, полученные с помощью Workbench при работе с базой данных myflixdb, показаны ниже.
| Количество членов | полные имена | год рождения |
|---|---|---|
| 1 | Джанет Джонс | 1980 |
| 2 | Джанет Смит Джонс | 1980 |
| 3 | Роберт Фил | 1989 |
| 4 | Глория Уильямс | 1984 |
Запросы, написанные вручную, — это лишь один из способов получения набора результатов. Workbench также может сформировать запрос автоматически.
Использование SQL MySQL Верстак
Теперь мы собираемся использовать MySQL Workbench для генерации скрипта, отображающего все названия полей из нашей таблицы категорий.
1. Щелкните правой кнопкой мыши на таблице «Категории». Нажмите «Выбрать строки — ограничение 1000».
2. MySQL Workbench автоматически создает SQL-запрос и вставляет его в редактор.
3. Результаты запроса отображаются в таблице под редактором.
Как видно на скриншоте, мы сами не писали оператор SELECT. MySQL Workbench сгенерировал это для нас.
Зачем использовать команду SQL SELECT, если у нас есть MySQL Верстак?
Возможно, вы задаетесь вопросом, зачем изучать команду SQL SELECT, если такой инструмент, как SQL SELECT, может вам помочь. MySQL Workbench возвращает те же результаты без знания языка SQL. Такой способ возможен, но... Изучение команды SELECT дает вам больше гибкость и контроль над вашим Операторы SQL SELECT.
MySQL Workbench относится к категории «Запрос по примеруИнструменты (QBE). Они предназначены для более быстрой генерации SQL-запросов и повышения производительности пользователей.
Изучение команды SQL SELECT позволит вам создавать сложные запросы которые нелегко сгенерировать с помощью утилит Query by Example, таких как MySQL Верстак.
Для повышения производительности вы можете сгенерировать код в MySQL Верстак, то настроить его удовлетворить ваши требованияЭто возможно только при понимании принципа работы SQL-запросов.




