Рис. 29
Примечание
Поскольку пока мы изучаем только базовые запросы, мы будем запускать только один оператор SQL. В более сложных запросах мы можем использовать несколько операторов, которые будут выполняться одновременно. Возможность выполнения операторов по отдельности очень полезна в запросах, содержащих несколько операторов. Если на панели выполнения содержится только один оператор SQL, то обе кнопки воспроизведения по сути выполняют одно и то же действие.
На панели результатов приведены выходные данные, сгенерированные нашим запросом. При получении большого количества результатов, которые не помещаются на одном экране (рис. 30), в браузере появится полоса прокрутки.
Есть еще один способ определить, сколько результатов (в данном случае на экране мы видим только пять) выдает данный запрос. Ниже панели результатов расположена панель сообщений, в которой отображается информация о нашем запросе.
• Количество строк, возвращаемых нашим оператором SQL.
• Время, необходимое на выполнение нашего запроса или оператора SQL.
• Сообщения об ошибках, если наш оператор SQL содержит ошибки.
Рис. 30
Рис. 31
В первую очередь из сообщения мы видим, что в результате нашего запроса вернулось 347 строк. Это сообщение полезно, в случае если бы мы не заметили появление полосы прокрутки. Далее мы прочтем, что наш запрос был выполнен за 9 миллисекунд (сокращенно 9 мс). Почему так важно знать, сколько времени требуется на обработку запроса? В данном случае, может, это и не особо важно. Однако при работе с большими базами данных и с более сложными запросами возврат данных может занять гораздо больше времени. Время выполнения запроса также зависит от оптимальности построения и структуры базы данных. Более подробно о структуре базы данных при работе с несколькими таблицами мы поговорим в главе 6.
Примечание
Панель сообщений — место, где также будут отображаться сообщения об ошибках. Если ваш запрос не выполняется корректно, необходимо проверить панель сообщений.
Контрольные вопросы
Примечание
Теперь пришло время первых контрольных вопросов! Они приводятся в конце каждой главы. Контрольные вопросы и практические задания — это основа закрепления теоретических знаний.
Используя вкладки Database Structure (Структура базы данных) и Browse Data (Просмотр данных), ответьте на следующие вопросы.
1. Сколько таблиц в нашей базе данных?
2. Сколько полей в таблице tracks?
3. Какие типы данных указаны в этой таблице?
4. Как выглядят данные в таблице?
НАПОМИНАНИЕ
В приложении I в конце книги приведены ответы на контрольные вопросы.
Резюме
• DB Browser для SQLite (выбранное нами программное обеспечение) открывается, как и любая другая компьютерная программа.
• Нажав кнопку Open Database (Открыть базу данных), вы сможете выбрать файл базы данных на вашем компьютере.
• Структуру файла базы данных вы можете изучить на вкладке Database Structure (Структура базы данных).
• Вкладка Browse Data (Просмотр данных) используется для просмотра отдельных записей в таблице, которые можно выбрать из раскрывающегося меню.
• Вкладку Execute SQL (Выполнить SQL-запрос) используют, чтобы написать, а затем выполнить запрос SQL.
• Панель результатов содержит данные, возвращаемые запросом.
• Панель сообщений содержит информацию о запросе, включая количество возвращенных строк, время выполнения запроса и сообщения о возможных ошибках.
Часть II. Операторы SQLГлава 4. Работа с запросами
SQL — это мощный и надежный язык, предлагающий пользователю широкий спектр команд. В действительности язык SQL содержит их гораздо больше, чем мы показываем в этой книге. Самые простые и удобные команды вы сможете сразу же начать изучать на практике, а не только в теории. В следующей главе вы познакомитесь с основами создания хорошего запроса и форматирования результатов. Изучив эту главу, вы научитесь выбирать отдельные поля из конкретной базы данных и отображать их в алфавитном порядке. Давайте начнем!
Добавление комментариев к запросам
Прежде чем составить свой первый SQL-запрос, рассмотрим, как писать комментарии. Комментарии — это простые предложения, которые помогают понять логику вашего SQL-запроса. Использование комментариев в SQL очень полезно, так как они поясняют сложную логику запроса.
В SQL комментарии бывают двух типов. Однострочные начинаются с двух дефисов (-). Пример ниже демонстрирует комментарий, созданный в строке 1 (рис. 32).
Многострочные комментарии начинаются с сочетания символов /* и заканчиваются символами */. Все, что находится между открывающим и закрывающим символами, — это комментарии (рис. 33).
Рис. 32
Рис. 33
В примере приведена стандартная информация, которую полезно включать в блок комментариев. Разработчик, дата разработки и описание имеют большое значение для всех, кто сталкивается с SQL-запросом или сценарием.
На мой взгляд,
разработчики частенько игнорируют комментарии в SQL. В следующих главах мы не используем комментарии только для краткости. При работе с реальными базами данных использование комментариев экономит время, которое пришлось бы потратить на написание дополнительных запросов, чтобы прояснить работу базы данных. Комментарии особенно важны, когда ваши запросы используются другими разработчиками.
Общая структура запроса
Написать запрос — это то же самое, что задать вопрос на любом человеческом языке. Большое значение имеют формулировка, детали и порядок слов. Чем детальнее наш вопрос, тем точнее будет ответ.
При создании SQL-запроса необходимо учитывать следующие пять моментов.
1. С какой базой данных мы работаем?
2. Из какой таблицы в этой базе данных нам необходимо извлечь данные?
3. Какие поля в этой таблице нас интересуют?
4. Хотим ли мы исключить какие-либо данные, отфильтровать или исключить какой-либо диапазон или период времени?
5. Как сформулировать наш запрос одним простым предложением на человеческом языке?
Цель этих вопросов — построить взаимосвязь между человеческим языком, на котором мы обычно говорим или пишем, и языком SQL. Если вы работаете аналитиком данных, то обычные вопросы о бизнесе, которые вам задают, необходимо преобразовать в операторы SQL. После получения результатов запроса следует преобразовать их обратно в доступный для всех человеческий язык. Таков принцип работы.
Примечание
Если у вас возникли проблемы с запросом, ответьте на пять вопросов, приведенных выше. И только потом пишите свой запрос.
Пишем свой первый запрос
Чтобы написать свой первый запрос, используйте существующую вкладку Execute SQL (Выполнить SQL-запрос), обозначенную SQL 1, или откройте новую вкладку панели запросов, как если бы вы открывали новую вкладку веб-браузера. Щелкните на значке Open Tab (Открыть вкладку) (рис. 34).
Итак, новая панель запросов открыта! В первую очередь пишем блок комментариев:
/*
CREATED BY: <ваше имя>
CREATED ON: <дата>
DESCRIPTION: <краткое описание запроса, например вопрос № 5>
*/
Рис. 34
Закончив блок комментариев, займемся написанием запроса SQL. Для запроса нам необходим понятный вопрос. В главе 2 мы рассмотрели пример рабочего сценария для нашей книги: вы аналитик данных компании sTunes. Как вы уже знаете из главы 3, компания sTunes специализируется на онлайн-продажах музыкальной продукции и имеет цифровую библиотеку исполнителей, треков и альбомов, а также список клиентов, которые приобрели музыкальные произведения. Предположим, служба поддержки sTunes желает разослать новую рекламу всем своим клиентам. В этом случае службе поддержки клиентов необходимо знать, обновлен ли список клиентских контактов, поэтому они наверняка поинтересуются, можем ли мы дать им полный список имен, фамилий и адресов электронной почты клиентов (если имеются) из базы данных. Как мы ответим на этот вопрос? Вернемся к пяти базовым моментам, которые следует учитывать при составлении запроса и о которых речь шла ранее в этой главе.
1. С какой базой данных мы работаем?
В этом случае мы будем работать только с одной базой данных. База данных sTunes уже должна быть открыта в DB Browser. Если вы после изучения главы 3 закрыли браузер, откройте снова его, а также файл базы данных sTunes.
2. Из какой таблицы в этой базе данных нам необходимо извлечь данные?
Нам необходимо получить информацию о клиентах. Просматривая вкладку Database Structure (Структура базы данных), мы видим, что у нас есть таблица с именем customers (клиенты). Это то, что нам нужно!
3. Какие поля в этой таблице нас интересуют?
Ответить на этот вопрос можно, заглянув во вкладку Browse Data (Просмотр данных). Щелкните на этой вкладке и в раскрывающемся меню выберите таблицу customers — таблица содержит поля для имени, фамилии и электронной почты.
4. Хотим ли мы исключить какие-либо данные, отфильтровать или исключить какой-либо диапазон или период времени?
В данном случае служба поддержки sTunes желает получить список всех клиентов, поэтому лучше ничего не исключать.
5. Как сформулировать наш запрос одним простым предложением на человеческом языке?
С помощью запроса нам необходимо осуществить выборку следующей информации из таблицы customers: имя, фамилия и адрес электронной почты.
Сначала добавьте блок комментариев, затем добавьте условие FROMcustomers. Оно определяет, в какой таблице искать данные. Далее перед условием FROM введите оператор SELECT и необходимые имена полей из таблицы customers. Имя каждого поля отделяется запятой. Полученный код будет выглядеть следующим образом:
/*
CREATED BY: Уолтер Шилдс
CREATED ON: 03/13/2018
DESCRIPTION: Данный запрос осуществляет выборку полей имени, фамилии, электронной почты из таблицы customers (клиентов).
*/
SELECT
FirstName,
LastName,
FROM
customers;
Запустите запрос на выполнение, щелкнув на кнопке воспроизведения Execute SQL (Выполнить SQL-запрос), расположенной на панели меню. Результаты запроса отобразятся ниже на панели результатов (рис. 35). Панель сообщений также показывает, что в результате выполнения запроса вернулось 59 строк (или записей) за 3 миллисекунды.
Рис. 35
Практические задания
• Добавьте в запрос еще одно поле из таблицы customers. В список рассылки добавьте поле Company или Phone. Не забудьте запятую!