MySQL Оператор SELECT с примерами

⚡ Умное резюме

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

  • 🔎 Основная цель: Оператор SELECT извлекает сохраненные строки, соответствующие заданным критериям, из командной строки или из PHP. Pythonи другие языки.
  • 🧩 Порядок синтаксиса: Операторы SELECT, FROM, WHERE, GROUP BY, HAVING и ORDER BY должны располагаться в указанной последовательности.
  • Звездный ярлык: Запрос SELECT * FROM `members` возвращает все столбцы, а явное указание имен столбцов позволяет уменьшить размер результирующих наборов и ускорить работу системы.
  • 🔗 Выражения: Функция Concat() объединяет значения столбцов, а функция LEFT() удаляет символы, поэтому вычисляемые поля отображаются непосредственно в результирующем наборе.
  • 🏷️ Псевдонимы столбцов: Необязательное ключевое слово AS переименовывает любое выражение, заменяя нечитаемые заголовки, такие как Concat(`title`), понятными метками.
  • 🇧🇷 Сравнение рабочих мест: MySQL Workbench генерирует запросы визуально, однако для получения сложных и точных данных по-прежнему необходимы операторы SELECT, написанные вручную.

Что такое запрос SELECT в MySQL?

ВЫБРАТЬ запрос используется для получения данных из MySQL База данных. Базы данных хранят данные для последующего извлечения. Цель MySQL Оператор SELECT возвращает одну или несколько строк из таблиц базы данных, соответствующих заданным критериям. Запрос SELECT можно использовать в скриптовых языках, таких как PHP или Ruby, или выполнить из командной строки.

SELECT запрос в MySQL

Поскольку команда 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: члены (см. таблицу ниже)

Количество членов полные имена пол Дата рождения Физический адрес почтовый адрес контактный_ номер e-mail
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 выдает следующие результаты.

Количество членов полные имена пол Дата рождения Физический адрес почтовый адрес контактный_ номер e-mail
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 выдает следующие результаты.

полные имена пол Физический адрес e-mail
Джанет Джонс 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. Результаты запроса отображаются в таблице под редактором.

SQL с использованием MySQL Верстак

Как видно на скриншоте, мы сами не писали оператор 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-запросов.

Понимание MySQL Оператор SELECT

Часто задаваемые вопросы (FAQ)

Обычно да. Запрос SELECT * считывает все столбцы, включая большие текстовые поля и поля типа BLOB, которые вам могут не понадобиться, и блокирует покрывающие индексы. Присвоение имен столбцам позволяет уменьшить размер результирующего набора и ускорить выполнение запроса.

Ключевые слова, такие как SELECT и FROM, не чувствительны к регистру. Сравнение строк осуществляется в соответствии с кодировкой столбца, поэтому кодировка, нечувствительная к регистру, например utf8mb4_0900_ai_ci, рассматривает «Janet» и «janet» как равные.

Обычно причиной является отсутствие индекса. Перед выполнением запроса запустите команду EXPLAIN, чтобы проверить, так ли это. MySQL Выполняет полное сканирование таблицы, затем индексирует отфильтрованные или объединенные столбцы и возвращает только необходимые строки.

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

Нет. ИИ быстро составляет запрос, но вам все равно приходится проверять логику, соединения и производительность. MySQL ВерстакЗнание оператора SELECT позволяет выявить некорректный результат до того, как он попадет в рабочую среду.

Подведем итог этой публикации следующим образом: