SQL простыми словами
На основе материалов спикеров курса “SQL с 0 для анализа данных” собрали все, что нужно знать об SQL на первых порах. Привели реальные кейсы использования языка запросов и показали, как написать ваш первый код.
28 показов
10K открытий
- Что такое SQL?
- Кому и для чего необходимо уметь его использовать?
- С чего начать обучение SQL?
- Типы данных
- Интересные факты об SQL
Что такое SQL?
SQL, или Structured Query Language, — это язык структурированных запросов, использующийся для работы с базой данных: извлечения, обновления, добавления и удаления информации из нее. То есть, SQL — язык запросов для “общения” с данными.
Представить можно так:
Только вместо всем нам понятной фразы “принеси чай” используется особый синтаксис, другой язык. При работе с данными, как и при разговоре с представителем другой страны, вы будете использовать язык, понятный собеседнику, в нашем случае — компьютеру:
Кому и для чего нужно знать SQL?
Знание SQL часто требуют не только от аналитиков, но и от продактов, проджектов и даже маркетологов. И не зря, ведь у языка структурированных запросов действительно масса возможностей.
- Извлечение данных
С помощью SQL вы работаете с данными, которые уже собирает ваша компания. Например, у сервиса ЯндексТакси есть данные по поездкам, таксистам, пользователям, работе службы поддержки и так далее. Так, с помощью SQL можно извлечь информацию по всем поездкам в Москве в промежуток с 18 до 19 часов для анализа спроса в час-пик.
- Изменение данных
К примеру, изменить имена всех пользователей “Татьяна” на “Марина”. Если представить более реалистичный кейс — можно исключить из базы данных пользователей, которые попали в нее по ошибке.
- Добавление данных
SQL позволяет объединять базы данных, выгружать скачанные БД (например, какую-то информацию от ваших конкурентов) для дальнейшего анализа.
- Валидация данных
Например, отчеты других аналитических систем, использующиеся в других отделах, могут не вызывать доверия из-за подозрительных скачков (просело количество посещений сайта, резко уменьшились клики и тд). С помощью SQL можно быстро сделать запрос в источник данных и проверить, так ли плоха ситуация.
- Скорость
Как уже упоминали, SQL полезен не только аналитикам. Представим, что вы продакт, вам необходимо быстро проверить новую гипотезу, а для этой задачи без данных не обойтись. Гораздо быстрее постановки ТЗ и согласования с аналитиками.
Примеры использования SQL:
- Онлайн-магазин: посчитать количество покупателей из Самары за предыдущий год
- Видео-платформа: найти топ-10 фильмов, у которых было больше всего просмотров за 2020 год в категории “комедии”
- Маркетинг: найти email пользователей, которые совершили покупку после нажатия на кнопку в рассылке
- Игры: определить, на каких уровнях игры пользователи тратят больше всего времени и после каких перестают заходить в приложение
Зачастую функционала GoogleAnalitics, YandexMetrics, Excel и Tableau бывает недостаточно из-за слишком большого объема данных, долгой настройки или сложных экспериментов. Поэтому большинство компаний и используют SQL.
С чего начать?
Систем управления базами данных (СУБД) несколько, например, MySQL, Oracle, SQLServer или PostgreSQL. На курсе “SQL с 0 для анализа данных” Анна Атласова, бизнес-аналитик из Amazon, для начала советует попрактиковаться на web-версии SQLite.
Как и любой язык, SQL имеет определенные слова, которые выстраиваются в предложения, или команды. Рассмотрим пару базовых SQL-запросов на примере данных.
Открываем SQLite, загружаем базу данных.
SQLite -> File -> Open DB
В примере будем использовать БД Airbnb, сервиса для аренды жилья, ее мы даем на курсе (делимся лайфхаком: если уже оставляли заявку, попросите своего менеджера дать демо-доступ к нашей платформе, сможете попрактиковаться на этой базе данных). Открываем, слева появляются таблицы “hosts” и “listings”, то есть владельцы и информация о самом жилье (квартиры/дома/комнаты и тд).
Пришло время сделать первый запрос.
Чтобы посмотреть на всю таблицу целиком, запрашиваем (SELECT) все данные (*) из (FROM) таблицы владельцев (hosts). Получаем нашу таблицу под блоком ввода кода.
На скриншоте выше, видно, например, что Анна с id 43984 является владельцем жилья в Ирландии на Airbnb с 7 октября 2009 года. “F” в последнем столбце означает, что девушка не явлется супер-хостом (особый статус на сервисе), то есть значение в столбце = false.
Чтобы выдало конкретные столбцы, вместо * прописываем их названия.
SELECT Name, Location
Так мы получим таблицу из 2х столбцов: имени и местоположения.
SELECT что мы хотим (столбец/-цы) FROM откуда мы хотим (таблица)
Чтобы ограничить строки, используем LIMIT число. Например, LIMIT 3, тогда в нашей таблице появятся только 3 строки.
Копаем глубже
При написании запроса важно учитывать тип данных, который содержится в таблице. Например, это может быть число, текст и дата.
- Для вывода числа будет достаточно использовать сами числа. Например:
- Для текста используем кавычки:
WHERE name = ‘Anna’
- Для даты — формат “год-месяц-число”
WHERE host_since = ‘2009-10-07’
Оператор WHERE задает условие, то есть, например, “Я хочу вывести все данные из таблицы с владельцами жилья, у кого id соответствует 43984” (скорее всего результат получим один, обычно id не повторяются) или “Я хочу вывести все данные владельцев, кого зовут Анна” (здесь уже не факт, что результат будет единственным).
С оператором WHERE также можно использовать знаки больше или меньше: “”, они, например, позволяют отфильтровать владельцев жилья, попавших в БД после определенной даты. Сделать это можно так: WHERE host_since > ‘2010-01-01’. В таблице получим всех хостов, присоединившихся к Airbnb после 1 января 2010.
Порядок ключевых слов в SQL
С некоторыми ключевыми словами мы уже познакомились, поэтому обратим внимание на важную особенность работу SQL — все ключевые слова и операторы должны иметь определенный порядок:
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- LIMIT
При нарушении порядка, SQL запутается и перестанет вас понимать 🙁
Важно еще отметить, что SELECT и FROM — ключевые слова, остальные — опциональные, поэтому использовать WHERE или другие операторы без SELECT FROM не получится.
Парочку интересных фактов
Немного расслабимся и перейдем к рандомным фактам об SQL.
- SQL был придуман еще в 1970-х, после чего до 2003 стадартизировался и улучшался. Сейчас мы базово все еще работаем на версии двадцитилетней давности, несмотря на несколько доработок и появление множества “диалектов”.
- Раньше SQL назывался SEQL (Structured English Query Language), поэтому многие специалисты продолжают использовать эту аббревиатуру, произнося “сикуэл”, а не “эс-кью-эл”. В документациях нередко встречаются оба варианта, поэтому оба можно считать верными.
- SQL не является языком программирования, так как не может делать циклы или архитектуры.
- Обучаться SQL как аналитикам, так и продактам лучше всего на курсе от ProductStar, ознакомиться с программой и навыками, которые получите после прохождения обучения можно здесь.
Язык SQL
SQL – это язык программирования декларативного типа. В отличие от привычных нам процедурных языков, в которых есть условия, циклы и функции, в декларативных языках подобных алгоритмических конструкций почти нет. Декларативные выражения представляют собой скорее запросы, описание того, что хочет получить человек.
В случае SQL человек формулирует запрос на извлечение или модификацию данных, а алгоритм его выполнения почти полностью ложится на плечи конкретной СУБД. Хотя если один и тот же результат может быть получен с помощью разных запросов, программисту лучше выбрать тот, который создаст меньшую нагрузку на СУБД. То есть программисту желательно иметь представление о том, как работает СУБД.
Запрос производится к таблицам базы данных, результатом обработки запроса также является таблица, которую при желании можно сохранить.
Язык SQL предназначен для создания и изменения реляционных баз данных, а также извлечения из них данных. Другими словами, SQL – это инструмент, с помощью которого человек управляет базой данных. При этом ключевыми операциями являются создание таблиц, добавление записей в таблицы, изменение и удаление записей, выборка записей из таблиц, изменение структуры таблиц.
Однако в процессе развития языка SQL в нем появились новые средства. Стало возможно описывать и хранить такие объекты как индексы, представления, триггеры и процедуры. То есть в современных диалектах SQL есть элементы процедурных языков.
Язык SQL и СУБД обычно не используются сами по себе, а выполняют функцию промежуточного встроенного компонента, обеспечивающего связь между прикладным ПО или программой, которую пишет программист, и базой данных. В языках программирования существуют свои библиотеки, обеспечивающие API для различных СУБД.
Сам язык SQL состоит из операторов, инструкций и вычисляемых функций. Зарезервированные слова, которыми обычно выступают операторы, принято писать заглавными буквами. Однако написание их не прописными, а строчными буквами к ошибке не приводит.
Операторы делятся на:
- операторы определения данных (Data Definition Language, DDL)
- CREATE создаёт объект БД (базу данных, таблицу, представление, пользователя и т. д.)
- ALTER изменяет объект
- DROP удаляет объект
- операторы манипуляции данными (Data Manipulation Language, DML)
- SELECT выбирает данные, удовлетворяющие заданным условиям
- INSERT добавляет новые данные
- UPDATE изменяет существующие данные
- DELETE удаляет данные
- операторы определения доступа к данным (Data Control Language, DCL)
- GRANT предоставляет пользователю или группе разрешения на определённые операции с объектом
- REVOKE отзывает ранее выданные разрешения
- DENY задаёт запрет, имеющий приоритет над разрешением
- операторы управления транзакциями (Transaction Control Language, TCL)
- COMMIT применяет транзакцию
- ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции
- SAVEPOINT делит транзакцию на более мелкие участки
Стандарты SQL позволяют обеспечить переносимость баз данных между разными СУБД. На самом деле это весьма условно. Разные СУБД используют свои диалекты SQL. Например, SQLite не понимает ряд типов данных.
В разных СУБД есть свои расширения для придания SQL «процедурности». Это хранимые процедуры (stored procedures) и процедурные языки-надстройки. Так в Oracle Database используется PL/SQL, в PostgreSQL – PL/pgSQL.
Несмотря на наличие диалектов, запросы, содержащие только DDL и DML, обычно переносимы между разными СУБД.
X Скрыть Наверх
Введение в реляционные базы данных. SQLite
Для чего используют sql
SQL — язык структурированных запросов (SQL, Structured Query Language), который используется в качестве эффективного способа сохранения данных, поиска их частей, обновления, извлечения и удаления из базы данных.
Обращение к реляционным СУБД осуществляется именно благодаря SQL. С помощью него выполняются все основные манипуляции с базами данных, например:
- Извлекать данные из базы данных
- Вставлять записи в базу данных
- Обновлять записи в базе данных
- Удалять записи из базы данных
- Создавать новые базы данных
- Создавать новые таблицы в базе данных
- Создавать хранимые процедуры в базе данных
- Создавать представления в базе данных
- Устанавливать разрешения для таблиц, процедур и представлений
Язык SQL – универсальный язык для всех реляционных систем управления базами данных, но многие СУБД вносят свои изменения в язык, применяемый в них, тем самым отступая от стандарта. Такие языки называют диалектами или расширениями языка.
Вот некоторые из них:
- T-SQL – диалект Microsoft SQL Server
- PL/SQL – диалект Oracle Database
- PL/pgSQL – диалект PostgreSQL
Если вы знаете, что вам нужно изучать SQL, вам следует изучить стандартный SQL. Однако, если вы уже знаете, с какой конкретной базой данных вы будете работать, вероятно, лучше всего изучить её диалект SQL и просто знать, что разные базы данных могут использовать немного отличающийся синтаксис.
В нашем курсе мы будем использовать СУБД MySQL, ибо она достаточно популярная, и в то же время в ней используется близкий к стандартному SQL, хотя и с небольшими отличиями. Подробнее об отличиях.
Для чего используют sql
События
- Тестирование
- Основы
- Откуда берутся ошибки в ПО?
- Почему тестирование необходимо?
- Мифы о тестировании
- Психология тестирования
- Когда начинать и заканчивать тестирование?
- Фундаментальный процесс тестирования
- Принципы тестирования
- Верификация и валидация
- QA, QC и тестирование
- Кто занимается тестированием?
- Цели тестирования
- Что такое тестирование программного обеспечения?
- Роль тестирования в процессе разработки ПО
- Сколько стоят дефекты?
- Качество программного обеспечения (ISO/IEC 25010)
- Матрица соответствия требований (Requirements Traceability Matrix)
- Матрица покрытия и Матрица отслеживания
- Тестирование веб-проектов: основные этапы и советы.
- Мобильное и веб-приложение. В чем разница?
- Тест дизайн (Test Design)
- Agile
- Словарь тестировщика
- 75 популярных вопросов на собеседовании QA (+ примеры и ответы)
- HTML и CSS для тестировщиков
- Итеративная модель (Iterative model)
- Спиральная модель (Spiral model)
- V-модель (V-model)
- Каскадная модель (Waterfall model)
- Стадии цикла разработки ПО
- Жизненный цикл ПО
- Приемочное тестирование
- Системное тестирование
- Интеграционное тестирование
- Модульное тестирование
- White/Black/Grey Box-тестирование
- Статическое и динамическое тестирование
- Ручное и автоматизированное
- Тестирование документации
- Интернационализация и локализация
- Стресс тестирование
- Тестирование установки
- Конфигурационное тестирование
- Тестирование на отказ и восстановление
- Юзабилити
- Тестирование сборки
- Тестирование взаимодействия
- Тестирование безопасности
- Дымное тестирование
- Регрессионное тестирование
- Тестирование производительности
- Функциональное тестирование
- Нефункциональное тестирование
- Спецификация требований
- Test Plan
- Checklists для тестировщика
- Test Case
- Bug report
- Жизненный цикл дефектов
- Классификация дефектов
- Тестирование мобильных приложений
- Протоколы
- Протокол TCP/IP или как работает Интернет (для новичков)
- HTTP-запрос (HTTP request)
- Автоматизация
- Автоматизированное тестирование
- Теория по X-Path локаторам
- Как написать X-Path локатор.
- Использование tagname
- Вложенность родительского элемента.
- Как выбрать инструмент автоматизации?
- Базы данных в тестировании
- Зачем нужен SQL для тестирования?
- Общее
- Интерфейс в коде ПО
- Фреймворк в программировании
- Парадигмы программирования
- Что такое микросервисная архитектура ПО?
- Микросервисная архитектура
- Что такое монолитная архитектура?
- Монолитная архитектура
- Что такое API?
- Процесс коммуникации с помощью API
- Что такое JSON
- Что не так с Android?
- Android Studio 2.0
- RxJava
- Основы
- Внутренний мир компьютера: что там внутри
Зачем нужен SQL для тестирования?
Каждая система должна иметь базу данных. Информация (сведения о пользователе, состояние транзакции) обычно поддерживается в традиционных реляционных базах данных, таких как MySQL и Oracle.
SQL — это стандартный компьютерный язык для управления реляционными базами данных и обработки данных. SQL используется для запроса, вставки, обновления и изменения данных. Вы можете думать о SQL как о средстве связи между пользователем и СУБД (система управления БД).
Проще говоря, SQL — это язык программирования, с помощью которого мы обращаемся к нашей базе данных.

