Учебники

7) Оператор SELECT

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

SELECT QUERY используется для извлечения данных из базы данных MySQL. Базы данных хранят данные для последующего поиска. Цель MySQL Select – вернуть из таблиц базы данных одну или несколько строк, соответствующих заданным критериям. Запрос на выбор может быть использован в скриптовом языке, таком как PHP, Ruby, или вы можете выполнить его из командной строки.

Запрос SELECT в MySQL

Синтаксис оператора SQL SELECT

Это наиболее часто используемая команда SQL и имеет следующий общий синтаксис

SELECT [DISTINCT|ALL ] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition][GROUP BY fieldName(s)]  [HAVING condition] ORDER BY fieldName(s)

ВОТ

  • SELECT – это ключевое слово SQL, которое позволяет базе данных знать, что вы хотите получить данные.
  • [DISTINCT | ALL] – необязательные ключевые слова, которые можно использовать для точной настройки результатов, возвращаемых оператором SQL SELECT. Если ничего не указано, то по умолчанию принимается ALL.
  • {* | [fieldExpression [AS newName]} должна быть указана как минимум одна часть, «*» выбрал все поля из указанного имени таблицы, fieldExpression выполняет некоторые вычисления для указанных полей, например, добавляет числа или объединяет два строковых поля в одно.
  • FROM tableName является обязательным и должен содержать хотя бы одну таблицу, несколько таблиц должны быть разделены запятыми или объединены с помощью ключевого слова JOIN.
  • Если условие является необязательным, его можно использовать для указания критериев в наборе результатов, возвращаемых запросом.
  • GROUP BY используется для объединения записей, имеющих одинаковые значения полей.
  • Условие HAVING используется для указания критериев при работе с ключевым словом GROUP BY.
  • ORDER BY используется для указания порядка сортировки набора результатов.

 

*

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

SELECT * FROM `members`;

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

Практические примеры

Нажмите, чтобы загрузить базу данных myflix, используемую для практических примеров.

Вы можете научиться импортировать файл .sql в MySQL WorkBench.

Примеры выполняются в следующих двух таблицах

Таблица 1: таблица участников

членский номер полные имена Пол Дата рождения Физический адрес почтовый адрес номер контракта электронное письмо
1

Джанет Джонс женский 21-07-1980 Первый Улица Участка № 4 Частная сумка 0759 253 542 janetjones@yagoo.cm
2

Джанет Смит Джонс женский 23-06-1980 Мелроуз 123

ЗНАЧЕНИЕ NULL ЗНАЧЕНИЕ NULL jj@fstreet.com
3

Роберт Фил мужчина 12-07-1989 3-я улица, 34

ЗНАЧЕНИЕ NULL 12345 rm@tstreet.com
4

Глория Уильямс женский 14-02-1984 2-я улица, 23

ЗНАЧЕНИЕ NULL ЗНАЧЕНИЕ NULL ЗНАЧЕНИЕ NULL

Таблица 2: таблица фильмов

movie_id заглавие директор year_released category_id
1 Пираты Карибского моря 4 Роб Маршалл 2011 1
2 Забыть Сару Маршал Николас Столлер 2008 2
3 X-Men ЗНАЧЕНИЕ NULL 2008 ЗНАЧЕНИЕ NULL
4 Кодовое имя черный Эдгар Джимз 2010 ЗНАЧЕНИЕ NULL
5 Папочки маленькие девочки ЗНАЧЕНИЕ NULL 2007 8
6 Ангелы и демоны ЗНАЧЕНИЕ NULL 2007 6
7 Код Давинчи ЗНАЧЕНИЕ NULL 2007 6
9 Медовые луны Джон Шульц 2005 8
16 67% виновных ЗНАЧЕНИЕ NULL 2012 ЗНАЧЕНИЕ NULL

Получение списка участников

Давайте предположим, что мы хотим получить список всех зарегистрированных членов библиотеки из нашей базы данных, мы будем использовать скрипт, показанный ниже, чтобы сделать это.

SELECT * FROM `members`;

Выполнение вышеупомянутого сценария в MySQL Workbench дает следующие результаты.

членский номер полные имена Пол Дата рождения Физический адрес почтовый адрес номер контракта электронное письмо
1

Джанет Джонс женский 21-07-1980 Первый Улица Участка № 4 Частная сумка 0759 253 542 janetjones@yagoo.cm
2

Джанет Смит Джонс женский 23-06-1980 Мелроуз 123

ЗНАЧЕНИЕ NULL ЗНАЧЕНИЕ NULL jj@fstreet.com
3

Роберт Фил мужчина 12-07-1989 3-я улица, 34

ЗНАЧЕНИЕ NULL 12345 rm@tstreet.com
4

Глория Уильямс женский 14-02-1984 2-я улица, 23

ЗНАЧЕНИЕ NULL ЗНАЧЕНИЕ NULL ЗНАЧЕНИЕ NULL

 

Наш запрос выше вернул все строки и столбцы из таблицы members.

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

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

Выполнение вышеупомянутого сценария в MySQL Workbench дает следующие результаты.

полные имена Пол Физический адрес электронное письмо
Джанет Джонс женский Первый Улица Участка № 4 janetjones@yagoo.cm
Джанет Смит Джонс женский Мелроуз 123 jj@fstreet.com
Роберт Фил мужчина 3-я улица, 34 rm@tstreet.com
Глория Уильямс женский 2-я улица, 23 ЗНАЧЕНИЕ NULL

Получение списка фильмов

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

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

ВОТ

  • MySQL-функция Concat () используется для объединения значений столбцов.
  • Строка “Concat (` title`, ‘(‘, Director “, ‘)’) получает заголовок, добавляет открывающую скобку, за которой следует имя директора, затем добавляет закрывающую скобку.

Строковые части разделяются запятыми в функции Concat ().

Выполнение вышеупомянутого сценария в MySQL Workbench приводит к следующему набору результатов.

Concat (`title`, ‘(‘, Director`, ‘)’) year_released
Пираты Карибского моря 4 (Роб Маршалл) 2011
Забыть Сару Маршал (Николас Столлер) 2008
ЗНАЧЕНИЕ NULL 2008
Кодовое имя Черный (Эдгар Джимз) 2010
ЗНАЧЕНИЕ NULL 2007
ЗНАЧЕНИЕ NULL 2007
ЗНАЧЕНИЕ NULL 2007
Медовые луны (Джон Шульц) 2005
ЗНАЧЕНИЕ NULL 2012

 

Имена полей псевдонимов

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

SELECT `column_name|value|expression` [AS] `alias_name`;

ВОТ

  • «SELECT` имя_ столбца | значение | выражение `» – это обычный оператор SELECT, который может быть именем столбца, значением или выражением.
  • «[AS]» является необязательным ключевым словом перед именем псевдонима, обозначающим выражение, значение или имя поля, которое будет возвращено как.
  • «alias_name» – это псевдоним, который мы хотим вернуть в нашем наборе результатов в качестве имени поля.

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

SELECT Concat(`title`, ' (', `director`, ')') AS 'Concat', `year_released` FROM `movies`;

Получаем следующий результат

Concat year_released
Пираты Карибского моря 4 (Роб Маршалл) 2011
Забыть Сару Маршал (Николас Столлер) 2008
ЗНАЧЕНИЕ NULL 2008
Кодовое имя Черный (Эдгар Джимз) 2010
ЗНАЧЕНИЕ NULL 2007
ЗНАЧЕНИЕ NULL 2007
ЗНАЧЕНИЕ NULL 2007
Медовые луны (Джон Шульц) 2005
ЗНАЧЕНИЕ NULL 2012

Получение списка участников с указанием года рождения

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

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

ВОТ

  • «ЛЕВЫЙ (` date_of_birth`, 4)» функция строки ЛЕВЫЙ принимает дату рождениякачестве параметра и возвращает только 4 символа слева.
  • «AS` year_of_birth` » – это псевдоним столбца, который будет возвращен в наших результатах. Обратите внимание, что ключевое слово AS является необязательным , вы можете не указывать его, и запрос все равно будет работать.

Выполнение вышеуказанного запроса в MySQL Workbench против myflixdb дает нам результаты, показанные ниже.

членский номер полные имена год рождения
1

Джанет Джонс 1980
2

Джанет Смит Джонс 1980
3

Роберт Фил 1989
4

Глория Уильямс 1984

SQL с использованием MySQL Workbench

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

1. Щелкните правой кнопкой мыши таблицу категорий. Нажмите «Выбрать строки – предел 1000»

2. MySQL Workbench автоматически создаст SQL-запрос и вставит его в редактор.

3. Результаты запроса будут показаны

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

Обратите внимание, что мы сами не писали оператор SELECT. MySQL верстак сгенерировал это для нас.

 

Зачем использовать команду SELECT SQL, когда у нас есть MySQL Workbench?

Теперь вы можете подумать, зачем изучать команду SQL SELECT для запроса данных из базы данных, когда вы можете просто использовать инструмент, такой как инструментальные средства MySQL, для получения тех же результатов без знания языка SQL. Конечно, это возможно, но изучение того, как использовать команду SELECT, дает вам больше гибкости и контроля над операторами SQL SELECT .

MySQL Workbench относится к категории инструментов QBE « Запрос по примеру ». Он призван помочь быстрее генерировать операторы SQL для повышения производительности пользователей.

Изучение команды SQL SELECT может позволить вам создавать сложные запросы, которые не могут быть легко сгенерированы с помощью утилит Query by Example, таких как MySQL Workbench.

Для повышения производительности вы можете сгенерировать код с помощью MySQL, а затем настроить его под свои требования . Это может произойти, только если вы понимаете, как работают операторы SQL!

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

 

Резюме

  • Ключевое слово SQL SELECT используется для запроса данных из базы данных, и это наиболее часто используемая команда.
  • Простейшая форма имеет синтаксис «SELECT * FROM tableName;»
  • Выражения также можно использовать в операторе выбора. Пример «ВЫБЕРИТЕ количество + цена ОТ ПРОДАЖ»
  • Команда SQL SELECT также может иметь другие необязательные параметры, такие как WHERE, GROUP BY, HAVING, ORDER BY. Они будут обсуждаться позже.
  • MySQL Workbench может помочь в разработке операторов SQL, их выполнении и выводе результата в том же окне.