Использование рекурсивных запросов для управления иерархиями данных
Некоторые таблицы в SQL могут иметь неявный вид иерархии данных. Например, в нашей таблице сотрудников для каждого сотрудника имеется идентификатор
При такой организации мы можем иметь иерархию различных уровней. В каждой строке столбец
В этом запросе мы создали рекурсивный CTE под названием
Есть два подзапроса, соединенных между собой
Некоторые таблицы в SQL могут иметь неявный вид иерархии данных. Например, в нашей таблице сотрудников для каждого сотрудника имеется идентификатор
manager_id. У нас есть менеджер, который отвечает за других менеджеров, которые, в свою очередь, отвечают за других сотрудников, и так далее.При такой организации мы можем иметь иерархию различных уровней. В каждой строке столбец
manager_id относится к строке, находящейся на непосредственном верхнем уровне иерархии. В таких случаях хорошим запросом является получение списка всех сотрудников, подчиняющихся генеральному директору компании (который в данном случае имеет идентификатор employee_id, равный 110). Для этого используем следующий запросWITH RECURSIVE subordinate AS (
SELECT
employee_id,
first_name,
last_name,
manager_id
FROM employee
WHERE employee_id = 110 -- id of the top hierarchy employee (CEO)
UNION ALL
SELECT
e.employee_id,
e.first_name,
e.last_name,
e.manager_id
FROM employee e
JOIN subordinate s
ON e.manager_id = s.employee_id
)
SELECT
employee_id,
first_name,
last_name,
manager_id
FROM subordinate ;В этом запросе мы создали рекурсивный CTE под названием
subordinate. Он является ключевой частью запроса, поскольку проходит по иерархии данных, переходя от одной строки к строкам иерархии, расположенным непосредственно под ней.Есть два подзапроса, соединенных между собой
UNION ALL; первый подзапрос возвращает верхнюю строку иерархии, а второй запрос возвращает следующий уровень, добавляя эти строки к промежуточному результату запроса. Затем снова выполняется второй подзапрос, возвращающий следующий уровень, который снова добавляется к промежуточному результату. Этот процесс повторяется до тех пор, пока в промежуточный результат не будет добавлено ни одной новой строки. Наконец, главный запрос возвращает данные в том виде, в котором мы ожидаем.👍5🔥1
Что такое горячая миграция?
Горячая миграция - это процесс обновления базы данных без остановки работы системы. В SQL, это означает, что мы можем вносить изменения в схему базы данных или данные, пока приложение продолжает работать.
Преимущества горячей миграции
Основным преимуществом горячей миграции в SQL является минимальное воздействие на работу системы. В отличие от традиционной миграции, которая требует остановки приложения или базы данных, горячая миграция позволяет вносить изменения без прерывания работы системы. Это особенно полезно для онлайн-сервисов, которые не могут себе позволить просто остановить свою работу, чтобы обновить базу данных.
Пример горячей миграции в SQL
Допустим, у нас есть таблица "users" в базе данных, и мы хотим добавить новое поле "phone_number". Вместо того, чтобы остановить приложение или базу данных, мы можем использовать горячую миграцию для добавления этого поля в существующую таблицу. В процессе горячей миграции, новое поле будет добавлено, а существующие данные будут сохранены.
Горячая миграция - это процесс обновления базы данных без остановки работы системы. В SQL, это означает, что мы можем вносить изменения в схему базы данных или данные, пока приложение продолжает работать.
Преимущества горячей миграции
Основным преимуществом горячей миграции в SQL является минимальное воздействие на работу системы. В отличие от традиционной миграции, которая требует остановки приложения или базы данных, горячая миграция позволяет вносить изменения без прерывания работы системы. Это особенно полезно для онлайн-сервисов, которые не могут себе позволить просто остановить свою работу, чтобы обновить базу данных.
Пример горячей миграции в SQL
Допустим, у нас есть таблица "users" в базе данных, и мы хотим добавить новое поле "phone_number". Вместо того, чтобы остановить приложение или базу данных, мы можем использовать горячую миграцию для добавления этого поля в существующую таблицу. В процессе горячей миграции, новое поле будет добавлено, а существующие данные будут сохранены.
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
TRUNCATE мгновенно удаляет все строки в таблице
Одновременно удалите строки из дочерних таблиц с помощью функции
Для этого внешние ключи должны быть
Одновременно удалите строки из дочерних таблиц с помощью функции
TRUNCATE TABLE ... CASCADEДля этого внешние ключи должны быть
ON DELETE CASCADE👍6🔥2
SQL Access: Запросы на обновление
Продолжаем делиться циклом видео про SQL Access. В этот раз ты узнаешь, как создать запрос на обновление. Создав такой запрос в Microsoft Access, можно без труда обновить большое количество записей всего за пару кликов.
📘Смотреть видео
Продолжаем делиться циклом видео про SQL Access. В этот раз ты узнаешь, как создать запрос на обновление. Создав такой запрос в Microsoft Access, можно без труда обновить большое количество записей всего за пару кликов.
📘Смотреть видео
👍4
LEFT JOIN
В данном видео уроке вы рассмотрите работу с внешним соединением в SQL - LEFT OUTER JOIN.
LEFT OUTER JOIN позволяет объединить все строки из левой таблицы и соответствующие записи из правой таблицы. Если совпадений нет, то результатом будет NULL с правой стороны.
📖Видео урок
В данном видео уроке вы рассмотрите работу с внешним соединением в SQL - LEFT OUTER JOIN.
LEFT OUTER JOIN позволяет объединить все строки из левой таблицы и соответствующие записи из правой таблицы. Если совпадений нет, то результатом будет NULL с правой стороны.
📖Видео урок
👍8
Подключение базы данных MySQL с помощью JDBC
Для того, чтобы подключить базу данных MySQL, нам потребуется четыре вещи:
— Строка подключения JDBC (например: jdbc:mysql://localhost:3306/test).
— Имя пользователя (root).
— Пароль (root).
— База данных с некоторым количеством таблиц для примера (например, база данных книг).
Строка подключения для MySQL начинается с jdbc:mysql. Это название протокола соединения, за которым следуют хост и порт подключения, на которых запущена база данных. В нашем случае это localhost с портом по умолчанию 3306 (если вы его не поменяли при установке). Следующая часть — test — имя базы данных, которая уже существует в MySQL.
Для того, чтобы подключить базу данных MySQL, нам потребуется четыре вещи:
— Строка подключения JDBC (например: jdbc:mysql://localhost:3306/test).
— Имя пользователя (root).
— Пароль (root).
— База данных с некоторым количеством таблиц для примера (например, база данных книг).
Строка подключения для MySQL начинается с jdbc:mysql. Это название протокола соединения, за которым следуют хост и порт подключения, на которых запущена база данных. В нашем случае это localhost с портом по умолчанию 3306 (если вы его не поменяли при установке). Следующая часть — test — имя базы данных, которая уже существует в MySQL.
👍4🔥1
MySQL функция CONCAT_WS
Функция CONCAT_WS объединяет строки с разделителем.
Синтаксис этой функции следующий:
CONCAT_WS(separator, str1, str2, ...)
где separator - это разделитель, а str1, str2, ... - это строки, которые нужно объединить.
#это_база
Функция CONCAT_WS объединяет строки с разделителем.
Синтаксис этой функции следующий:
CONCAT_WS(separator, str1, str2, ...)
где separator - это разделитель, а str1, str2, ... - это строки, которые нужно объединить.
#это_база
👍9
Математические операции
Благодаря данному видео ты узнаешь о различных математических операторах PostgreSQL. Некоторые из этих операторов являются стандартными и присутствуют в любой СУБД. При этом некоторые операторов может не быть в других СУБД, либо же синтаксис может отличаться.
📘Смотреть видео
Благодаря данному видео ты узнаешь о различных математических операторах PostgreSQL. Некоторые из этих операторов являются стандартными и присутствуют в любой СУБД. При этом некоторые операторов может не быть в других СУБД, либо же синтаксис может отличаться.
📘Смотреть видео
👍3
EXISTS в SQL
Оператор EXISTS используется для проверки наличия записей в подзапросе. Он возвращает значение TRUE, если подзапрос возвращает хотя бы одну строку, и FALSE, если подзапрос не возвращает ни одной строки.
Оператор EXISTS обычно используется в операторе SELECT для фильтрации данных.
Например, мы можем использовать его для проверки, есть ли в базе данных клиенты, совершившие покупку после определенной даты:
SELECT *
FROM Customers
WHERE EXISTS (
SELECT *
FROM Orders
WHERE Orders.CustomerID = Customers.CustomerID
AND Orders.OrderDate > '2021-01-01'
)
Оператор EXISTS используется для проверки наличия записей в подзапросе. Он возвращает значение TRUE, если подзапрос возвращает хотя бы одну строку, и FALSE, если подзапрос не возвращает ни одной строки.
Оператор EXISTS обычно используется в операторе SELECT для фильтрации данных.
Например, мы можем использовать его для проверки, есть ли в базе данных клиенты, совершившие покупку после определенной даты:
SELECT *
FROM Customers
WHERE EXISTS (
SELECT *
FROM Orders
WHERE Orders.CustomerID = Customers.CustomerID
AND Orders.OrderDate > '2021-01-01'
)
👍9
Если вы читаете этот материал, скорее всего, вы рассматриваете перспективы карьерного роста в области системного анализа, и возможно, готовитесь к собеседованию.
Важным аспектом работы системного аналитика является умение эффективно работать с базами данных, и SQL — это ключевой инструмент для этого. Будьте готовы, что на техническом собеседовании вас могут попросить назвать операторы SQL, написать запросы для извлечения, обновления или удаления данных, создания новых таблиц и многого другого. Давайте посмотрим на некоторые примеры таких заданий.
Смотреть статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Pipelined Relational Query Language (PRQL)
PRQL - это современный язык для преобразования данных, который меняет обращение к базе данных на логически выстроенный пайплайн (конвейер).
Подобно SQL, PRQL легко читается, является явным и декларативным языком. Однако, в отличие от SQL, PRQL формирует логический пайплайн преобразований, позволяет использовать переменные и функции для более гибкой обработки данных.
Более того, PRQL может быть использован с любой базой данных, которая использует SQL, что делает его универсальным инструментом для работы с данными.
PRQL - это современный язык для преобразования данных, который меняет обращение к базе данных на логически выстроенный пайплайн (конвейер).
Подобно SQL, PRQL легко читается, является явным и декларативным языком. Однако, в отличие от SQL, PRQL формирует логический пайплайн преобразований, позволяет использовать переменные и функции для более гибкой обработки данных.
Более того, PRQL может быть использован с любой базой данных, которая использует SQL, что делает его универсальным инструментом для работы с данными.
👍3
▪Работает с существующими базами данных SQLite или может использоваться для создания новых баз данных.
▪Экспорт данных в формате JSON или CSV.
▪Импорт файлов JSON или CSV.
$ pip install sqlite-webGithub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Медленное выполнение команды TRUNCATE: анализ проблемы блокировок спинлока в SQL Server
Смотреть статью
Смотреть статью
Хабр
Медленное выполнение команды TRUNCATE: анализ проблемы блокировок спинлока в SQL Server
Приветствую всех читателей Хабра! Меня зовут Михаил, я администратор DBA в компании «Автомакон». На данный момент работаю на проекте для «ВкусВилл». Решил затронуть одну из насущных проблем,...
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Termdbms
Удобный инструмент для просмотра и редактирования файлов базы данных(SQLite, CSV), написанный на Go.
▪Позволяет перемещаться по таблицам с любым количеством столбцов
▪Позволяет перемещаться по таблицам с любым количеством строк
▪Запускает SQL-запросы и отображайте результаты
▪Позволяет сохранять SQL-запросы в буфер обмена
▪Обновление, удаление или вставка с помощью SQL, с поддержкой отмены / повтора для SQLite
▪Работает с клавиатурой и мышью.
▪Автоматическое форматирование JSON в режиме выбора / форматирования
▪Позволяет редактировать многострочный текст с помощью элементов управления, подобных vim
▪Отмена / возврат изменений (только SQLite)
▪Темы (нажмите T в режиме таблицы)
▪Вывод результатов запроса в формате CSV
▪Конвертируйте .csv в базу данных SQLite! Экспортируйте снова как базу данных SQLite или файл .csv!
Github
Удобный инструмент для просмотра и редактирования файлов базы данных(SQLite, CSV), написанный на Go.
▪Позволяет перемещаться по таблицам с любым количеством столбцов
▪Позволяет перемещаться по таблицам с любым количеством строк
▪Запускает SQL-запросы и отображайте результаты
▪Позволяет сохранять SQL-запросы в буфер обмена
▪Обновление, удаление или вставка с помощью SQL, с поддержкой отмены / повтора для SQLite
▪Работает с клавиатурой и мышью.
▪Автоматическое форматирование JSON в режиме выбора / форматирования
▪Позволяет редактировать многострочный текст с помощью элементов управления, подобных vim
▪Отмена / возврат изменений (только SQLite)
▪Темы (нажмите T в режиме таблицы)
▪Вывод результатов запроса в формате CSV
▪Конвертируйте .csv в базу данных SQLite! Экспортируйте снова как базу данных SQLite или файл .csv!
Github
👍2