Что такое запрос SELECT в MySQL?
SELECT QUERY используется для получения данных из базы данных MySQL. Базы данных хранят данные для последующего поиска. Цель MySQL Select - вернуть из таблиц базы данных одну или несколько строк, соответствующих заданному критерию. Запрос на выбор можно использовать на языке сценариев, таком как PHP, Ruby, или выполнить его через командную строку.
Синтаксис оператора 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, которое сообщает базе данных, что вы хотите получить данные.
- [ОТЛИЧИТЕЛЬНЫЙ | ALL] - это необязательные ключевые слова, которые можно использовать для точной настройки результатов, возвращаемых оператором SQL SELECT. Если ничего не указано, по умолчанию принимается ВСЕ.
- {* | [fieldExpression [AS newName]} должна быть указана по крайней мере одна часть, "*" выбирает все поля из указанного имени таблицы, fieldExpression выполняет некоторые вычисления с указанными полями, такие как добавление чисел или объединение двух строковых полей в одно.
- FROM tableName является обязательным и должен содержать хотя бы одну таблицу, несколько таблиц должны быть разделены запятыми или объединены с помощью ключевого слова JOIN.
- Условие WHERE является необязательным, его можно использовать для указания критериев в результирующем наборе, возвращаемом из запроса.
- GROUP BY используется для объединения записей с одинаковыми значениями полей.
- Условие HAVING используется для указания критериев при работе с ключевым словом GROUP BY.
- ORDER BY используется для указания порядка сортировки набора результатов.
*
Символ звездочки используется для выбора всех столбцов в таблице. Пример простой инструкции SELECT выглядит так, как показано ниже.
SELECT * FROM `members`;
Приведенный выше оператор выбирает все поля из таблицы элементов. Точка с запятой означает конец оператора. Это не обязательно, но считается хорошей практикой заканчивать подобные заявления.
Практические примеры
Нажмите, чтобы загрузить базу данных myflix, используемую для практических примеров.
Вы можете научиться импортировать файл .sql в MySQL WorkBench
Примеры представлены в следующих двух таблицах.
Таблица 1: таблица участников
членский номер | полные имена | Пол | Дата рождения | Физический адрес | почтовый адрес | contct_ number | электронное письмо |
---|---|---|---|---|---|---|---|
1 | Джанет Джонс | женский | 21.07.1980 | Участок 1-й улицы No 4 | Личная сумка | 0759 253 542 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
2 | Джанет Смит Джонс | женский | 23.06.1980 | Мелроуз 123 | НОЛЬ | НОЛЬ | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
3 | Роберт Фил | Мужской | 12-07-1989 | 3-я улица, 34 | НОЛЬ | 12345 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
4 | Глория Уильямс | женский | 14-02-1984 | 2-я улица 23 | НОЛЬ | НОЛЬ | НОЛЬ |
Таблица 2: таблица фильмов
movie_id | заглавие | директор | year_released | category_id |
---|---|---|---|---|
1 | Пираты Карибского моря 4 | Роб Маршалл | 2011 г. | 1 |
2 | Забыть Сару Маршал | Николас Столлер | 2008 г. | 2 |
3 | Люди Икс | НОЛЬ | 2008 г. | НОЛЬ |
4 | Кодовое название Черный | Эдгар Джимз | 2010 г. | НОЛЬ |
5 | Папины маленькие девочки | НОЛЬ | 2007 г. | 8 |
6 | Ангелы и демоны | НОЛЬ | 2007 г. | 6 |
7 | Код Давинчи | НОЛЬ | 2007 г. | 6 |
9 | Медовые луны | Джон Шульц | 2005 г. | 8 |
16 | 67% виновных | НОЛЬ | 2012 г. | НОЛЬ |
Получение списка участников
Предположим, что мы хотим получить список всех зарегистрированных членов библиотеки из нашей базы данных, для этого мы воспользуемся сценарием, показанным ниже.
SELECT * FROM `members`;
Выполнение вышеуказанного сценария в рабочей среде MySQL дает следующие результаты.
членский номер | полные имена | Пол | Дата рождения | Физический адрес | почтовый адрес | contct_ number | электронное письмо |
---|---|---|---|---|---|---|---|
1 | Джанет Джонс | женский | 21.07.1980 | Участок 1-й улицы No 4 | Личная сумка | 0759 253 542 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
2 | Джанет Смит Джонс | женский | 23.06.1980 | Мелроуз 123 | НОЛЬ | НОЛЬ | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
3 | Роберт Фил | Мужской | 12-07-1989 | 3-я улица, 34 | НОЛЬ | 12345 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
4 | Глория Уильямс | женский | 14-02-1984 | 2-я улица 23 | НОЛЬ | НОЛЬ | НОЛЬ |
Наш вышеупомянутый запрос вернул все строки и столбцы из таблицы members.
Допустим, нас интересуют только поля full_names, пол, physical_address и email. Следующий сценарий поможет нам добиться этого.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Выполнение вышеуказанного сценария в рабочей среде MySQL дает следующие результаты.
полные имена | Пол | Физический адрес | электронное письмо |
---|---|---|---|
Джанет Джонс | женский | Участок 1-й улицы No 4 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
Джанет Смит Джонс | женский | Мелроуз 123 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
Роберт Фил | Мужской | 3-я улица, 34 | Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. |
Глория Уильямс | женский | 2-я улица 23 | НОЛЬ |
Получение списка фильмов
Помните, что в нашем предыдущем обсуждении мы упоминали выражения, используемые в операторах SELECT. Допустим, мы хотим получить список фильмов из нашей базы данных. Мы хотим, чтобы название фильма и имя режиссера были в одном поле. В скобках указывается имя режиссера фильма. Мы также хотим узнать год, когда был выпущен фильм. Следующий сценарий помогает нам в этом.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
ЗДЕСЬ
- Функция MySQL Concat () используется для объединения значений столбцов вместе.
- Строка «Concat (` title`, '(', `director`, ')') получает заголовок, добавляет открывающую скобку, за которой следует имя директора, а затем добавляет закрывающую скобку.
В функции Concat () части строки разделяются запятыми.
Выполнение вышеуказанного сценария в рабочей среде MySQL дает следующий набор результатов.
Concat (`название`, '(',` директор`, ')') | year_released |
---|---|
Пираты Карибского моря 4 (Роб Маршалл) | 2011 г. |
Забыть Сару Маршал (Николас Столлер) | 2008 г. |
НОЛЬ | 2008 г. |
Кодовое имя Блэк (Эдгар Джимц) | 2010 г. |
НОЛЬ | 2007 г. |
НОЛЬ | 2007 г. |
НОЛЬ | 2007 г. |
Медовые луны (Джон Шульц) | 2005 г. |
НОЛЬ | 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 г. |
НОЛЬ | 2008 г. |
Кодовое имя Блэк (Эдгар Джимц) | 2010 г. |
НОЛЬ | 2007 г. |
НОЛЬ | 2007 г. |
НОЛЬ | 2007 г. |
Медовые луны (Джон Шульц) | 2005 г. |
НОЛЬ | 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 для myflixdb дает нам результаты, показанные ниже.
членский номер | полные имена | год рождения |
---|---|---|
1 | Джанет Джонс | 1980 г. |
2 | Джанет Смит Джонс | 1980 г. |
3 | Роберт Фил | 1989 г. |
4 | Глория Уильямс | 1984 |
SQL с использованием MySQL Workbench
Теперь мы собираемся использовать рабочую среду MySQL для создания сценария, который будет отображать все имена полей из нашей таблицы категорий.
1. Щелкните правой кнопкой мыши таблицу категорий. Нажмите «Выбрать строки - ограничение 1000».
2. Инструментальная среда MySQL автоматически создаст SQL-запрос и вставит его в редактор.
3. Будут показаны результаты запроса.
Обратите внимание, что мы сами не писали оператор SELECT. Инструментальные средства MySQL сгенерировали его для нас.
Зачем использовать команду SELECT SQL, если у нас есть MySQL Workbench?
Теперь вы можете подумать, зачем изучать команду SQL SELECT для запроса данных из базы данных, если вы можете просто использовать такой инструмент, как рабочая среда MySQL, чтобы получить те же результаты, не зная языка SQL. Конечно, это возможно, но изучение того, как использовать команду SELECT, дает вам большую гибкость и контроль над вашими операторами SQL SELECT .
Инструментальные средства MySQL относятся к категории инструментов QBE « Запрос на примере ». Он предназначен для ускорения генерации операторов SQL и повышения производительности труда пользователей.
Изучение команды SQL SELECT может позволить вам создавать сложные запросы, которые нелегко создать с помощью утилит Query by Example, таких как рабочая среда MySQL.
Для повышения производительности вы можете сгенерировать код с помощью рабочей среды MySQL, а затем настроить его в соответствии со своими требованиями . Это может произойти только в том случае, если вы понимаете, как работают операторы SQL!
Резюме
- Ключевое слово SQL SELECT используется для запроса данных из базы данных и является наиболее часто используемой командой.
- Самая простая форма имеет синтаксис «SELECT * FROM tableName;»
- Выражения также могут использоваться в операторе выбора. Пример «ВЫБЕРИТЕ количество + цену из продаж»
- Команда SQL SELECT также может иметь другие необязательные параметры, такие как WHERE, GROUP BY, HAVING, ORDER BY. О них мы поговорим позже.
- Инструментальные средства MySQL могут помочь разрабатывать операторы SQL, выполнять их и выводить результат в том же окне.