Чтобы определить SQL-запрос, нам сначала нужно понять, что такое запрос? Запрос может быть определен как запрос данных из базы данных через СУБД. Запрос может рассматриваться как инструкция, отправляемая в СУБД для получения набора данных на основе критериев. Такой запрос может быть разработан с использованием SQL и называется запросом SQL.
Простым примером SQL-запроса будет: Select * from Table.
Посмотрев на этот запрос, вы легко сможете понять, что он пытается сделать — выбрать все данные (представленные *) из таблицы.
Когда вы проводите функциональное тестирование системы через frontend (веб-сайт, мобильные приложения и т.д.), вам также необходимо проверить, правильно ли обновляются отправляемые вами данные в базе данных.
Спрос на универсальных тестировщиков растет. Это означает, что тестировщики должны иметь навыки тестирования функциональности системы с помощью традиционных методов тестирования «наведи, щелкни и проверь», и уметь использовать технические знания для проверки всех аспектов системы. Эти технические знания включают навыки проверки операционной системы, интерфейса и базы данных. В данном случае мы подчеркнем важность хороших навыков языка структурированных запросов (SQL).
Насколько важны навыки SQL для тестировщика программного обеспечения?
Некоторые приложения требуют сильных навыков проверки SQL, некоторые из них требуют средних навыков, а для некоторых приложений знания SQL вообще не требуются.
Возьмем в пример веб-сайты, на которых размещаются документы, которые пользователи могут распечатать на принтере. Печать этих документов требует, чтобы пользователи сначала установили специальный контроллер печати на свой ПК. В данном случае работа тестировщика заключается в том, чтобы печатать документы из различных комбинаций операционных систем, браузеров и принтеров и проверять качество печати документов. Для этого теста не нужно применять какие-либо навыки SQL. Опыт SQL требуется для проверки тестовых данных, вставки, обновления и удаления значений тестовых данных в базе данных.
Рассмотрим работу над другим проектом, участие в бэкэнд-тестировании, где требуются сильные знания SQL-запросов. Внутренний инструмент пользовательского интерфейса для получения данных из базы данных Oracle на основе входных значений. В рамках тестирования сравниваются выходные данные инструмента пользовательского интерфейса и выходные данные базы данных, вводятся одинаковые значения в инструмент и базу данных, чтобы убедиться, что инструмент функционировал должным образом. Каждый раз, когда входные значения меняются, администратор базы данных дает группе тестирования очень большие запросы с использованием оператора select. Для начала нужно понять связь между таблицами, столбцами и запросом, прежде чем его использовать. Кроме того, нужно использовать различные типы операторов SQL для проверки тестовых данных.
Следующие знания базы данных и SQL должны быть у тестировщика:
- Он должен уметь распознать различные типы баз данных;
- Подключаться к базе данных с использованием разных клиентов SQL-соединений;
- Понимать отношения между таблицами базы данных, ключами и индексами;
- Умение написать простой оператор выбора или SQL вместе с более сложными запросами на соединение;
- Интерпретировать более сложные запросы.
Наиболее используемые операторы SQL в тестировании:
- Data Manipulation Language (DML): используется для извлечения, хранения, изменения, удаления, вставки и обновления данных в базе данных. Примеры: операторы SELECT, UPDATE и INSERT.
- Data Definition Language (DDL): используется для создания и изменения структуры объектов базы данных в базе данных. Примеры: операторы CREATE, ALTER и DROP.
- Transactional Control Language (TCL): Управляет различными транзакциями, происходящими в базе данных. Примеры: операторы COMMIT, ROLLBACK.
- Inner Join: извлекает сопоставленные записи из обеих таблиц.
- Distinct: извлекает различные значения из одного или нескольких полей.
- In: этот оператор используется, чтобы найти значение в списке или нет.
- Between: этот оператор используется для получения значений в диапазоне.
- WHERE: указывает, какие строки получить.
- Like: этот оператор используется для выполнения сопоставления с шаблоном; он используется с оператором WHERE.
- Order By Clause: указывает порядок возврата строк, сортирует записи таблицы в порядке возрастания или убывания. По умолчанию порядок возрастает.
- GROUP BY: группирует строки, имеющие общее свойство, так что агрегатная функция может быть применена к каждой группе.
- HAVING: выбирает из групп, определенных оператором GROUP BY.
- Aggregate Functions: выполняет вычисление для набора значений и возвращает одно значение. Пример: Avg, Min, Max, Sum, count и т. д.
SQL очень важен в тестировании программного обеспечения, потому что:
- Проверка поможет понять, что данные, которые добавляются в форму (на frontend), добавляются на бэкэнд или нет. Например, при регистрации пользователя на сайте, некоторые поля пропущены, следовательно, мы видим какое-то сообщение об ошибке относительно регистрации пользователя. Также, если мы выполним SQL-запрос, то сможем сказать, что следующие поля пропущены, и есть некоторая ошибка в функциональном модуле регистрации пользователя.
- SQL помогает нам в получении тестовых данных. Например, если нужно проверить некоторые исправления для товаров, которые видны на работающем сайте. С помощью SQL-запроса, можно получить продукты с определенным условием (фильтрацией), и изменить описание товара одновременно всем записям.
- SQL помогает нам в автоматизации тестирования. Например, если нам нужно убедиться, что для платного зарегистрированного пользователя будет отображен флаг VIP после входа в систему. SQL поможет в том, что мы напрямую получим пользователя с этими определенными условиями из базы данных, а затем авторизуемся, используя данные, и просто проверим наличие или отсутствие флага VIP, вместо того чтобы создать нового пользователя и затем произвести оплату от его имени.
Учитывая преимущества работы с SQL и полезность навыков SQL в общем, наш совет тестировщикам -> приобрести минимальные знания SQL, чтобы стать универсальным тестером, который ценится клиентами и компаниями. Изучить SQL вы сможете с помощью нашего курса Практический SQL.
- Выбери курс для обучения
- Тестирование
- Базовый модуль тестирования
- Тестирование ПО
- Тестирование WEB-сервисов
- Тестирование мобильных приложений
- Тестирование нагрузки с JMeter
- Расширенный модуль автоматизации тестирования
- Автоматизация тестирования с Selenium WebDriver (Python)
- Автоматизация тестирования с Selenium WebDriver (Java)
- Автоматизация тестирования с Selenium WebDriver (C#)
- Автоматизация тестирования на JavaScript
- Java для автоматизаторов
- Fullstack Web Developer
- Java
- Python
- JavaScript
- HTML5 И CSS3
- Полный стек разработки на фреймворке Laravel
- Разработка CMS на основе PHP
- Git для автоматизаторов
- Практический SQL
- Основы Unix и сети
- WEB-серверы и WEB-сервисы
- Создание проекта автоматизации и написания UI тестов
- Составление комбинированных тестов UI и API. Написание BDD тестов
- IT Project Manager
- HR-менеджер в ИТ-компании
- Как правильно составить резюме и пройти собеседование
- Подготовка к сертификации ISTQB Foundation Level на основе Syllabus Version 2018
- Тестирование
- Базовый модуль тестирования
- Тестирование
- Основы
