Skip to content

Учёт интервалов времени

Автор: Джо Селко (Joe Celko)



SQL — первый язык программирования, в котором появились явные временные типы данных. Я давно полагаю, что если бы в Cobol изначально был тип TIMESTAMP, вся история с Y2K могла бы и не случиться. По крайней мере, сегодня всё больше людей знают о стандартах отображения даты и времени ISO 8601. Кто знает — может быть, их наконец начнут применять.

Continue reading "Учёт интервалов времени"

Детальное сравнение MariaDB и MySQL

Пересказ статьи Antonello Zanini. MariaDB vs MySQL: The Ultimate Comparison


MariaDB и MySQL - две из наиболее широко используемых СУБД, доля которых на рынке среди реляционных баз данных совместно составляет более 40%. Хотя они имеют общую базовую реализацию, некоторые фундаментальные различия делают их более подходящими для различных сценариев.

В этой статье сравнения MariaDB и MySQL мы обратимся к истории этих технологий, исследуем их подобие и различие, чтобы помочь вам развеять сомнения относительно применения этих двух баз данных.
Continue reading "Детальное сравнение MariaDB и MySQL"

Обзор индексов в MySQL: составные индексы B-Tree

Пересказ статьи Lukas Vileikis. MySQL Index Overviews: Composite B-Tree Indexes


Индексы в MySQL являются одним из главных средств улучшения производительности запросов. Они особенно полезны, когда основные операции вашего проекта относятся к чтению данных, хранящихся в базе данных. Мы уже обсуждали нюансы индексов в MySQL, где говорилось, что MySQL предлагает вам для выбора различные типы SQL-индексов.

Основной тип индекса в MySQL - это индекс B-Tree, рассмотренный нами в одной из предыдущих статей. Если вы работаете с MySQL, то определенно знаете также о других нюансах индексов, одним из которых является тот факт, что индексы B-Tree могут строиться на нескольких столбцах (обычно их называют составными индексами). В этом примере мы используем MariaDB, хотя Percona Server для MySQL и MySQL Server будут вести себя идентично.

В приложении вы найдете запросы, воссоздающие структуру таблиц и составные индексы, так что давайте начнем.
Continue reading "Обзор индексов в MySQL: составные индексы B-Tree"

Разница между CTE и подзапросами в SQL: полноценное руководство для разработчиков

Автор: Vivek Johari Difference Between CTE and Subqueries in SQL: A Complete Guide for Developers


Язык структурированных запросов (SQL) — основа манипулирования и извлечения данных в современных базах. Будь то MySQL, PostgreSQL, SQL Server или Oracle, SQL предоставляет мощные инструменты для эффективной работы с данными. Среди них важнейшую роль в упрощении сложных операций играют Common Table Expressions (CTE) и подзапросы.


Однако многие разработчики — особенно начинающие — задаются вопросом, чем именно отличаются CTE от подзапросов, когда выбирать одно вместо другого и как каждый влияет на читаемость, производительность и сопровождение.


В SQL подзапросы вместе с CTE позволяет разбивать сложную логику на более компактные и управляемые части. Часто достигая одинаковых результатов, они различаются структурой, повторным использованием и пригодностью для разных задач. Выбор подходящего инструмента (CTE или подзапросов) зависит от сложности запроса, необходимости повторного использования и простоты читаемости кода.


Это руководство подробно разбирает разницу между CTE и подзапросами в SQL, с примерами, вариантами применения и советами по оптимизации, которые сделают вас более эффективным SQL‑разработчиком.


Continue reading "Разница между CTE и подзапросами в SQL: полноценное руководство для разработчиков"

Улучшение поиска текста в базе данных

Пересказ статьи Hafidz Mahrus. Enhancing Database Text Search


В мире реляционных баз данных MySQL является одной из наиболее популярных, благодаря легкости использования и масштабируемости. В то время как MySQL замечательно себя показывает в хранении и извлечении структурированных данных, она может быть не так хороша при выполнении полнотекстового поиска в больших объемах неструктурированного текста. И тут вступают в действие возможности полнотекстового поиска в MySQL.

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

Continue reading "Улучшение поиска текста в базе данных"

Оптимизация MySQL: удаление данных

Пересказ статьи Lukas Vileikis. Optimizing MySQL: Deleting Data


Удаление данных - основы


Спросите любого администратора баз данных, как удалить данные, и вы услышите об одном или двух следующих методов:

  1. Выполните запрос DELETE - запросы DELETE довольно самоочевидны, и они удаляют строки в таблицах базы данных.

  2. Выполните запрос TRUNCATE - TRUNCATE - это брат DELETE с тем главным отличием, что DELETE удаляет подмножество строк, а TRUNCATE удаляет все строки таблицы. TRUNCATE имеет еще одно отличие - он значительно быстрей, чем DELETE при удалении всех строк таблицы, поскольку он имеет меньше накладных расходов. Но давайте начнем с начала.


Для начала рассмотрим обычный запрос DELETE, который в MySQL выглядит следующим образом:

DELETE FROM имя_таблицы WHERE [логическое_выражение]

По частям:
Continue reading "Оптимизация MySQL: удаление данных"

MySQL INTO OUTFILE против INTO DUMPFILE

Пересказ статьи Chad Callihan. MySQL INTO OUTFILE vs. INTO DUMPFILE


