MySQL – наиболее распространенная система управления базами данных. Она поддерживает множество интересных и простых функций, а также бесплатно распространяется. Данная СУБД является одним из самых ранних массовых решений для управления БД. Первый релиз MySQL состоялся в середине 90-х годов.
MySQL появилась за счет необходимости адаптации mSQL для работы с таблицами, сформированными под более ранние и устаревшие способы хранения и управления данных. Системы требовали быстрой обработки, а также начали контактировать с огромными объемами информации.
Далее предстоит разобраться с основами использования MySQL. В качестве изучаемого языка запросов будет использоваться тоже достаточно популярный вариант – SQL. Особое внимание уделено оператору Select, а также подготовке СУБД к полноценному использованию. Эта информация пригодится как новичкам, так и опытным разработчикам, а также аналитикам.
База данных – это…
Данные – это файлы, база – место, где они будут храниться. Данные в БД могут принимать совершенно любой облик.
Пример – сформированный плейлист в Spotify. Пользователь сформировал его, а затем добавил туда новый трек. Плейлист в предложенном случае – это база, очередная «песня» – данные. Каждая композиция, хранящаяся в готовом списке треков, станет элементом уже существующей базы данных. Так она наполняется.
Подобных БД может быть очень много. Они могут быть многоуровневыми, а также поддерживать деление на различные категории. Все это способствует формированию взаимосвязей между разными компонентами базы данных, образовывая структуру. Отсюда происходит термин «реляционная» – поддерживающая зависимость элементов друг от друга.
База данных – набор структурированных данных с выстроенными между ними связями. Пример – деление на категории.
Визуально база данных – это таблица с тысячами составляющих:
- ссылками;
- частями текста;
- цифрами;
- файлами и другими компонентами.
Для управления соответствующими данными необходимо обозначить таблицы, а затем использовать специальные операции. Они помогают выполнять различные команды. Здесь на помощь приходят языки запросов. Один из наиболее популярных вариантов – SQL. Он работает через MySQL и другие СУБД.
MySQL – реляционная система управления базами данных, созданная шведскими разработчиками из одноименной компании в 1994 году. Данная СУБД получила свободную лицензию. Позже компанию-создателя поглотила Oracle.
MySQL распространяется бесплатно. Она включена в стандартный набор приложений LAMP для разработки веб-страниц на базе Linux. Некоторые программисты называют серверы баз данных с любым программным обеспечением MySQL. Это связано с тем, что соответствующая СУБД получила достаточно широкое распространение. Она умеет работать с большими массивами информации, предоставляя неплохую скорость обработки. Используется такими компаниями как YouTube, Google, а также FaceBook.
MySQL – популярная система управления базами данных с моделью «клиент-сервер». Именно поэтому некоторые разработчики говорят MySQL-сервер. Такие проекты создаются для обеспечения доступа к данным для различных приложений, а также сервисов.
Что такое SQL
Перед погружением в основы использования MySQL необходимо выяснить, что собой представляет SQL. Это Structured Query Language. В переводе с английского – «язык структурированных запросов».
SQL – стандартизированный язык, используемый для взаимодействия с базами данных. С его помощью удается получать доступ к информации, хранящейся непосредственно в таблицах MySQL. Делится этот язык на несколько частей:
- Семантический синтаксис. Он позволяет идентифицировать отдельные элементы базы данных.
- Синтаксис управления данными в базе. С его помощью осуществляется обновление и поиск информации.
- Синтаксис, предоставляющий выбор прав пользователям на отдельные единицы данных в имеющейся базе.
SQL используется не только MySQL, но и другими СУБД. Примеры – PostgreSQL и Microsoft SQL.
Ключевые задачи SQL
Перед тем как пользоваться MySQL, необходимо выяснить, какие ключевые задачи выполняет SQL. К ним относят:
- Извлечение запрашиваемых сведений из ячеек БД по клиентским запросам.
- Операции с данными, включая добавление новых компонентов в таблицу. Сюда же относят удаление, сортировку и изменение сведений.
- Идентификацию информации из базы. Подразумевается определение отдельных компонентов. Пример – определение чисел в тексте как целых для организации соответствующей дальнейшей обработки. Все это помогает формировать взаимоотношения между табличными слоями в БД.
- Непосредственное управление данными.
- Защиту и шифрование информации в сформированных таблицах.
При помощи SQL можно с легкостью закрыть все перечисленные аспекты. Пользоваться данным языком достаточно легко. Об этом предстоит поговорить позже, рассматривая наиболее распространенные и важные команды языка.
Как работают MySQL-серверы
MySQL часто используется для клиент-серверных моделей. Принцип работы таких проектов прост – устройство будет делать запросы, а другие аппараты – формировать и отправлять ответы. Запрашивающего оборудования может быть более одного. Все зависит от сервера, сети и конкретных задач, которые необходимо выполнить.
В среде MySQL на соответствующих серверах осуществляются различные процессы:
- система создает БД для хранения и обработки информации;
- клиенты (компьютеры в сети) подают запросы к БД при помощи специальных SQL-команд;
- серверное приложение обрабатывает полученные запросы и выдает клиентам ответы (те или иные данные из таблиц).
Для работы с MySQL-сервером используется специальное программное обеспечение. Некоторое поддерживает только командную строку. Наиболее популярными решениями для клиент-серверных моделей MySQL выступают – SequelPro, TablePlus, WorkBench, SQL Studio. Веб-мастеры часто пользуются phpMyAdmin. Связано это с тем, что соответствующее приложение включено в состав LAMP, а работает в обычном браузере.
Преимущества и недостатки MySQL
MySQL пользуется спросом не только в клиент-серверных моделях, но и в других приложениях. Соответствующая СУБД имеет ряд преимуществ и недостатков, благодаря которым она стала одной из наиболее распространенных. Зная плюсы и минусы системы, каждый сможет самостоятельно решить, стоит ли ему пользоваться MySQL или нет.
Сильные стороны
К преимуществам рассматриваемой СУБД относят следующие моменты:
- Гибкость и простота использования. На создание и поддержку БД затрачивается относительно мало времени. Уровень компетенции для полноценной работы с СУБД требуется меньший, чем в случае с конкурентами.
- Открытый исходный код. За счет него систему легко модифицировать. Платить за соответствующие изменения не придется – разработчик справится самостоятельно.
- Поддержка от Oracle и дружелюбное сообщество.
- Быстрая работа. Внутренняя структура MySQL дает возможность использования больших объемов информации, разбирая их за несколько секунд. Специфичность связей между элементами никак не отражается на работоспособности системы.
- Высокий уровень защиты. Связано это с системой выдачи прав, а также с продвинутой системой управления пользователями. Рассматриваемая СУБД поддерживает верификацию для серверов на базе хостингов и шифрования.
MySQL – это уже не просто СУБД, а нарицательное имя, некий стандарт в IT. Но у нее есть ряд недостатков, которые необходимо учесть перед началом работы.
Слабые стороны
Рассматриваемая система управления базами данных имеет следующие слабые стороны:
- Отсутствие полноценной стабильности. Иногда трудно предугадать, какое поведение будет в базе данных MySQL. Часть распространенных задач, особенно связанных с серверами, заканчивается ошибкой.
- Производительность. Изучаемая СУБД умеет обрабатывать большие объемы информации, но по мере ее увеличения скорость обработки данных снижается. В небольших масштабах MySQL ведет себя более корректно и предсказуемо.
- Замедленное развитие после выкупа проекта компанией Oracle.
- Минимизация функций. СУБД MySQL тяжело назвать продвинутой. Эта система производительная и легкая, но инструментов в ней минимум. Для устранения этого недостатка приходится устанавливать всевозможные расширения.
При помощи таблиц MySQL удается решать большинство задач, связанных с запросами и клиент-серверной разработкой. Это – идеальный вариант как для начинающих специалистов, так и для опытных. Если стандартного функционала не хватает, можно в любой момент поставить расширения – они сделают СУБД более мощной.
Начало работы с СУБД
Начало работы с рассматриваемой системой управления – это подготовка среды для дальнейших операций. Сюда также включена установка MySQL. Без предварительной подготовки разрабатывать БД не получится.
Подготовка среды
Предложенная далее информация является универсальной. Она подойдет как для обладателей Linux, так и для других операционных систем с MySQL. Далее будет рассматриваться сервер на базе Ubuntu.
Чтобы начать работу, потребуется:
- сервер Ubuntu 18.04 с использованием sudo;
- установленная система управления базами данных.
При наличии соответствующего программного обеспечения можно будет формировать таблицы, заполнять их информацией, а также управлять данными.
Как установить
Последняя версия MySQL доступна на официальном сайте разработчика. При выборе дистрибутива пользователю будет предложена авторизация через учетную запись Oracle. Делать это необязательно. Файлы будут доступны даже тем, кто не идентифицирован в системе.
Чтобы установить рассматриваемую систему управления, достаточно следовать подсказкам на дисплее устройства. Существуют различные варианты инициализации программного обеспечения:
- developer – платформа разработчика с поддержкой некоторых дополнительных инструментов;
- server only – активация установки только серверной части MySQL;
- client only – клиентская часть СУБД;
- full – полная установка всех модулей и блоков, включенных в инсталлятор;
- custom – выборочная установка (рекомендуется только опытным специалистам).
Основы работы с MySQL поддерживают установку, настройку платформы, создание локальных или удаленных баз данных или подключение к уже существующим. Все эти операции достаточно понятны – в процессе инициализации программного обеспечения появляются необходимые подсказки. Остается лишь внимательно читать их.
При установке MySQL необходимо создать пользователя. Сначала формируется доступ для администратора. Далее поддерживается возможность добавления и удаления аккаунтов по мере смены исполнителей, а также подключения новых сторонних специалистов.
Установка в Ubuntu
По умолчанию Ubuntu 18.04 поддерживает только последнюю версию MySQL. Для установки сборки 5.7 необходимо обновить индекс пакетов сервера. Далее – провести инициализацию стандартного пакета:
При обработке запроса будет предложено указать root-пароль. Он должен быть сложным. За счет соответствующей комбинации будет обеспечена безопасность системы.
Настройка
После того как установка будет завершена, необходимо запустить встроенный сценарий безопасности MySQL. Он изменит некоторые опции по умолчанию, а также заблокирует удаленный root-логин. В старых версиях СУБД это делается автоматически, в новых – через команду:
Сначала система предложит произвести настройку Validate Password Plugin, который отвечает за проверку надежности придуманного пароля. Далее будет запрошен root-пароль. Чтобы принять настройки по умолчанию, необходимо нажать на Y и Enter. Сценарий удалит анонимных пользователей и тестовую базу данных, отключит удаленный root-логин, а также обновит правила. Все это позволит MySQL функционировать с новыми параметрами.
Структура данных
Проект поддерживает работу с несколькими логическими блоками – клиентскими и серверными. Ко второму типу относится непосредственно сама БД MySQL. Технически это набор файлов с расширениями:
В каждой базе существуют одна или несколько таблиц, необходимые для структурированного хранения данных. Они выражены записями в полях. В зависимости от объема информации в БД формируются одна или несколько записей.
Структура БД будет одинаковой во всех проектах, где она используется. Меняется только состав и назначение конкретных ее блоков.
Клиентская часть включает в себя некий набор PHP-скриптов, необходимых для приема данных из внешних источников, а также их дальнейшей обработки и отправки на сервер, извлечения ранее сохраненных материалов для отображения и организации вычислительных работ.
Наглядный пример – это сайт. На нем хранятся базы данных, которые были заранее подключены. Они выражаются текстами, ссылками на анимацию и изображения, а также другие компоненты. При открытии той или иной страницы соответствующие сведения извлекаются оттуда по заданной программе.
В основе структуры БД заложена таблица. Она может поддерживать различный тип данных – текст, ссылки, а также числовые значения. Таблицы включают в себя поле с определенными порядковыми номерами (ID). Табличные названия обычно соответствуют содержимому. Пример – блок USER указывает на данных о зарегистрированных пользователях. В полях будет храниться:
- логин;
- пароль;
- электронный адрес пользователя;
- иные реквизиты человека.
Соответствующая информация распределяется по отдельным записям – ячейкам, заполненным значениями в соответствие с обозначенным типам данных.
Основные операции
Чтобы лучше разобраться с СУБД и SQL, необходимо рассматривать операторы и команды на наглядном примере. Для этого создается отдельная БД. Далее будет изучаться такой сценарий:
Человек с друзьями всегда празднуют дни рождения совместно. Каждый раз все члены группы идут в боулинг на дружеский турнир. После этого – к человеку, где он готовит любимое блюдо именинника.
Данное поведение стало традицией – возникла необходимость в отслеживании результатов организованных турниров. Чтобы сделать планирование обедов более простым, требуется создать записи о днях рождениях друзей и их любимых блюдах, десертах, а также гарнирах. Чтобы не приходилось все записывать в обычной записной книжке, будет использоваться СУБД MySQL.
Создание таблицы
Начать необходимо с открытия командной строки MySQL в качестве root-пользователя:
sudo Mysql.
Для создания БД необходимо использовать команду CREATE Database:
Теперь ее необходимо выбрать:
В ней должны быть созданы две таблицы: первая используется для отслеживания результатов в боулинге, вторая отвечает за сопоставление друзей и их любимых блюд.
В предложенной выше таблице «для боулинга» будут отображаться столбцы с именами друзей (имя пользователя, name), а также количество выигранных ими турниров (wins), лучшие результаты за все время (best). Здесь же выводится размер обуви для боулинга каждого участника (size).
Если запустить предложенный код, на экране появится следующая запись:
Теперь в нее необходимо добавить информацию. Делается это при помощи команды Insert into:
Команда вернет такой результат:
Теперь можно создать вторую таблицу в пределах той же базы посредством команды create table. Она будет использоваться для хранения информации о блюдах и друзьях. В ней будут находиться столбцы с именами друзей, датами рождения, блюдами (entree), гарнирами (side), а также десертами (dessert):
После обработки соответствующего запроса произойдет вывод такого результата:
Можно заполнить предложенную таблицу необходимой пользователю информацией:
На основе соответствующей БД будет происходить изучение основных команд изучаемой системы управления.
Оператор Select
Почти все SQL-запросы начинаются с Select. Соответствующий оператор является основой работы с таблицами. Это – универсальная синтаксическая конструкция. Пользователи смогут добавлять в нее параметры и предложения для выполнения операций по выборке.
Оператор MySQL Select почти всегда включает в себя FROM. Это предложение используется для ссылки на таблицу, с которой будет производиться дальнейшая работа.
Перед применением Select необходимо уяснить следующее:
- Этот оператор возвращает строки – ноль и более.
- Список возвращаемых столбцов указывается в части запроса с Select-предложением.
- С его помощью определяется спектр требований к возвращаемому набору сведений. Это не точная инструкция по вычислению.
Соответствующий оператор включает в себя несколько разделов, каждый из которых отвечает за выборку с уточненными параметрами.
Разделы Select
Рассматриваемый оператор используется для получения информации из электронной таблицы. Он включает в себя несколько разделов (предложений):
- Select – часть, отвечающая за непосредственную выборку. Определяет спектр выводимых столбцов. Используется как для создаваемых элементов, так и для подготовленных заранее. Определяет имена столбцов, ограничения на уникальность строк и их количество в возвращаемом наборе информации.
- From. Ключевое слово, которое определяет базовый набор информации для дальнейшей обработки. Ссылается на пространство, откуда будут извлекаться данные для расчетов.
- Group by. Раздел объединения рядов с одинаковыми свойствами. Использует агрегатные функции.
- Where. Предложение, используемое для формирования ограничений на строки выражений из таблиц, определенных через FROM.
- Order by. Устанавливает требования сортировки строк. Отправляет данные в точку вызова после успешной обработки.
- Having. Предложение, используемое для выборки среди групп, определенных через параметр group by.
Все эти разделы необходимо изучить до непосредственной работы с готовыми БД.
Как составить select-выражение
Эта конструкция поможет сформировать select-выражение:
Здесь:
- поле1 и поле2 – имена столбцов;
- имя таблицы – задает табличное имя;
- limit – используется для ограничения количества возвращаемых строк;
- order by – сортирует результирующие значения столбцов по возрастанию или убыванию.
В случае с ранее подготовленной БД в MySQL можно сформировать запрос на извлечение столбца name из таблицы dinners:
Если необходимо запросить несколько столбцов из одной таблицы, они перечисляются через запятую перед from:
Вместо указания конкретного столбца или их наборов, допускается использование оператора Select вместе со знаком «звездочка» (*). Соответствующий элемент является заполнителем. Он представляет все столбцы в таблице.
Выше – пример, демонстрирующий отображение всех столбцов из таблицы tourneys.
Where
Оператор Where – необязательный. Используется в запросе для того, чтобы фильтровать записи, удовлетворяющие заданному условию. Все строки, не попадающие под установленные «ограничения», будут исключены из результата.
Синтаксис оператора where:
Часто используется с запросами delete и update. Является альтернативой использования OR, а также AND.
Записи в таблице могут быть уточнены при помощи операторов сравнения SQL, записанных в where-предложении. Вот самые распространенные варианты:
Что за оператор используется (обозначение)Действие (описание)=Равенство!=Неравно>Больше<Меньше>=Больше или равно<=Меньше или равноBETWEENПроверяет, находится ли заданное значение в пределах установленного диапазонаINПроверяет, содержится ли значение строки в наборе указанных значенийEXISTSПроверка на наличие строк при заданных условияхLikeПозволяет узнать, существует ли значение в указанной строкеIS NULLПроверяет значения NULLIS NOT NULLПроверяет все значения, исключая NULL
Вот пример, который позволит узнать размер обуви Ирмы:
SQL-запросы позволяют использовать подстановочные знаки. В случае с Where-выражениями это бывает достаточно удобно. Знак процента (%) представляет ноль или более неизвестных символов, а нижнее подчеркивание отвечает за один неизвестных элемент (_).
Подстановочные знаки удобны, когда необходимо найти конкретную запись в таблице, но в правильности ее написания нет уверенности.
Этот пример показывает ситуацию, при которой пользователь выбрал любимые блюда, но он не уверен, что оно начинается на t. Результатом обработки запроса станет tofu.
Order by
Предложение order by используется для того, чтобы привести табличные данные в порядок. С его помощью информация из MySQL будет представлена в упорядоченном виде. Значения поддерживают сортировку по убыванию или возрастанию.
По умолчанию используется принцип вывода информации «от меньшего к большему». Уточнение вводится при помощи таких слов:
- desc – отображение по убыванию;
- asc – вывод информации в порядке возрастания.
Это – пример формирования запроса с order by.
Limit
Предложения Limit применяются в SQL-запросах для получения некоторого ограниченного количества строк из больших информационных объемов. Это – ограничение возвращаемых результатов.
Limit дает возможность возврата одного или двух аргументов. Если «параметров» несколько, то один из них выступает в качестве смещения. Он задаст сдвиг первой возвращаемой строки. Смещение обязательно является или нулевым, или положительным. Если в запросе один аргумент, он будет выступать количеством выводимых строк на дисплей устройства.
Псевдонимы
В Select-запросах MySQL могут использоваться псевдонимы. Они задаются через ключевое слово AS. Позволяют сделать имена таблиц или столбцов более читабельными и понятными. Встречаются преимущественно тогда, когда работать с изначальной формой представления таблиц трудно.
Псевдонимы, сформированные при помощи AS – это временные сведения. Они существуют до тех пор, пока работает запрос, для которого они были созданы.
Соединение таблиц
Соединение (join) используется для одновременного получения информации сразу из нескольких таблиц в MySQL. Пример – есть order и customer. Из них необходимо извлечь информацию для дальнейшей обработки. Для этого применяется запрос типа join.
Она поддерживает такие предложения:
- Cross – перекрестное соединение. Применяется для вывода информации, которая совпала как в левой, так и в правой таблице.
- Inner – внутреннее объединение. Возвращает записи, значения которых совпадают в обеих заданных таблицах.
- Right – правое соединение. Указывает информацию из правой таблицы, значения которых встречаются в левой.
- Left – левое соединение. Отображает данные левой таблицы, совпавшие с параметрами из правой.
Объединить результаты нескольких select-запросов удается при помощи ключевого слова Union. Для каждого select устанавливается одно и то же количество столбцов с одинаковыми типами используемых данных.
Предложение left join отвечает за возврат всех записей из левой таблицы и только совпадающие с аргументами правой таблицы. В контексте соединения левая таблица MySQL – это таблица, на которую будет ссылаться FROM. Правая – любая другая, на которую имеется ссылка после оператора JOIN.
Соответствующий запрос выведет каждую запись из левой таблицы (в приведенном примере – tourneys), даже если в правой таблице совпадающие записи отсутствуют. Каждый раз, когда в правой табличке нет подходящей записи, она вернет пустое значение или NULL. На устройстве появится следующий результат:
Соответствующую команду рекомендуется повторить, но уже при помощи оператора right join:
Результат будет представлен в виде возврата всех записей из правой таблички – dinners. Дата рождения Лесли записана в правой таблице MySQL, но для нее нет соответствующей строки в левой, столбцы name и size получат нулевые значения (NULL):
Левые и правые соединения в MySQL могут быть записаны в виде left outer join или right outer join. То же самое касается Inner join. Эта команда может быть записана просто как join.
В качестве альтернативы JOIN допускается использование Union. Вместо того, чтобы вывести результат из нескольких табличек в виде уникальных столбцов с помощью Select соответствующая команда объединит информацию от двух select-запросов в один столбец.
Вот пример запроса:
Он приведет к отображению такого результата:
Удаление дубликатов
При использовании Select-запросов в MySQL могут встречаться одинаковые значения. Выводить их несколько раз на дисплей нет никакой необходимости. Чтобы удалить повторы в результирующих значениях, необходимо использовать предложение distinct.
В заданной форме записи:
- Expressions – столбцы или вычисления, которые необходимо получить.
- Tables – таблицы, используемые для работы. Этот параметр не является обязательным. Связано это с тем, что в перечислении from должна быть хотя бы одна таблица.
- Where conditions – параметр, указывающий на условия, выполняемые для выбранных записей. Соответствующая запись в SQL-запросе может отсутствовать.
Значения Null MySQL при использовании запроса distinct игнорировать не будет. Он рассматривается системой в виде отдельного значения.
Оператор Load
Оператор Load используется для заполнения таблицы. Применяется при формировании результата из подготовленного заранее документа. Оператор Load data имеет такую форму представления:
Load data ‘[путь/] [имя файла]’ in table [имя таблицы];
Также для вставки данных в таблицу можно использовать Insert:
Здесь:
- table_name – это название таблицы;
- values – значения, которые необходимо добавить.
Value1, ….valueN – это аргументы, перечисляемые через запятую. Значения здесь предоставляются в том же порядке, в котором они указаны изначально в таблице.
Оператор show
В MySQL show используется для предоставления информации о базах данных, таблицах, столбцах и состоянии операций. Следующие команды являются наиболее распространенными:
- show databases – показать базу данных на хосте сервера;
- show tables – перечисление постоянных таблиц;
- show triggers – вывод триггеров;
- show create table – отображение оператора создания таблиц.
Здесь можно увидеть все возможные способы представления оператора show.
Агрегатные функции
В СУБД работа с данными не всегда подразумевает их интерпретацию. Иногда требуется получение информации о них. SQL-синтаксис поддерживает некоторые функции, позволяющие интерпретировать, а также выполнять различные вычисления через Select-запросы. Они носят название агрегатных:
- Count. Используется для подсчета и возврата количества строк, соответствующих заданным критериям. Пример – уточнение информации о том, сколько друзей из заданной БД предпочитают тофу. Сделать это поможет следующий запрос:.
- AVG. Отвечает за возвращение среднего значения заданного столбца в MySQL. Пример – получение среднего лучшего результата в турнире:.
- SUM – общая сумма значений столбца. Пример – просмотр количества турниров, проведенных за установленный период:.
- MIN используется для поиска наименьшего значения по столбцам. Этот запрос в MySQL поможет отыскать наименьшее количество очков победителя в турнире за все годы:.
- MAX – функция, которая работает по обратному принципу MIN. Используется для поиска наибольшего числового значения.
SUM и AVG функционируют правильно в базах данных MySQL, только если речь идет о числах. При попытке работы с нечисловыми значениями результат окажется или нулем, или ошибкой обработки данных. Все зависит непосредственно от используемой СУБД.
Функции MIN и MAX используются не только для числовых, но и для буквенных типов данных. При запуске в столбце со строками, функция MIN отобразит первое значение в алфавитном порядке:
В случае с использованием MAX происходит то же самое, но в алфавитном порядке показывается последнее значение:
Агрегатные функции в MySQL и SQL-запросах получили широкое распространение. Они особо полезны в запросах с group by.
Вывод запроса
Рассматривая select-запросы MySQL, необходимо также обратить внимание на управление выводом. Далее будут представлены наиболее популярные операторы:
- Group by. Используется тогда, когда выполняется агрегатная функция для одного столбца, но в отношении сопоставления значений в другом. Вот – пример, в котором пользователь пытается узнать, сколько друзей любят то или иное блюдо:.
- Оператор order by применяется для сортировки результатов заданного запроса. По умолчанию все числовые значения сортируются по возрастанию, текстовые значения – по алфавиту.
- Having. Используется для выполнения функций, аналогичных Where, но совместимых с агрегатными.
Where используется для фильтрации результатов на основе заданных пользователем условий. Только работу с агрегатными функциями этот оператор не поддерживает. Он возвращает при подобных обстоятельствах ошибку.
Подзапросы
Чтобы обратиться к нескольким таблицам MySQL, можно использовать подзапросы. Они носят название вложенных запросов (или внутренних). Это запрос, включенный в другой. Такой вариант полезен тогда, когда необходимо отфильтровать результаты запроса по сравнению с итогами отдельной агрегатной функции MySQL.
Лучше разобрать с этой операцией в базах данных поможет наглядный пример. Необходимо узнать, кто из друзей выиграл больше матчей, чем Барбара. Вместо того чтобы посмотреть, сколько матчей выиграла девушка, а затем выполнять другой запрос, можно сделать это так:
Подзапрос в операторе выполнялся всего один раз. В заданном примере требовалось найти значение из столбца wins в строке, где в столбце name указано значение Barbara. Данные, возвращаемые при помощи сформированного подзапроса и внешнего запроса, не зависят друг от друга. Бывают ситуации, при которых внешний запрос должен сначала считать каждую строчку в табличке, а затем сравнить соответствующие значения с данными, возвращаемыми подзапросом. Такой подзапрос называется коррелированным.
Этот запрос попытается выяснить, кто из друзей выиграл игр больше среди участников с одинаковым размером обуви. Для обработки MySQL необходимо собрать столбцы name и size из внешнего запроса. После этого она сравнивает каждую строчку из соответствующего результирующего с результатами внутреннего запроса, ��пределяющего среднее количество для людей с одинаковым размером обуви. На экране появится такой вывод:
.
Это связано с тем, что всего два человека среди друзей в изучаемом примере имеют одинаковый размер обуви.
Подзапросы используются для запроса результатов из нескольких таблиц данных MySQL. Для наглядного примера рекомендуется рассмотреть ситуацию, при котором лучший игрок в группе получает сюрприз. Он выражается ужином с его любимыми блюдами.
Данный фрагмент MySQL-запроса позволяет узнать, кто среди друзей показал лучший результат. После этого система выведет его любимое блюдо. Для реализации используется один запрос.
Как освоить MySQL и SQL
MySQL и SQL – популярные инструменты для использования баз данных через специальные запросы. Разобраться с ними помогут специализированные дистанционные онлайн курсы. Пример – от образовательного центра OTUS.
Данные курсы гарантируют:
- Сжатые сроки обучения и грамотно составленные программы. В период от нескольких месяцев до года можно освоить с нуля любую IT-профессию.
- Постоянное кураторство и интересные домашние задания.
- Возможность совмещать работу и учебу, а также быт и семью. Все занятия организованы через интернет. Если ученик отсутствовал на лекции, он сможет просмотреть запись вебинара.
- Помощь в формировании портфолио, а также богатую практику.
- Разнообразие программ обучения. Можно выбрать специализацию или направление в зависимости от первоначальных навыков и знаний каждого конкретного человека.
Вместе с дистанционными компьютерными курсами записи типа «unsigned not null», «in set», «primary key», «not null auto», «select from» и другие используемые в СУБД не вызовут затруднений. Удастся не только освоить базы данных, но и научиться писать сложные приложения на различных языках «с нуля». В конце обучения все участники получают электронные сертификаты, помогающие подтвердить приобретенный спектр навыков и умений.
Прокачать навыки работы с базами данных можно на курсах Otus.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Основы SQL на базе MySQL OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="MySQL – наиболее распространенная система управления базами данных. Она поддерживает множество интересных и простых функций, а также бесплатно распространяется. Данная СУБД является одним из самых ранних массовых решений для управления БД. Первый релиз MySQL состоялся в середине 90-х годов. MySQL появилась за счет необходимости адаптации mSQL для работы с таблицами, сформированными под более ранние и" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/osnovy-sql-na-baze-mysql/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#article","name":"\u041e\u0441\u043d\u043e\u0432\u044b SQL \u043d\u0430 \u0431\u0430\u0437\u0435 MySQL OTUS","headline":"\u041e\u0441\u043d\u043e\u0432\u044b SQL \u043d\u0430 \u0431\u0430\u0437\u0435 MySQL","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/03\/oj-1080x720-22.jpg","width":2245,"height":1587},"datePublished":"2023-03-04T23:34:16+00:00","dateModified":"2024-01-23T19:00:28+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, SQL, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#listItem","position":2,"name":"\u041e\u0441\u043d\u043e\u0432\u044b SQL \u043d\u0430 \u0431\u0430\u0437\u0435 MySQL","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#webpage","url":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/","name":"\u041e\u0441\u043d\u043e\u0432\u044b SQL \u043d\u0430 \u0431\u0430\u0437\u0435 MySQL OTUS","description":"MySQL \u2013 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u0414\u0430\u043d\u043d\u0430\u044f \u0421\u0423\u0411\u0414 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u043d\u043d\u0438\u0445 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0411\u0414. \u041f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 MySQL \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 90-\u0445 \u0433\u043e\u0434\u043e\u0432. MySQL \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0437\u0430 \u0441\u0447\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 mSQL \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0438","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/03\/oj-1080x720-22.jpg","@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/osnovy-sql-na-baze-mysql\/#mainImage"},"datePublished":"2023-03-04T23:34:16+00:00","dateModified":"2024-01-23T19:00:28+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/5707" /><link rel='shortlink' href='https://otus.ru/journal/?p=5707' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-sql-na-baze-mysql%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-sql-na-baze-mysql%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-5707 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-5707" class="the-post post-5707 post type-post status-publish format-standard has-post-thumbnail category-polza tag-sql tag-bazy-dannyh-2">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Основы SQL на базе MySQL
</h1>
<a href="https://otus.ru/journal/osnovy-sql-na-baze-mysql/" class="date-link" data-wpel-link="internal"><time class="post-date">4 марта, 2023</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-22.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Основы SQL на базе MySQL" title="Основы SQL на базе MySQL" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-22-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-22-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-22-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6" title="База данных – это…">База данных – это…</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_MySQL" title="Краткое определение MySQL">Краткое определение MySQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%A7%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5_SQL" title="Что такое SQL">Что такое SQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_SQL" title="Ключевые задачи SQL">Ключевые задачи SQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82_MySQL-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%8B" title="Как работают MySQL-серверы">Как работают MySQL-серверы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8_MySQL" title="Преимущества и недостатки MySQL">Преимущества и недостатки MySQL</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B" title="Сильные стороны">Сильные стороны</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%A1%D0%BB%D0%B0%D0%B1%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B" title="Слабые стороны">Слабые стороны</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D0%A1%D0%A3%D0%91%D0%94" title="Начало работы с СУБД">Начало работы с СУБД</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D1%80%D0%B5%D0%B4%D1%8B" title="Подготовка среды">Подготовка среды</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%9A%D0%B0%D0%BA_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C" title="Как установить ">Как установить </a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_Ubuntu" title="Установка в Ubuntu">Установка в Ubuntu</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0" title="Настройка">Настройка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Структура данных">Структура данных</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8" title="Основные операции">Основные операции</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B" title="Создание таблицы">Создание таблицы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_Select" title="Оператор Select">Оператор Select</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8B_Select" title="Разделы Select">Разделы Select</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%9A%D0%B0%D0%BA_%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C_select-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5" title="Как составить select-выражение">Как составить select-выражение</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-20" href="#Where" title="Where">Where</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-21" href="#Order_by" title="Order by">Order by</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-22" href="#Limit" title="Limit">Limit</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-23" href="#%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%D1%8B" title="Псевдонимы">Псевдонимы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-24" href="#%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86" title="Соединение таблиц">Соединение таблиц</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-25" href="#%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2" title="Удаление дубликатов">Удаление дубликатов</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-26" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_Load" title="Оператор Load">Оператор Load</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-27" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_show" title="Оператор show">Оператор show</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-28" href="#%D0%90%D0%B3%D1%80%D0%B5%D0%B3%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8" title="Агрегатные функции">Агрегатные функции</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-29" href="#%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0" title="Вывод запроса">Вывод запроса</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-30" href="#%D0%9F%D0%BE%D0%B4%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B" title="Подзапросы">Подзапросы</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-31" href="#%D0%9A%D0%B0%D0%BA_%D0%BE%D1%81%D0%B2%D0%BE%D0%B8%D1%82%D1%8C_MySQL_%D0%B8_SQL" title="Как освоить MySQL и SQL">Как освоить MySQL и SQL</a></li></ul></nav></div>
<p>MySQL – наиболее распространенная система управления базами данных. Она поддерживает множество интересных и простых функций, а также бесплатно распространяется. Данная СУБД является одним из самых ранних массовых решений для управления БД. Первый релиз MySQL состоялся в середине 90-х годов. </p>
<p>MySQL появилась за счет необходимости адаптации mSQL для работы с таблицами, сформированными под более ранние и устаревшие способы хранения и управления данных. Системы требовали быстрой обработки, а также начали контактировать с огромными объемами информации.</p>
<p>Далее предстоит разобраться с основами использования MySQL. В качестве изучаемого языка запросов будет использоваться тоже достаточно популярный вариант – SQL. Особое внимание уделено оператору Select, а также подготовке СУБД к полноценному использованию. Эта информация пригодится как новичкам, так и опытным разработчикам, а также аналитикам.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6"></span>База данных – это…<span class="ez-toc-section-end"></span></h2>
<p>Данные – это файлы, база – место, где они будут храниться. Данные в БД могут принимать совершенно любой облик.</p>
<p>Пример – сформированный плейлист в Spotify. Пользователь сформировал его, а затем добавил туда новый трек. Плейлист в предложенном случае – это база, очередная «песня» – данные. Каждая композиция, хранящаяся в готовом списке треков, станет элементом уже существующей базы данных. Так она наполняется.</p>
<p>Подобных БД может быть очень много. Они могут быть многоуровневыми, а также поддерживать деление на различные категории. Все это способствует формированию взаимосвязей между разными компонентами базы данных, образовывая структуру. Отсюда происходит термин «реляционная» – поддерживающая зависимость элементов друг от друга.</p>
<p>База данных – набор структурированных данных с выстроенными между ними связями. Пример – деление на категории.</p>
<p>Визуально база данных – это таблица с тысячами составляющих:</p>
<ul>
<li>ссылками;</li>
<li>частями текста;</li>
<li>цифрами;</li>
<li>файлами и другими компонентами.</li>
</ul>
<p>Для управления соответствующими данными необходимо обозначить таблицы, а затем использовать специальные операции. Они помогают выполнять различные команды. Здесь на помощь приходят языки запросов. Один из наиболее популярных вариантов – SQL. Он работает через MySQL и другие СУБД.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_MySQL"></span>Краткое определение MySQL<span class="ez-toc-section-end"></span></h2>
<p>MySQL – реляционная система управления базами данных, созданная шведскими разработчиками из одноименной компании в 1994 году. Данная СУБД получила свободную лицензию. Позже компанию-создателя поглотила Oracle.</p>
<p>MySQL распространяется бесплатно. Она включена в стандартный набор приложений LAMP для разработки веб-страниц на базе Linux. Некоторые программисты называют серверы баз данных с любым программным обеспечением MySQL. Это связано с тем, что соответствующая СУБД получила достаточно широкое распространение. Она умеет работать с большими массивами информации, предоставляя неплохую скорость обработки. Используется такими компаниями как YouTube, Google, а также FaceBook.</p>
<p>MySQL – популярная система управления базами данных с моделью «клиент-сервер». Именно поэтому некоторые разработчики говорят MySQL-сервер. Такие проекты создаются для обеспечения доступа к данным для различных приложений, а также сервисов.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5_SQL"></span>Что такое SQL<span class="ez-toc-section-end"></span></h2>
<p>Перед погружением в основы использования MySQL необходимо выяснить, что собой представляет SQL. Это Structured Query Language. В переводе с английского – «язык структурированных запросов».</p>
<p>SQL – стандартизированный язык, используемый для взаимодействия с базами данных. С его помощью удается получать доступ к информации, хранящейся непосредственно в таблицах MySQL. Делится этот язык на несколько частей:</p>
<ol>
<li>Семантический синтаксис. Он позволяет идентифицировать отдельные элементы базы данных.</li>
<li>Синтаксис управления данными в базе. С его помощью осуществляется обновление и поиск информации.</li>
<li>Синтаксис, предоставляющий выбор прав пользователям на отдельные единицы данных в имеющейся базе.</li>
</ol>
<p>SQL используется не только MySQL, но и другими СУБД. Примеры – PostgreSQL и Microsoft SQL.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_SQL"></span>Ключевые задачи SQL<span class="ez-toc-section-end"></span></h2>
<p>Перед тем как пользоваться MySQL, необходимо выяснить, какие ключевые задачи выполняет SQL. К ним относят:</p>
<ol>
<li>Извлечение запрашиваемых сведений из ячеек БД по клиентским запросам.</li>
<li>Операции с данными, включая добавление новых компонентов в таблицу. Сюда же относят удаление, сортировку и изменение сведений.</li>
<li>Идентификацию информации из базы. Подразумевается определение отдельных компонентов. Пример – определение чисел в тексте как целых для организации соответствующей дальнейшей обработки. Все это помогает формировать взаимоотношения между табличными слоями в БД.</li>
<li>Непосредственное управление данными.</li>
<li>Защиту и шифрование информации в сформированных таблицах.</li>
</ol>
<p>При помощи SQL можно с легкостью закрыть все перечисленные аспекты. Пользоваться данным языком достаточно легко. Об этом предстоит поговорить позже, рассматривая наиболее распространенные и важные команды языка.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82_MySQL-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%8B"></span>Как работают MySQL-серверы<span class="ez-toc-section-end"></span></h2>
<p>MySQL часто используется для клиент-серверных моделей. Принцип работы таких проектов прост – устройство будет делать запросы, а другие аппараты – формировать и отправлять ответы. Запрашивающего оборудования может быть более одного. Все зависит от сервера, сети и конкретных задач, которые необходимо выполнить.</p>
<p>В среде MySQL на соответствующих серверах осуществляются различные процессы:</p>
<ul>
<li>система создает БД для хранения и обработки информации;</li>
<li>клиенты (компьютеры в сети) подают запросы к БД при помощи специальных SQL-команд;</li>
<li>серверное приложение обрабатывает полученные запросы и выдает клиентам ответы (те или иные данные из таблиц).</li>
</ul>
<p>Для работы с MySQL-сервером используется специальное программное обеспечение. Некоторое поддерживает только командную строку. Наиболее популярными решениями для клиент-серверных моделей MySQL выступают – SequelPro, TablePlus, WorkBench, SQL Studio. Веб-мастеры часто пользуются phpMyAdmin. Связано это с тем, что соответствующее приложение включено в состав LAMP, а работает в обычном браузере.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8_MySQL"></span>Преимущества и недостатки MySQL<span class="ez-toc-section-end"></span></h2>
<p>MySQL пользуется спросом не только в клиент-серверных моделях, но и в других приложениях. Соответствующая СУБД имеет ряд преимуществ и недостатков, благодаря которым она стала одной из наиболее распространенных. Зная плюсы и минусы системы, каждый сможет самостоятельно решить, стоит ли ему пользоваться MySQL или нет.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B"></span>Сильные стороны<span class="ez-toc-section-end"></span></h3>
<p>К преимуществам рассматриваемой СУБД относят следующие моменты:</p>
<ol>
<li>Гибкость и простота использования. На создание и поддержку БД затрачивается относительно мало времени. Уровень компетенции для полноценной работы с СУБД требуется меньший, чем в случае с конкурентами.</li>
<li>Открытый исходный код. За счет него систему легко модифицировать. Платить за соответствующие изменения не придется – разработчик справится самостоятельно.</li>
<li>Поддержка от Oracle и дружелюбное сообщество.</li>
<li>Быстрая работа. Внутренняя структура MySQL дает возможность использования больших объемов информации, разбирая их за несколько секунд. Специфичность связей между элементами никак не отражается на работоспособности системы.</li>
<li>Высокий уровень защиты. Связано это с системой выдачи прав, а также с продвинутой системой управления пользователями. Рассматриваемая СУБД поддерживает верификацию для серверов на базе хостингов и шифрования.</li>
</ol>
<p>MySQL – это уже не просто СУБД, а нарицательное имя, некий стандарт в IT. Но у нее есть ряд недостатков, которые необходимо учесть перед началом работы.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BB%D0%B0%D0%B1%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B"></span>Слабые стороны<span class="ez-toc-section-end"></span></h3>
<p>Рассматриваемая система управления базами данных имеет следующие слабые стороны:</p>
<ol>
<li>Отсутствие полноценной стабильности. Иногда трудно предугадать, какое поведение будет в базе данных MySQL. Часть распространенных задач, особенно связанных с серверами, заканчивается ошибкой.</li>
<li>Производительность. Изучаемая СУБД умеет обрабатывать большие объемы информации, но по мере ее увеличения скорость обработки данных снижается. В небольших масштабах MySQL ведет себя более корректно и предсказуемо.</li>
<li>Замедленное развитие после выкупа проекта компанией Oracle.</li>
<li>Минимизация функций. СУБД MySQL тяжело назвать продвинутой. Эта система производительная и легкая, но инструментов в ней минимум. Для устранения этого недостатка приходится устанавливать всевозможные расширения.</li>
</ol>
<p>При помощи таблиц MySQL удается решать большинство задач, связанных с запросами и клиент-серверной разработкой. Это – идеальный вариант как для начинающих специалистов, так и для опытных. Если стандартного функционала не хватает, можно в любой момент поставить расширения – они сделают СУБД более мощной.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D0%A1%D0%A3%D0%91%D0%94"></span>Начало работы с СУБД<span class="ez-toc-section-end"></span></h2>
<p>Начало работы с рассматриваемой системой управления – это подготовка среды для дальнейших операций. Сюда также включена установка MySQL. Без предварительной подготовки разрабатывать БД не получится.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D1%80%D0%B5%D0%B4%D1%8B"></span>Подготовка среды<span class="ez-toc-section-end"></span></h3>
<p>Предложенная далее информация является универсальной. Она подойдет как для обладателей Linux, так и для других операционных систем с MySQL. Далее будет рассматриваться сервер на базе Ubuntu.</p>
<p>Чтобы начать работу, потребуется:</p>
<ul>
<li>сервер Ubuntu 18.04 с использованием sudo;</li>
<li>установленная система управления базами данных.</li>
</ul>
<p>При наличии соответствующего программного обеспечения можно будет формировать таблицы, заполнять их информацией, а также управлять данными.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C"></span>Как установить <span class="ez-toc-section-end"></span></h3>
<p>Последняя версия MySQL доступна на официальном сайте разработчика. При выборе дистрибутива пользователю будет предложена авторизация через учетную запись Oracle. Делать это необязательно. Файлы будут доступны даже тем, кто не идентифицирован в системе.</p>
<p>Чтобы установить рассматриваемую систему управления, достаточно следовать подсказкам на дисплее устройства. Существуют различные варианты инициализации программного обеспечения:</p>
<ul>
<li>developer – платформа разработчика с поддержкой некоторых дополнительных инструментов;</li>
<li>server only – активация установки только серверной части MySQL;</li>
<li>client only – клиентская часть СУБД;</li>
<li>full – полная установка всех модулей и блоков, включенных в инсталлятор;</li>
<li>custom – выборочная установка (рекомендуется только опытным специалистам).</li>
</ul>
<p>Основы работы с MySQL поддерживают установку, настройку платформы, создание локальных или удаленных баз данных или подключение к уже существующим. Все эти операции достаточно понятны – в процессе инициализации программного обеспечения появляются необходимые подсказки. Остается лишь внимательно читать их.</p>
<p>При установке MySQL необходимо создать пользователя. Сначала формируется доступ для администратора. Далее поддерживается возможность добавления и удаления аккаунтов по мере смены исполнителей, а также подключения новых сторонних специалистов.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_Ubuntu"></span>Установка в Ubuntu<span class="ez-toc-section-end"></span></h3>
<p>По умолчанию Ubuntu 18.04 поддерживает только последнюю версию MySQL. Для установки сборки 5.7 необходимо обновить индекс пакетов сервера. Далее – провести инициализацию стандартного пакета:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/iNqV5F5FlHSx_q5APBLFgAZdl-NvN2sW0pQz6kuJf0B3XF5Xnm_NX8ZfT_1I6bAHd6gyVCb4qEgdU3GZmQaVvrroqYLNSOaykH4hEJFhpQJwqKajB7G7yEFZwClIaNfDhenqLzjsKDO_YClCTyz1lw" alt="Основы SQL на базе MySQL"/></figure>
<p>При обработке запроса будет предложено указать root-пароль. Он должен быть сложным. За счет соответствующей комбинации будет обеспечена безопасность системы.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0"></span>Настройка<span class="ez-toc-section-end"></span></h3>
<p>После того как установка будет завершена, необходимо запустить встроенный сценарий безопасности MySQL. Он изменит некоторые опции по умолчанию, а также заблокирует удаленный root-логин. В старых версиях СУБД это делается автоматически, в новых – через команду:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/rEu48JXigHg1c0tfhFw2WrRT4mQyUFuvsWfdhpB1yOtHIk44nAphO8r3HOja0x17KynDhInQbGqQrA3FQeYAfmSt_ZAHdFA2P8i7Us7t1IQc0y7Nu9JgoCvU9ZEfvDVl7-zcnUUUW0FDI3_eHWRjfA" alt="Основы SQL на базе MySQL"/></figure>
<p>Сначала система предложит произвести настройку Validate Password Plugin, который отвечает за проверку надежности придуманного пароля. Далее будет запрошен root-пароль. Чтобы принять настройки по умолчанию, необходимо нажать на Y и Enter. Сценарий удалит анонимных пользователей и тестовую базу данных, отключит удаленный root-логин, а также обновит правила. Все это позволит MySQL функционировать с новыми параметрами.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span>Структура данных<span class="ez-toc-section-end"></span></h3>
<p>Проект поддерживает работу с несколькими логическими блоками – клиентскими и серверными. Ко второму типу относится непосредственно сама БД MySQL. Технически это набор файлов с расширениями:</p>
<ul>
<li>FRM;</li>
<li>MYI;</li>
<li>MYD.</li>
</ul>
<p>В каждой базе существуют одна или несколько таблиц, необходимые для структурированного хранения данных. Они выражены записями в полях. В зависимости от объема информации в БД формируются одна или несколько записей.</p>
<p>Структура БД будет одинаковой во всех проектах, где она используется. Меняется только состав и назначение конкретных ее блоков.</p>
<p>Клиентская часть включает в себя некий набор PHP-скриптов, необходимых для приема данных из внешних источников, а также их дальнейшей обработки и отправки на сервер, извлечения ранее сохраненных материалов для отображения и организации вычислительных работ.</p>
<p>Наглядный пример – это сайт. На нем хранятся базы данных, которые были заранее подключены. Они выражаются текстами, ссылками на анимацию и изображения, а также другие компоненты. При открытии той или иной страницы соответствующие сведения извлекаются оттуда по заданной программе.</p>
<p>В основе структуры БД заложена таблица. Она может поддерживать различный тип данных – текст, ссылки, а также числовые значения. Таблицы включают в себя <a href="https://otus.ru/journal/pole-chto-eto-takoe-v-obydennoj-zhizni-i-programmirovanii/" data-wpel-link="internal">поле</a> с определенными порядковыми номерами (ID). Табличные названия обычно соответствуют содержимому. Пример – блок USER указывает на данных о зарегистрированных пользователях. В полях будет храниться:</p>
<ul>
<li>логин;</li>
<li>пароль;</li>
<li>электронный адрес пользователя;</li>
<li>иные реквизиты человека.</li>
</ul>
<p>Соответствующая информация распределяется по отдельным записям – ячейкам, заполненным значениями в соответствие с обозначенным типам данных.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8"></span>Основные операции<span class="ez-toc-section-end"></span></h2>
<p>Чтобы лучше разобраться с СУБД и SQL, необходимо рассматривать операторы и команды на наглядном примере. Для этого создается отдельная БД. Далее будет изучаться такой сценарий:</p>
<p>Человек с друзьями всегда празднуют дни рождения совместно. Каждый раз все члены группы идут в боулинг на дружеский турнир. После этого – к человеку, где он готовит любимое блюдо именинника.</p>
<p>Данное поведение стало традицией – возникла необходимость в отслеживании результатов организованных турниров. Чтобы сделать планирование обедов более простым, требуется создать записи о днях рождениях друзей и их любимых блюдах, десертах, а также гарнирах. Чтобы не приходилось все записывать в обычной записной книжке, будет использоваться СУБД MySQL.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B"></span>Создание таблицы<span class="ez-toc-section-end"></span></h3>
<p>Начать необходимо с открытия командной строки MySQL в качестве root-пользователя:</p>
<p>sudo Mysql.</p>
<p>Для создания БД необходимо использовать команду CREATE Database:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/tQtUyJhmFdVK9QtSL45oylAieD0bB-hu2Jfw7mlAbGY7juAcYijQjrrsmlJyddHLfoEJKrkqmthVWqaRIfXnnneRca2yD8ANWCdAGl64NE-Dmp9Ybnsg3RPVFwubiBkiNsAaGQiFj4Z3bp9i2rH4vA" alt="Основы SQL на базе MySQL"/></figure>
<p>Теперь ее необходимо выбрать:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/Jb8Y-lvxD2mOIfzdYYo9fBjTwv6h47P2H7TUUqZOsL47kt3HUvBLLwc89UnqeUxgsCsgmdSpuak3RWZOjY5_Em4zI0u0NKAlFHY1Z5CMwXwWQ9ABFGL_G0FIqSAjmEsDULV33qcfCP6dYHao76olvA" alt="Основы SQL на базе MySQL"/></figure>
<p>В ней должны быть созданы две таблицы: первая используется для отслеживания результатов в боулинге, вторая отвечает за сопоставление друзей и их любимых блюд.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/Svy0pwfitbL7UDnEaPaPkXKg17pncYljSwbFLU9Hil7VMiU4EX5bKcvbzO5MvqULf6Ss8EOt4B_ezywvpppnKWo7Io1GeeB7AKyfBw4AhUxiUAvgdggqoEZK7WYXt-6EnAF02exGsCBBC84ZahgPzg" alt="Основы SQL на базе MySQL"/></figure>
<p>В предложенной выше таблице «для боулинга» будут отображаться столбцы с именами друзей (имя пользователя, name), а также количество выигранных ими турниров (wins), лучшие результаты за все время (best). Здесь же выводится размер обуви для боулинга каждого участника (size).</p>
<p>Если запустить предложенный код, на экране появится следующая запись:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/We-dvwnRaH5vMqU47C40j552N1ME66LsXxYoz_a67m3dN6xZ17_CxLXq2tWSul8L-kIQP7dAThIy-3-VC4AjExK_0ae8J1KEKDB94HbypDHIpG1wQkzhBX6_H-fW0FETakKzMkoz7aDjwF9MyKK5vw" alt="Основы SQL на базе MySQL"/></figure>
<p>Теперь в нее необходимо добавить информацию. Делается это при помощи команды Insert into:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/vmzw6EG3PXjCUwjWL2KSUWf3qREPHML6PM7I7s6_YuGEWjz6bAQGxND2JObuXjizOR4sc5Qgg8V9sjRMKpsQ_g_ta1NZsUWFulwREBzO4gNyGw8I4lZ-URDIjhkRO0Ur0CEAYx4vSmXmq0evuNX4Lw" alt="Основы SQL на базе MySQL"/></figure>
<p>Команда вернет такой результат:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/EwG1yg8JSJx7lpluIOwA-1CE_HAolyoSCO6pY-vVVvWpYLhqwHzY6hUrH9jvNr40P4-vJGCvNnpxUdIJHtSPyEHpVChfqcJ9cYgxyJEs-PjU_eTlE0o3W3DEDSxTCUodJuu03XoUQ2mQCPmgKajvOQ" alt="Основы SQL на базе MySQL"/></figure>
<p>Теперь можно создать вторую таблицу в пределах той же базы посредством команды create table. Она будет использоваться для хранения информации о блюдах и друзьях. В ней будут находиться столбцы с именами друзей, датами рождения, блюдами (entree), гарнирами (side), а также десертами (dessert):</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/U1TcRPqNIrfoj5fsNO4vI9BQxnYszJtQ2TD930c5-OiwUy_uwpvoZ8_e7KGENEW_LWHi5uPJsFcfkPNjVPgnNzvczFUCGq5MYNSfgQmtM6Y48nQg314pd93wpkyEhH_sYJAKBfoOn7ER9hNSY7M_tg" alt="Основы SQL на базе MySQL"/></figure>
<p>После обработки соответствующего запроса произойдет вывод такого результата:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/hBDJX-pwH6o3C2DbrUAJ6547Vi7HZ95WLPruAwPfThpoka9lcW1gWJUfysraBfIbodsUpGLAqIic0yTSbyufX5DEO5eJUyKyYRud-F4VjeTAGfk0IeEnJaLbHIkmaM3AKeql9VbgBY0EOny-qoP9CA" alt="Основы SQL на базе MySQL"/></figure>
<p>Можно заполнить предложенную таблицу необходимой пользователю информацией:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/ay-TBbUnd3N7Ku4baFv6tJDIQ_fLL5bEpf07ZJS9CnlEZePpYP8ItFl9SIaeJ_Xd06bkWimtGDucn80eaGdV5AHyY7N7byU0mc9bGkcCgmtp9h3uPQTMEFe2FZ7vFS5sD5mA4Vt0qrGckDGxey082A" alt="Основы SQL на базе MySQL"/></figure>
<p>На основе соответствующей БД будет происходить изучение основных команд изучаемой системы управления.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_Select"></span>Оператор Select<span class="ez-toc-section-end"></span></h3>
<p>Почти все SQL-запросы начинаются с Select. Соответствующий оператор является основой работы с таблицами. Это – универсальная синтаксическая конструкция. Пользователи смогут добавлять в нее параметры и предложения для выполнения операций по выборке.</p>
<p>Оператор MySQL Select почти всегда включает в себя FROM. Это предложение используется для ссылки на таблицу, с которой будет производиться дальнейшая работа.</p>
<p>Перед применением Select необходимо уяснить следующее:</p>
<ol>
<li>Этот оператор возвращает строки – ноль и более.</li>
<li>Список возвращаемых столбцов указывается в части запроса с Select-предложением.</li>
<li>С его помощью определяется спектр требований к возвращаемому набору сведений. Это не точная инструкция по вычислению.</li>
</ol>
<p>Соответствующий оператор включает в себя несколько разделов, каждый из которых отвечает за выборку с уточненными параметрами.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8B_Select"></span><em>Разделы Select</em><span class="ez-toc-section-end"></span></h4>
<p>Рассматриваемый оператор используется для получения информации из электронной таблицы. Он включает в себя несколько разделов (предложений):</p>
<ol>
<li>Select – часть, отвечающая за непосредственную выборку. Определяет спектр выводимых столбцов. Используется как для создаваемых элементов, так и для подготовленных заранее. Определяет имена столбцов, ограничения на уникальность строк и их количество в возвращаемом наборе информации.</li>
<li>From. Ключевое слово, которое определяет базовый набор информации для дальнейшей обработки. Ссылается на пространство, откуда будут извлекаться данные для расчетов.</li>
<li>Group by. Раздел объединения рядов с одинаковыми свойствами. Использует агрегатные функции.</li>
<li>Where. Предложение, используемое для формирования ограничений на строки выражений из таблиц, определенных через FROM.</li>
<li>Order by. Устанавливает требования сортировки строк. Отправляет данные в точку вызова после успешной обработки.</li>
<li>Having. Предложение, используемое для выборки среди групп, определенных через параметр group by.</li>
</ol>
<p>Все эти разделы необходимо изучить до непосредственной работы с готовыми БД.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C_select-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5"></span><em>Как составить select-выражение</em><span class="ez-toc-section-end"></span></h4>
<p>Эта конструкция поможет сформировать select-выражение:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/zBGVUejkmC9i6MNARCvBvwEMlz21ctsObkCxxa62qS_ENbSw2KvleAdLVWIpdH334DTp6OKGJFNzL5Ni2_y0sludB73uvo4tr3XsMcD7uiHD9Dus0sDrXNoMCMctGihdB-Ve4UcMawTL0hgoM0dg4A" alt="Основы SQL на базе MySQL"/></figure>
<p>Здесь:</p>
<ul>
<li>поле1 и поле2 – имена столбцов;</li>
<li>имя таблицы – задает табличное имя;</li>
<li>limit – используется для ограничения количества возвращаемых строк;</li>
<li>order by – сортирует результирующие значения столбцов по возрастанию или убыванию.</li>
</ul>
<p>В случае с ранее подготовленной БД в MySQL можно сформировать запрос на извлечение столбца name из таблицы dinners:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/cDT1Qy-UURvPP2vDWQ-GJSHdVxkoV4CdkeCXVzQdrsFOonDyqsM-GY4bZxMS5RLjbh9nMciSoCREcT8engO260NZw0VpWUvC85SKodDL2LXCxoj1iqaREEL9LU_EsE6ALS8xN1tGpcSbPGATpaJJEw" alt="Основы SQL на базе MySQL"/></figure>
<p>Если необходимо запросить несколько столбцов из одной таблицы, они перечисляются через запятую перед from:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/qiZBusmIkO9b6SgS5iyKGMiXEu92jt-van2mL2hNJueIbgH8JXT3V2JAGVImYjmKEMolDg2neUWVTFbYuPnBGqVykJ44-8NfW7c-3J_4YcG1Rx_bk6n14GCbTWdGBquA0OzwDPzNI8B4j3kGXXdOag" alt="Основы SQL на базе MySQL"/></figure>
<p>Вместо указания конкретного столбца или их наборов, допускается использование оператора Select вместе со знаком «звездочка» (*). Соответствующий элемент является заполнителем. Он представляет все столбцы в таблице.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/JcNtMwa1wc-NRBNFjDqW-6KbEiOV4HlxOVwDHguFjpMOfu5Jl_hFX2H1bk-gBEZ8eg64-Oi3RV-8Eg7yWakfS--6eqBpTWZF9wEztGORDtitvsTO94Aub2Vr5Noz5TPajO6yPAdtORDUQlVikH04wg" alt="Основы SQL на базе MySQL"/></figure>
<p>Выше – пример, демонстрирующий отображение всех столбцов из таблицы tourneys.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="Where"></span><em>Where</em><span class="ez-toc-section-end"></span></h4>
<p>Оператор Where – необязательный. Используется в запросе для того, чтобы фильтровать записи, удовлетворяющие заданному условию. Все строки, не попадающие под установленные «ограничения», будут исключены из результата.</p>
<p>Синтаксис оператора where:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/czKSPtVkHUfGyt2LtVhBI-Ow9z6ydlMZW6mlEMmHrR6lAgEixBV_JzfRAKUrAB_qBsMxEdkAi6G6h20rGXTF0JADxry-5AgzV-gIjx-xLL9Jz05xMn7iSW7ArFVP3ui5TzDYmt-9EREZJMQ8T3KF_Q" alt="Основы SQL на базе MySQL"/></figure>
<p>Часто используется с запросами delete и update. Является альтернативой использования OR, а также AND.</p>
<p>Записи в таблице могут быть уточнены при помощи операторов сравнения SQL, записанных в where-предложении. Вот самые распространенные варианты:</p>
<figure class="wp-block-table"><table><tbody><tr><td>Что за оператор используется (обозначение)</td><td>Действие (описание)</td></tr><tr><td>=</td><td>Равенство</td></tr><tr><td>!=</td><td>Неравно</td></tr><tr><td>></td><td>Больше</td></tr><tr><td><</td><td>Меньше</td></tr><tr><td>>=</td><td>Больше или равно</td></tr><tr><td><=</td><td>Меньше или равно</td></tr><tr><td>BETWEEN</td><td>Проверяет, находится ли заданное значение в пределах установленного диапазона</td></tr><tr><td>IN</td><td>Проверяет, содержится ли значение строки в наборе указанных значений</td></tr><tr><td>EXISTS</td><td>Проверка на наличие строк при заданных условиях</td></tr><tr><td>Like</td><td>Позволяет узнать, существует ли значение в указанной строке</td></tr><tr><td>IS NULL</td><td>Проверяет значения NULL</td></tr><tr><td>IS NOT NULL</td><td>Проверяет все значения, исключая NULL</td></tr></tbody></table></figure>
<p>Вот пример, который позволит узнать размер обуви Ирмы:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/lORdrQvKqxAsNb6PssToI5JUq_2QMhAKnhRJa4C61anB2a_GIvaMBCUnPjSdQc88vv3ejZgHV4DSBL1Kod4rBMSbbu0HlcLzUUs_R6GXi0oMHvr36sN-4buy2z4q6KPcx6cmQO3_K5LindD9BGzGvg" alt="Основы SQL на базе MySQL"/></figure>
<p>SQL-запросы позволяют использовать подстановочные знаки. В случае с Where-выражениями это бывает достаточно удобно. Знак процента (%) представляет ноль или более неизвестных символов, а нижнее подчеркивание отвечает за один неизвестных элемент (_).</p>
<p>Подстановочные знаки удобны, когда необходимо найти конкретную запись в таблице, но в правильности ее написания нет уверенности.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/qtnUAo9ExkTFaUM5m-zTMv0yLWl6trkTxNYgdnP4OjY0QrCG36WYXx7uOqQ4bYvYu75jtXykw7AAybI2NRQE15ccoA6BJS52ASxiT29GcKduLHWrBXPVvyf8stgQ8rT5PyG6FK_hyaa7eq1nr6w6Dg" alt="Основы SQL на базе MySQL"/></figure>
<p>Этот пример показывает ситуацию, при которой пользователь выбрал любимые блюда, но он не уверен, что оно начинается на t. Результатом обработки запроса станет tofu.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="Order_by"></span><em>Order by</em><span class="ez-toc-section-end"></span></h4>
<p>Предложение order by используется для того, чтобы привести <a href="https://otus.ru/journal/tablichnaya-struktura-dannyh/" data-wpel-link="internal">табличные данные</a> в порядок. С его помощью информация из MySQL будет представлена в упорядоченном виде. Значения поддерживают сортировку по убыванию или возрастанию.</p>
<p>По умолчанию используется принцип вывода информации «от меньшего к большему». Уточнение вводится при помощи таких слов:</p>
<ul>
<li>desc – отображение по убыванию;</li>
<li>asc – вывод информации в порядке возрастания.</li>
</ul>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/KIUVJtAzCF4sEsOsT6CJRfbEwudzbhgSOdMOyA2IdFgj2Z6g4pMsEB5fyXceibDYJNtysh3917zrLw5e6CbX7lukhNjPiUe1EHSxpLBWJVW7meWv4bOwfVfg8lpQqR5zW-NfZdxUKSQAd_uLqgHZaQ" alt="Основы SQL на базе MySQL"/></figure>
<p>Это – пример формирования запроса с order by.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="Limit"></span><em>Limit</em><span class="ez-toc-section-end"></span></h4>
<p>Предложения Limit применяются в SQL-запросах для получения некоторого ограниченного количества строк из больших информационных объемов. Это – ограничение возвращаемых результатов.</p>
<p>Limit дает возможность возврата одного или двух аргументов. Если «параметров» несколько, то один из них выступает в качестве смещения. Он задаст сдвиг первой возвращаемой строки. Смещение обязательно является или нулевым, или положительным. Если в запросе один аргумент, он будет выступать количеством выводимых строк на дисплей устройства.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%D1%8B"></span><em>Псевдонимы</em><span class="ez-toc-section-end"></span></h4>
<p>В Select-запросах MySQL могут использоваться псевдонимы. Они задаются через ключевое слово AS. Позволяют сделать имена таблиц или столбцов более читабельными и понятными. Встречаются преимущественно тогда, когда работать с изначальной формой представления таблиц трудно.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/m8fWhH1KtQ-77Czr4wHDIzbH9jqGbrdjOyQMh3eT9YcZhBzjLCWCa1u27JePrlqUTdU1jAAzDvwzrN-ID7O9ue1TpYMd9PaRFH3xKy193enE-AwyeY_3lj34ekvCV5Qmq8m7-wMrm0QQbWnX5-78Ow" alt="Основы SQL на базе MySQL"/></figure>
<p>Псевдонимы, сформированные при помощи AS – это временные сведения. Они существуют до тех пор, пока работает запрос, для которого они были созданы.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86"></span><em>Соединение таблиц</em><span class="ez-toc-section-end"></span></h4>
<p>Соединение (join) используется для одновременного получения информации сразу из нескольких таблиц в MySQL. Пример – есть order и customer. Из них необходимо извлечь информацию для дальнейшей обработки. Для этого применяется запрос типа join.</p>
<p>Она поддерживает такие предложения:</p>
<ol>
<li>Cross – перекрестное соединение. Применяется для вывода информации, которая совпала как в левой, так и в правой таблице.</li>
<li>Inner – внутреннее объединение. Возвращает записи, значения которых совпадают в обеих заданных таблицах.</li>
<li>Right – правое соединение. Указывает информацию из правой таблицы, значения которых встречаются в левой.</li>
<li>Left – левое соединение. Отображает данные левой таблицы, совпавшие с параметрами из правой.</li>
</ol>
<p>Объединить результаты нескольких select-запросов удается при помощи ключевого слова Union. Для каждого select устанавливается одно и то же количество столбцов с одинаковыми типами используемых данных.</p>
<p>Предложение left join отвечает за возврат всех записей из левой таблицы и только совпадающие с аргументами правой таблицы. В контексте соединения левая таблица MySQL – это таблица, на которую будет ссылаться FROM. Правая – любая другая, на которую имеется ссылка после оператора JOIN.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/GLUBSvQUNZ0PC6ftBZ5oei7losQdw6jfmoKGHr8rPW54F0fcUu840vh19RYCK_N_mre8mJnGGRkP84B43gWGYA7CiNGetC0Ll1Mzyc3qzfQbk5LlHUr_ahNB3FamLYTuLumi5sVrR7Cg_49zSV7WdQ" alt="Основы SQL на базе MySQL"/></figure>
<p>Соответствующий запрос выведет каждую запись из левой таблицы (в приведенном примере – tourneys), даже если в правой таблице совпадающие записи отсутствуют. Каждый раз, когда в правой табличке нет подходящей записи, она вернет пустое значение или NULL. На устройстве появится следующий результат:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/7JdEgzDBF5dqQB3Eka1MsHp0OocTeRGlP1dRMbJWGc-KFCn4QcTzuGz_Yb5M1mJ9rJlgARNRUeAJ_5oB9bMaoM5G4OnF_l9uBah_13jNjReaPMTaZMkv_gGi5p-q2chalHFKWkYL28Rna_hxcEfvvQ" alt="Основы SQL на базе MySQL"/></figure>
<p>Соответствующую команду рекомендуется повторить, но уже при помощи оператора right join:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/UgmNG9GH_OTjo8k14tr8W7thCnCGGwSIQ3re5VU2qNTapLj16R1vzBb7HKwV6tPvJcRVNLfxfHyHVShdLsX3u9FmP-7h9cFLk1DiyhZ_7dvqMOKJjGRPqBcM86p6XBC1nNamkU2Tx1YOMDEKmBbS5w" alt="Основы SQL на базе MySQL"/></figure>
<p>Результат будет представлен в виде возврата всех записей из правой таблички – dinners. Дата рождения Лесли записана в правой таблице MySQL, но для нее нет соответствующей строки в левой, столбцы name и size получат нулевые значения (NULL):</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/TJGHPwE9ED8DkiNRgwcYP4KtaJIWl_Ae7580BiNSOgon9ChmDLYJl6WWavuQ1561gwitZ4qzvNkeGlFLlBgGNIohfOYRfujSA30-toyp6HxNEPLJ6MooE37fDG8GhG-2x1A5NDqdp8nGeBMrbb1KGw" alt="Основы SQL на базе MySQL"/></figure>
<p>Левые и правые соединения в MySQL могут быть записаны в виде left outer join или right outer join. То же самое касается Inner join. Эта команда может быть записана просто как join.</p>
<p>В качестве альтернативы JOIN допускается использование Union. Вместо того, чтобы вывести результат из нескольких табличек в виде уникальных столбцов с помощью Select соответствующая команда объединит информацию от двух select-запросов в один столбец.</p>
<p>Вот пример запроса:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/e7KUFQpfAh_QXljFaO_Z051bx55C7YK4J3kXhz48sQ3Dzux1QGOCSOr2vST8Fb6vBZqYeUpUXqmrxTktHz2kKTYLdl7W6m1ZqIebfJzxjD0X8xDdU3INpYFKOBzuEMNRXe_ZZWmz_EqZY0BQR7FDmA" alt="Основы SQL на базе MySQL"/></figure>
<p>Он приведет к отображению такого результата:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/yo22knIRqZlMxkhTxJlxgz_4AiDPl_IUL9c86Gp7pGmOXiVmtbYyVX1TQ-7b9MZPCU0Nnfog7dvY_5NPRAyMsTbHKtXPw56UDSWMCAaLgdMLv_sQ3SaaPbzQzLQSDirRGBkIdd9gw51wGFg8Wid2_w" alt="Основы SQL на базе MySQL"/></figure>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2"></span><em>Удаление дубликатов</em><span class="ez-toc-section-end"></span></h4>
<p>При использовании Select-запросов в MySQL могут встречаться одинаковые значения. Выводить их несколько раз на дисплей нет никакой необходимости. Чтобы удалить повторы в результирующих значениях, необходимо использовать предложение distinct.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/K_UctMlVMI_hYA6rI3vqX3oo6eMpSWpR9WcLl9y7AMDmhq1FLJwUkI5XCnXoyLRspHCUusxVljvNP1jJL_iLjEdTP1dxwtGl2kjh1rTFBPLNfx0F-P2Sul1-Tqxnmb5TPlAi48mNx9cfTc9aCdEyFw" alt="Основы SQL на базе MySQL"/></figure>
<p>В заданной форме записи:</p>
<ol>
<li>Expressions – столбцы или вычисления, которые необходимо получить.</li>
<li>Tables – таблицы, используемые для работы. Этот параметр не является обязательным. Связано это с тем, что в перечислении from должна быть хотя бы одна таблица.</li>
<li>Where conditions – параметр, указывающий на условия, выполняемые для выбранных записей. Соответствующая запись в SQL-запросе может отсутствовать.</li>
</ol>
<p>Значения Null MySQL при использовании запроса distinct игнорировать не будет. Он рассматривается системой в виде отдельного значения.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_Load"></span>Оператор Load<span class="ez-toc-section-end"></span></h3>
<p>Оператор Load используется для заполнения таблицы. Применяется при формировании результата из подготовленного заранее документа. Оператор Load data имеет такую форму представления:</p>
<p>Load data ‘[путь/] [имя файла]’ in table [имя таблицы];</p>
<p>Также для вставки данных в таблицу можно использовать Insert:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/tjcAvXxF0nS-1AWowdwBMR_pv6KMgon2OkQCd-fC0-Ba14Fd1hxfybd02sFpREJhFwuQ5vortZNKdr-Suov1iLOwudmZYqTXuOolLMy6CnnKaJ5pRIj3li0LCLH9cKrgit8Lr6fTOXeSQHwtojRa6Q" alt="Основы SQL на базе MySQL"/></figure>
<p>Здесь:</p>
<ul>
<li>table_name – это название таблицы;</li>
<li>values – значения, которые необходимо добавить.</li>
</ul>
<p>Value1, ….valueN – это аргументы, перечисляемые через запятую. Значения здесь предоставляются в том же порядке, в котором они указаны изначально в таблице.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_show"></span>Оператор show<span class="ez-toc-section-end"></span></h3>
<p>В MySQL show используется для предоставления информации о базах данных, таблицах, столбцах и состоянии операций. Следующие команды являются наиболее распространенными:</p>
<ul>
<li>show databases – показать базу данных на хосте сервера;</li>
<li>show tables – перечисление постоянных таблиц;</li>
<li>show triggers – вывод триггеров;</li>
<li>show create table – отображение оператора создания таблиц.</li>
</ul>
<p><a href="http://www.kodesource.top/mysql/mysql-show.php" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Здесь<span class="wpel-icon wpel-image wpel-icon-6"></span></a> можно увидеть все возможные способы представления оператора show.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D0%B3%D1%80%D0%B5%D0%B3%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8"></span>Агрегатные функции<span class="ez-toc-section-end"></span></h3>
<p>В СУБД работа с данными не всегда подразумевает их интерпретацию. Иногда требуется получение информации о них. SQL-синтаксис поддерживает некоторые функции, позволяющие интерпретировать, а также выполнять различные вычисления через Select-запросы. Они носят название агрегатных:</p>
<ol>
<li>Count. Используется для подсчета и возврата количества строк, соответствующих заданным критериям. Пример – уточнение информации о том, сколько друзей из заданной БД предпочитают тофу. Сделать это поможет следующий запрос:<img alt="Основы SQL на базе MySQL" decoding="async" src="https://lh4.googleusercontent.com/ZBbsSltI30PM-JBTD8uS1hshzA5h79hh1jU4PRMVvWtD9XPIt4_tsQVppbWiJm0AO41nsEZSks9v6EqaNEKAw5L9nWp3BUT6OfPPQRLYeHKq0mcqZxRm6eJwJN4125FwMVGsGBpA5JChG8uIjwILvQ" width="453" height="172">.</li>
<li>AVG. Отвечает за возвращение среднего значения заданного столбца в MySQL. Пример – получение среднего лучшего результата в турнире:<img alt="Основы SQL на базе MySQL" decoding="async" src="https://lh6.googleusercontent.com/CSzPFMRuiJHRBWc6Lku_aXsLEM_X8NEkKkVfhlCvpmQE2wFBs1pPk_jPQr9bzd9g5DXhwPqjNvLPpgXeHYNzvYCnHZD_8Ugk2gde5piyBLho9HntLLjdVR20e8y-mY53XW8rgojKjDtNQewMss_SrA" width="258" height="172">.</li>
<li>SUM – общая сумма значений столбца. Пример – просмотр количества турниров, проведенных за установленный период:<img alt="Основы SQL на базе MySQL" loading="lazy" decoding="async" src="https://lh5.googleusercontent.com/TxkMAZWGAMzyWU4nK020Gk5YNsZ2Ub212-hpGdwd4UObInazex9W3SL7tTaNzOpBq5puonNo8vZIg8NJJKt3vJ_jO86hnqlWiXYWaykjn3Fsr8AQdsaKeuzkrm_El499B882hHcf8RHNPTyn2ajLEA" width="281" height="177">.</li>
<li>MIN используется для поиска наименьшего значения по столбцам. Этот запрос в MySQL поможет отыскать наименьшее количество очков победителя в турнире за все годы:<img alt="Основы SQL на базе MySQL" loading="lazy" decoding="async" src="https://lh6.googleusercontent.com/dJJsYryIOxqf4A49vJTTpNDg1EgHX4oUYLYIOJRNDHVcWD00qJI0zJtYkq71GTudR4Oz9lMknohNEbeBkUSOtyxE8caXsx7jqUnKdn7RNT6GmojjU5KGEbMWWiSJPHfCFndkOl2X0SkBg7m6ugEg5A" width="282" height="168">.</li>
<li>MAX – функция, которая работает по обратному принципу MIN. Используется для поиска наибольшего числового значения.</li>
</ol>
<p>SUM и AVG функционируют правильно в базах данных MySQL, только если речь идет о числах. При попытке работы с нечисловыми значениями результат окажется или нулем, или ошибкой обработки данных. Все зависит непосредственно от используемой СУБД.</p>
<p>Функции MIN и MAX используются не только для числовых, но и для буквенных типов данных. При запуске в столбце со строками, функция MIN отобразит первое значение в алфавитном порядке:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/43KcY8nDuXL_pU4O6IAFrqwQBybJ8Gaz5lqOAxfDq17HANFmYtCgiawDnhnGLnaF4zis_CB7tdG58bgZVpv-qndnXiOaHOFH6-_FDyfoWOPK6eSsNNmSY4dNjtAcVQrhwFPzgWRdnQfRGcOS4fZxYA" alt="Основы SQL на базе MySQL"/></figure>
<p>В случае с использованием MAX происходит то же самое, но в алфавитном порядке показывается последнее значение:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/dPFnIizfCEpd81VbeLVxX4aureVBYWb_LJ_qeIYBRIWyIPGm8jERpttwemp-tTiqj_Xz5OOvBwqWcRpQ8_3B6xF-ajpe4dX_kL266k7-SQhBBQSc5wSip5VOLY5ztGa8NnrKPEY2soGsWsP8sDwamQ" alt="Основы SQL на базе MySQL"/></figure>
<p>Агрегатные функции в MySQL и SQL-запросах получили широкое распространение. Они особо полезны в запросах с group by.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0"></span>Вывод запроса<span class="ez-toc-section-end"></span></h3>
<p>Рассматривая select-запросы MySQL, необходимо также обратить внимание на управление выводом. Далее будут представлены наиболее популярные операторы:</p>
<ol>
<li>Group by. Используется тогда, когда выполняется агрегатная функция для одного столбца, но в отношении сопоставления значений в другом. Вот – пример, в котором пользователь пытается узнать, сколько друзей любят то или иное блюдо:<img alt="Основы SQL на базе MySQL" loading="lazy" decoding="async" src="https://lh5.googleusercontent.com/5NO48mzoUgEZfJG09I85wZC9ubxP8anQw63yS_Rhior9xNKpq9zFoP8T5SvP-oySDs8b9OGQ62aApsJQh8N_YOIB5UCv7uVcgMQkYmIMd8Cnuqjp-5rhDsL7Yy5iCynLzcKaWN_v0Sj_dtmecITNNw" width="446" height="217">.</li>
<li>Оператор order by применяется для сортировки результатов заданного запроса. По умолчанию все числовые значения сортируются по возрастанию, текстовые значения – по алфавиту.</li>
<li>Having. Используется для выполнения функций, аналогичных Where, но совместимых с агрегатными.</li>
</ol>
<p>Where используется для фильтрации результатов на основе заданных пользователем условий. Только работу с агрегатными функциями этот оператор не поддерживает. Он возвращает при подобных обстоятельствах ошибку.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%BE%D0%B4%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B"></span>Подзапросы<span class="ez-toc-section-end"></span></h3>
<p>Чтобы обратиться к нескольким таблицам MySQL, можно использовать подзапросы. Они носят название вложенных запросов (или внутренних). Это запрос, включенный в другой. Такой вариант полезен тогда, когда необходимо отфильтровать результаты запроса по сравнению с итогами отдельной агрегатной функции MySQL.</p>
<p>Лучше разобрать с этой операцией в базах данных поможет наглядный пример. Необходимо узнать, кто из друзей выиграл больше матчей, чем Барбара. Вместо того чтобы посмотреть, сколько матчей выиграла девушка, а затем выполнять другой запрос, можно сделать это так:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/oGHq3yuZtYGc5IPyV29lAd8oJuuQe65mTIKEQ0-pdffALc8w3N6L6P_E2R3XIqCVTZG5IGdqt4AlJqzk9rHNdqcPmYH13su8GxsS6niJqb1gcHNVteFlZQRBX12yqrPyrt-FtBjSlTnm0Q6ORL9IFw" alt="Основы SQL на базе MySQL"/></figure>
<p>Подзапрос в операторе выполнялся всего один раз. В заданном примере требовалось найти значение из столбца wins в строке, где в столбце name указано значение Barbara. Данные, возвращаемые при помощи сформированного подзапроса и внешнего запроса, не зависят друг от друга. Бывают ситуации, при которых внешний запрос должен сначала считать каждую строчку в табличке, а затем сравнить соответствующие значения с данными, возвращаемыми подзапросом. Такой подзапрос называется коррелированным.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/xd8e2TK68ixwrhks5I74Np3MvEBRF9NBbDKlAkwBeyFAplMEQkG_1Omh7YoueLvOGSCgqc9Jad-7PZ9WqIIdQF_O9RGaYBBuuIW6ouDqB54sdzn8BYPa-lhKxRY60EQJfvENOhGbeECB_wb1h1EH8A" alt="Основы SQL на базе MySQL"/></figure>
<p>Этот запрос попытается выяснить, кто из друзей выиграл игр больше среди участников с одинаковым размером обуви. Для обработки MySQL необходимо собрать столбцы name и size из внешнего запроса. После этого она сравнивает каждую строчку из соответствующего результирующего с результатами внутреннего запроса, определяющего среднее количество для людей с одинаковым размером обуви. На экране появится такой вывод:</p>
<p><img alt="Основы SQL на базе MySQL" loading="lazy" decoding="async" src="https://lh6.googleusercontent.com/tKX9xwDkTBnSl-Ur5ToaS5pdMT-QbkCuLqEERgfbR8CAqEwzCJFcqSsi7Tplp1-JF85L1vrgMxg1vn95EP5JZxyLr4KADdOmCf0Kk-Tmz4d2vsendkGhsYKInMN59zHVj98b3vOirimPxA6B-L4AKA" width="206" height="150">.</p>
<p>Это связано с тем, что всего два человека среди друзей в изучаемом примере имеют одинаковый размер обуви.</p>
<p>Подзапросы используются для запроса результатов из нескольких таблиц данных MySQL. Для наглядного примера рекомендуется рассмотреть ситуацию, при котором лучший игрок в группе получает сюрприз. Он выражается ужином с его любимыми блюдами.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/h5dfI51M_8wAfo4JLuSGoESA-3zR10jYz8uk5BPUQ3RK1zyRHUCOPNVMHfxeFIqnlCe2YyLA_7R0yIK0nrW-HEiPPx15YhyE1v-VhuI7j9QD-luTvUBnsJ_KpEUDZ2H-AJRLASN0ivdX4WAGAAO4-w" alt="Основы SQL на базе MySQL"/></figure>
<p>Данный фрагмент MySQL-запроса позволяет узнать, кто среди друзей показал лучший результат. После этого система выведет его любимое блюдо. Для реализации используется один запрос.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%BE%D1%81%D0%B2%D0%BE%D0%B8%D1%82%D1%8C_MySQL_%D0%B8_SQL"></span>Как освоить MySQL и SQL<span class="ez-toc-section-end"></span></h2>
<p>MySQL и SQL – популярные инструменты для использования баз данных через специальные запросы. Разобраться с ними помогут специализированные дистанционные онлайн курсы. Пример – от образовательного центра OTUS.</p>
<p>Данные курсы гарантируют:</p>
<ol>
<li>Сжатые сроки обучения и грамотно составленные программы. В период от нескольких месяцев до года можно освоить с нуля любую IT-профессию.</li>
<li>Постоянное кураторство и интересные домашние задания.</li>
<li>Возможность совмещать работу и учебу, а также быт и семью. Все занятия организованы через интернет. Если ученик отсутствовал на лекции, он сможет просмотреть запись вебинара.</li>
<li>Помощь в формировании портфолио, а также богатую практику.</li>
<li>Разнообразие программ обучения. Можно выбрать специализацию или направление в зависимости от первоначальных навыков и знаний каждого конкретного человека.</li>
</ol>
<p>Вместе с дистанционными компьютерными курсами записи типа «unsigned not null», «in set», «primary key», «not null auto», «select from» и другие используемые в СУБД не вызовут затруднений. Удастся не только освоить базы данных, но и научиться писать сложные приложения на различных языках «с нуля». В конце обучения все участники получают электронные сертификаты, помогающие подтвердить приобретенный спектр навыков и умений.</p>
<p><em>Прокачать <a href="https://otus.ru/lessons/subd/?utm_source=oj&utm_medium=affilate&utm_campaign=subd" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">навыки работы с базами данных<span class="wpel-icon wpel-image wpel-icon-6"></span></a> можно на курсах Otus.</em></p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/sql/" rel="tag" data-wpel-link="internal">SQL</a><a href="https://otus.ru/journal/tag/bazy-dannyh-2/" rel="tag" data-wpel-link="internal">базы данных</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-sql-na-baze-mysql%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-sql-na-baze-mysql%2F&text=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20SQL%20%D0%BD%D0%B0%20%D0%B1%D0%B0%D0%B7%D0%B5%20MySQL" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-sql-na-baze-mysql%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fosnovy-sql-na-baze-mysql%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2023%2F03%2Foj-1080x720-22.jpg&description=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20SQL%20%D0%BD%D0%B0%20%D0%B1%D0%B0%D0%B7%D0%B5%20MySQL" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/operator-select-v-mysql/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/operator-select-v-mysql/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Оператор Select в MySQL" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-21-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-21-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-21-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-21-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-21-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/03/oj-1080x720-21-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Оператор Select в MySQL" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/operator-select-v-mysql/" data-wpel-link="internal">Оператор Select в MySQL</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/operator-select-v-mysql/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-03-04T23:21:39+00:00">4 марта, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">8 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/profajling-ui/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/profajling-ui/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Профайлинг UI" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/03/Screen-Shot-2023-03-07-at-12.54.55-PM-150x106.png 150w, https://otus.ru/journal/wp-content/uploads/2023/03/Screen-Shot-2023-03-07-at-12.54.55-PM-300x213.png 300w, https://otus.ru/journal/wp-content/uploads/2023/03/Screen-Shot-2023-03-07-at-12.54.55-PM-768x544.png 768w, https://otus.ru/journal/wp-content/uploads/2023/03/Screen-Shot-2023-03-07-at-12.54.55-PM.png 792w" data-src="https://otus.ru/journal/wp-content/uploads/2023/03/Screen-Shot-2023-03-07-at-12.54.55-PM-150x106.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Профайлинг UI" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/profajling-ui/" data-wpel-link="internal">Профайлинг UI</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/profajling-ui/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-03-07T09:55:41+00:00">7 марта, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">1 Min Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/osnovy-sql-na-baze-mysql\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 19:24:27 GMT -->