10287
№ 5060218708 Изучаем SQL с нуля По всем вопросам @mascarov_valentin Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Ошибки выбора MongoDB в качестве основной БД в стартапе
Смотреть статью
Как ускорить базу данных при помощи шардирования
Смотреть статью
Преобразование xml-поля в SQL
Для преобразования xml-поля в SQL необходимо выполнить следующие шаги:
1. Создать таблицу в базе данных с полем типа xml.
2. Вставить данные в таблицу.
3. Использовать функции для извлечения данных из xml-поля.
Например, функция value() извлекает значение элемента или атрибута из xml-поля.
4. При необходимости, выполнить другие действия с данными, полученными из xml-поля, с помощью стандартных средств SQL.
Индекс GIN
Индекс GIN - это тип индекса в PostgreSQL, который позволяет эффективно искать данные в полнотекстовых полях, массивах, JSON и других типах данных. Он создается на столбцах с комплексными или составными типами данных, такими как полнотекстовые данные или JSON. Индекс разбивает значения в столбце на отдельные элементы и создает отображение между этими элементами и строками в таблице, что позволяет быстро искать значения в этих типах данных.
Преимущества использования индекса GIN:
- Быстрый поиск по полнотекстовым данным и другим составным типам данных
- Поддержка операций поиска, включая поиск по подстроке и полнотекстовый поиск
- Поддержка операций над массивами, такие как поиск элементов массива и проверка наличия значения в массиве
- Возможность использования в комбинации с другими индексами для дополнительной оптимизации запросов
Создание индекса осуществляется с указанием типа индекса как GIN и имени столбца, на котором создается индекс.
Пример: CREATE INDEX idx_gin ON mytable USING GIN (mycolumn);
Использование индекса GIN в запросах выполняется с помощью оператора @@ или функции tsquery.
Аналитика небольших данных: как совместить Excel, Python и SQL с помощью инструментов с открытым исходным кодом
Смотреть статью
#Вопросы_с_собеседования
Объясните разницу между INNER JOIN и LEFT JOIN в SQL и приведите пример ситуации, в которой каждый из них наиболее подходит
INNER JOIN в SQL возвращает строки, когда есть совпадение в обеих таблицах, в то время как LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой таблицы; строки, для которых нет совпадений в правой таблице, будут иметь NULL в этих столбцах. INNER JOIN подходит, когда необходимо найти точные совпадения между таблицами, тогда как LEFT JOIN используется, когда нужно включить все записи из одной таблицы, даже если соответствующих совпадений в другой таблице нет.
Рассмотрение CASE WHEN THEN как оператор if
Одним из применений CASE WHEN THEN является использование ее в качестве замены оператора if в программировании.
Использование конструкции CASE WHEN THEN может значительно упростить код и улучшить читаемость запросов в базе данных.
Дублирование данных для создания ограничений (контролей) на уровне БД
Смотреть статью
7 распространенных ошибок в SQL-запросах, которые делал каждый (почти)
Источник
#Вопросы_с_собеседования
❓Выберите из таблицы workers все записи, в которых сумма дня и месяца меньше 10-ти
Ответ на картинке.
#Вопросы_с_собеседования
❓Что такое строковые функции в SQL?
Строковые функции SQL используются в основном для обработки строк. Некоторые из широко используемых строковых функций SQL представлены ниже:
• LEN () — возвращает длину значения в текстовом поле.
• LOWER () — преобразует символьные данные в нижний регистр
• UPPER () — преобразует символьные данные в верхний регистр
• SUBSTRING () — извлекает символы из текстового поля.
• LTRIM () — Это удалить все пробелы в начале строки.
• RTRIM () — удалить все пробелы в конце строки.
• CONCAT () — функция Concatenate объединяет несколько символьных строк вместе.
• REPLACE () — для обновления содержимого строки.
#Вопросы_с_собеседования
❓Опишите различные типы индексов
Есть три типа индексов, а именно:
1. Уникальный индекс (Unique Index): этот индекс не позволяет полю иметь повторяющиеся значения, если столбец индексируется уникально. Если первичный ключ определен, уникальный индекс может быть применен автоматически.
2. Кластеризованный индекс (Clustered Index): этот индекс меняет физический порядок таблицы и выполняет поиск на основе значений ключа. Каждая таблица может иметь только один кластеризованный индекс.
3. Некластеризованный индекс (Non-Clustered Index): не изменяет физический порядок таблицы и поддерживает логический порядок данных. Каждая таблица может иметь много некластеризованных индексов.
#вопросы_с_собеседований
Имеет ли значение порядок колонок в составном индексе?
Да, порядок колонок в составном индексе имеет значение.
Рассмотрим пример:
У нас есть таблица orders с колонками order_id, customer_id, order_date, product_id и quantity. Нам необходимо создать составной индекс для ускорения поиска заказов по customer_id и order_date.
Мы можем создать два индекса:
1. Индекс по (customer_id, order_date)
2. Индекс по (order_date, customer_id)
В первом случае, запросы с условием WHERE customer_id = ? AND order_date = ? будут выполняться быстрее, так как эти колонки находятся в порядке, указанном в индексе.
Во втором случае, запросы с условием WHERE order_date = ? AND customer_id = ? будут выполняться медленнее, так как порядок колонок не соответствует порядку в индексе.
Таким образом, порядок колонок в составном индексе имеет значение и должен соответствовать порядку, в котором используются колонки в запросах.
#Вопросы_с_собеседования
Объясните разницу между INNER JOIN и LEFT JOIN в SQL и приведите пример ситуации, в которой каждый из них наиболее подходит
INNER JOIN в SQL возвращает строки, когда есть совпадение в обеих таблицах, в то время как LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой таблицы; строки, для которых нет совпадений в правой таблице, будут иметь NULL в этих столбцах. INNER JOIN подходит, когда необходимо найти точные совпадения между таблицами, тогда как LEFT JOIN используется, когда нужно включить все записи из одной таблицы, даже если соответствующих совпадений в другой таблице нет.
DB Fiddle — онлайн-площадка для работы с базами данных SQL
Её можно использовать как своеобразную песочницу для тестирования, отладки и обмена фрагментами SQL. Есть поддержка разных версий MySQL, PostgreSQL и SQLite
Из интересного: к работе над базой можно подключить приятеля — делается это буквально в пару кликов
SQL Server: DATEFROMPARTS
Функция DATEFROMPARTS принимает в качестве параметров год, месяц и день и возвращает значение даты.
Синтаксис функции следующий:
DATEFROMPARTS ( year, month, day )
Функция принимает следующие параметры:
- year - (целое число);
- month - (целое число от 1 до 12);
- day - (целое число от 1 до 31).
Все о jsonb_to_recordset в SQL
Функция jsonb_to_recordset в SQL используется для преобразования данных, хранящихся в формате JSON, в таблицы. Она позволяет распаковывать массивы и объекты JSON и превращать их в строки и столбцы в таблице.
Кроме того, jsonb_to_recordset позволяет работать с вложенными объектами и массивами. Для этого нужно использовать функцию jsonb_each, которая распаковывает объекты и массивы JSON в отдельные строки.
REPLICATE в SQL Server
REPLICATE - это функция в SQL Server, которая повторяет входную строку указанное количество раз. Эта функция может быть полезна во многих сценариях, например, при создании тестовых данных или при форматировании вывода.
Синтаксис функции REPLICATE выглядит следующим образом:
REPLICATE ( string_expression , integer_expression )
- string_expression - это строковое выражение, которое нужно повторить.
- integer_expression - это выражение целого типа, определяющее количество раз, которое нужно повторить строку.
Различия между операторами IN и EXISTS
Операторы IN и EXISTS - операторы, которые используются для фильтрации данных в запросах. Они имеют различия в своем использовании и функционале.
1. Оператор IN используется для сравнения значения столбца с набором значений, указанных в запросе. Он возвращает значение true, если значение столбца соответствует хотя бы одному из значений в списке. См. Пример 1.
2. Оператор EXISTS используется для проверки наличия записей в подзапросе. Если подзапрос возвращает хотя бы одну запись, то оператор EXISTS возвращает значение true. См. Пример 2.
Различия между операторами IN и EXISTS:
- Оператор IN используется для сравнения значения столбца с набором значений, а оператор EXISTS для проверки наличия записей в подзапросе.
- Оператор IN не требует наличия связи между таблицами, а оператор EXISTS требует наличия связи между основной таблицей и подзапросом.
- Оператор IN может использовать список значений или подзапрос, а оператор EXISTS может использовать только подзапрос.
#Вопросы_с_собеседования
Как SQL-запрос с использованием операторов JOIN может быть оптимизирован для ускорения выполнения, если одна из таблиц содержит миллионы записей, а другая – только несколько сотен? Опишите три различных подхода к оптимизации
Использование Индексов: Создание индексов на столбцах, участвующих в JOIN, может значительно ускорить процесс, особенно на столбцах большой таблицы. Если JOIN выполняется по столбцу, который является первичным ключом или имеет уникальный индекс, это обычно обеспечивает наилучшую производительность.
Оптимизация Порядка JOIN: Порядок, в котором таблицы соединяются в запросе, может влиять на производительность. Лучше начинать с таблицы с наименьшим количеством строк (в данном случае, таблицы с несколькими сотнями записей), что может уменьшить количество обрабатываемых данных на более ранней стадии выполнения запроса.
Использование Подзапросов или CTE (Common Table Expressions): В некоторых случаях, использование подзапросов или CTE для предварительной фильтрации данных перед выполнением JOIN может быть эффективным. Например, можно сначала выделить необходимые данные из меньшей таблицы с помощью подзапроса или CTE, а затем выполнить JOIN с большей таблицей. Это может сократить количество обрабатываемых данных и ускорить выполнение запроса.
Каждый из этих подходов может помочь в оптимизации запросов SQL, особенно когда речь идет о соединении таблиц с большим различием в размерах.
#вопросы_с_собеседований
Достаньте одним запросом все страницы вместе с их подкатегориями и категориями.
Даны 3 таблицы: таблица category с полями id и name, таблица sub_category с полями id и name и таблица page с полями id, name и sub_category_id.
Для получения всех страниц вместе с их подкатегориями и категориями, нужно использовать оператор JOIN для объединения всех трех таблиц в один запрос.
- Объяснение:
- SELECT: выбираем необходимые столбцы из таблицы page.
- FROM: указываем таблицу page, которая будет являться нашей основной таблицей.
- JOIN: объединяем таблицу sub_category по id подкатегории из таблицы page.
- ON: указываем, что id подкатегории в таблице page должен быть равен id подкатегории в таблице sub_category.
- JOIN: объединяем таблицу category по id категории из таблицы sub_category.
- ON: указываем, что id категории в таблице sub_category должен быть равен id категории в таблице category.
- SELECT: выбираем название подкатегории из таблицы sub_category и название категории из таблицы category.
- AS: переименовываем названия столбцов для удобства чтения.
Задача
Выбрать все записи из таблицы tbl_name и отсортировать их по полю id в обратном порядке.
#Вопросы_с_собеседования
❓При выборке из таблицы workers прибавьте к дате 1 день и отнимите 2 часа, 3 минуты
Ответ на картинке.
#Вопросы_с_собеседования
❓Выберите из таблицы workers все записи, в которых сумма дня и месяца меньше 10-ти
Ответ на картинке.
#Вопросы_с_собеседования
❓Что такое Self JOIN?
Self JOIN - это выражение используется для того, чтобы таблица объединилась сама с собой, словно это две разные таблицы. Чтобы такое реализовать, одна из таких «таблиц» временно переименовывается.
Например, следующий SQL-запрос объединяет клиентов из одного города:
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;
Она снова не ответила? Вот почему твои переписки умирают
— «Привет», «Как дела?», «Что делаешь?», «Почему молчишь?», «Сколько лет?» «Откуда ты?», «Где работаешь?» – серьёзно? 🤦
Добавь сюда кринжовые попытки рассмешить — и вместо свидания ты получишь очередную мертвую переписку или отмазки в духе «устала/заболела/извини, не могу — кошка наблевала».
Проблема в том, что такие фразы не вызывают интереса. Девушка просто не видит в тебе мужчину, с которым стоит продолжать.
Что делать? Использовать проверенную стратегию переписки.
Например: вместо банального «спокойной ночи» — отправь любое сообщение из шаблонов в канале, и ты офигеешь от реакции. Она сама захочет писать первой.
Шаблоны и стратегию ты найдешь в канале Вани Абсента. Он помогает стать магнитом для женщин и построить яркие отношения, которые наполняют и зажигают: @absent
В канале ты найдёшь:
— пошаговый алгоритм, как влюбить девушку мечты – от первой переписки до секса;
— что делать на первом свидании, чтобы домой уехать с ней;
— как стать сильным уверенным мужчиной со счастливыми отношениями, сильным окружением и высоким доходом.
👉 Подписывайся — /channel/+Ucw58U414pxjMTRi
И действуй, а не смотри, как девушки мечты проходят мимо.
Индексирование баз данных в PostgreSQL: погружение в тему
Смотреть статью
Объяснение Запроса
Подзапрос: Здесь используется подзапрос для выбора CustomerID из таблицы Orders, группируя по CustomerID и применяя условие HAVING COUNT(OrderID) > 2. Это выбирает клиентов, сделавших более двух заказов.
Объединение (JOIN): Основной запрос использует JOIN для соединения таблиц Customers и результата подзапроса по CustomerID.
Условие WHERE: Фильтрация происходит по полю City в таблице Customers, чтобы выбрать только тех клиентов, которые находятся в "New York".
Этот запрос тестирует понимание кандидата в области объединения таблиц, работы с агрегатными функциями и подзапросами, а также фильтрации данных в SQL.
SQLGlot - это универсальный инструмент для работы с SQL.
Он может использоваться для форматирования SQL-запросов, а также для трансляции между 20 различными диалектами, включая DuckDB, Presto, Spark, Snowflake и BigQuery.
Более того, при помощи SQLGlot можно проводить оптимизацию SQL-запросов, что повышает их эффективность и быстродействие.
Как получить информацию о структуре БД для документации
Создаём документацию БД и словарь данных информационной системы своими руками. Полезные SQL-скрипты и приемы документирования базы данных
Смотреть статью