Я еще не писал о MySQL, так что настало время несколько разнообразить блог.

Есть пара разных способов экспорта данных с помощью запроса SELECT в MySQL: INTO OUTFILE и INTO DUMPFILE. Давайте используем образец базы данных Sakila в MySQL и проделаем несколько примеров, чтобы сравнить эти два варианта.
Continue reading "MySQL INTO OUTFILE против INTO DUMPFILE"

Миграция базы данных MySQL на PostgreSQL с помощью pgLoader

Пересказ статьи Alexei. Migrate a MySQL database to PostgreSQL using pgLoader


У меня возникла интересная задача, и я думаю, что будет полезно поделиться ей. Возможно, это кому-то поможет.

Описание задачи


Я получил дамп базы данных MySQL, но сейчас я работаю с PostgreSQL. Я начал думать о том, как перенести данные из MySQL в PostgreSQL и обнаружил инструмент, который называется PgLoader.

Continue reading "Миграция базы данных MySQL на PostgreSQL с помощью pgLoader"

Как меняется порядок выполнения SQL в зависимости от СУБД

Пересказ статьи Tobi Sam. How SQL Execution Orders Varies Across Databases


Почему нельзя использовать GROUP BY <порядковые позиции> в SQL Server, но можно в других.


Continue reading "Как меняется порядок выполнения SQL в зависимости от СУБД"

Генерация тестовых данных с помощью встроенных возможностей базы данных

Пересказ статьи Denis Magda. Sample Data Generation With Built-In Database Capabilities


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

В этой статье вы узнаете, как использовать специальные функции базы данных, иерархические запросы и рекурсивные общие табличные выражения (CTE) для генерации тестового набора данных в PostgreSQL, MySQL, Oracle и SQL Server.
Continue reading "Генерация тестовых данных с помощью встроенных возможностей базы данных"

REGEX в SQL

Пересказ статьи Sai Krishna. REGEX IN SQL


В своих запросах SQL вы, вероятно, использовали предложение WHERE для фильтрации конкретного текста, выполняя поиск на точное совпадение. Например, вы могли бы использовать запрос типа “SELECT * FROM EMP WHERE name = 'Alex'”. Этот подход возвращает записи, которые точно соответствуют имени Alex в том же регистре. Однако имеется более универсальный способ обработки сложных текстовых шаблонов, использующих регулярные выражения (regex).
Continue reading "REGEX в SQL"

Инструменты и методы для профилирования и отладки медленно выполняющихся SQL-запросов

Пересказ статьи Crafting-Code. Tools and Techniques for Profiling and Debugging Slow-Running SQL Queries


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

Профилирование и отладка медленно выполняющихся запросов SQL являются важными навыками администраторов баз данных, разработчиков и всех тех, кто отвечает за обслуживание приложений на основе базы данных.

В этой статье мы рассмотрим различные инструменты и методы для обнаружения, анализа и оптимизации медленно выполняющихся SQL-запросов, включая практические примеры кода.
Continue reading "Инструменты и методы для профилирования и отладки медленно выполняющихся SQL-запросов"

Использование substring в MySQL на примерах

Пересказ статьи Rahul Mehta. MySQL substring uses with examples


Введение


MySQL, как и любые другие базы данных, может хранить данные различных типов. Одними из наиболее часто используемых типов данных являются строки. Разработчики широко используют эти типы для хранения данных, а также в различных операциях форматирования. Мы будем часто сталкиваться с требованием получения части строки. MySQL предоставляет функцию “SUBSTRING” для извлечения подстроки из строки. Имеются следующие варианты для извлечения строки:

  1. SUBSTRING

  2. SUBSTR (синоним для SUBSTRING)

  3. SUBSTRING_INDEX

Давайте начнем с понимания того, как работает substring.
Continue reading "Использование substring в MySQL на примерах"

Понимание языка управления данными SQL: GRANT и REVOKE

Пересказ статьи DataScience Nexus. Understanding SQL Data Control Language: GRANT and REVOKE


Структурированный язык запросов (SQL) является мощным языком управления и манипуляции данными в реляционных базах данных. В то время как язык определения данных (DDL) и язык манипуляции данными (DML) являются наиболее используемыми составляющими SQL, язык управления данными (DCL) играет решающую роль в управлении доступом пользователей и разрешениях в пределах базы данных. Здесь мы будем разбираться в DCL и сфокусируемся на двух ключевых операторах - GRANT и REVOKE. Эти операторы исключительно важны для управления и обслуживания прав пользователя в пределах базы данных. Давайте вникать в область разрешений и привилегий SQL. Continue reading "Понимание языка управления данными SQL: GRANT и REVOKE"

Понимание предложения ROWS BETWEEN в SQL

Пересказ статьи Rahma Hassan. Understanding the “ROWS BETWEEN” Clause in SQL


В SQL предложение “ROWS BETWEEN” является мощным средством, которое позволяет вам определить окно строк для анализа или вычислений непосредственно в запросе. Указывая диапазон строк, вы можете выполнять вычисления или применять агрегатные функции к подмножеству данных, а не ко всему результирующему набору. Цель данной статьи - сделать понятным предложение “ROWS BETWEEN” и его использование на примерах.
Continue reading "Понимание предложения ROWS BETWEEN в SQL"