SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
EdgeDB — open-source БД с декларативной схемой, встроенной системой миграции и языком запросов нового поколения

curl https://sh.edgedb.com --proto '=https' -sSf1 | sh

EdgeDB — это БД, поддерживающая сложные иерархические запросы; EdgeDB собрала в себе лучшее реляционных БД, графовых БД и ORM.

🖥 GitHub
🟡 Доки
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Вопросы_с_собеседования
Как SQL-запрос с использованием операторов JOIN может быть оптимизирован для ускорения выполнения, если одна из таблиц содержит миллионы записей, а другая – только несколько сотен? Опишите три различных подхода к оптимизации

Использование Индексов: Создание индексов на столбцах, участвующих в JOIN, может значительно ускорить процесс, особенно на столбцах большой таблицы. Если JOIN выполняется по столбцу, который является первичным ключом или имеет уникальный индекс, это обычно обеспечивает наилучшую производительность.

Оптимизация Порядка JOIN: Порядок, в котором таблицы соединяются в запросе, может влиять на производительность. Лучше начинать с таблицы с наименьшим количеством строк (в данном случае, таблицы с несколькими сотнями записей), что может уменьшить количество обрабатываемых данных на более ранней стадии выполнения запроса.

Использование Подзапросов или CTE (Common Table Expressions): В некоторых случаях, использование подзапросов или CTE для предварительной фильтрации данных перед выполнением JOIN может быть эффективным. Например, можно сначала выделить необходимые данные из меньшей таблицы с помощью подзапроса или CTE, а затем выполнить JOIN с большей таблицей. Это может сократить количество обрабатываемых данных и ускорить выполнение запроса.

Каждый из этих подходов может помочь в оптимизации запросов SQL, особенно когда речь идет о соединении таблиц с большим различием в размерах.
👍14🔥2
#Вопросы_с_собеседования

Отработает ли данный запрос?

Ответ:
Нет, не отработает. Опытный data-инженер знает, что row_number() — это часть аналитической функции, которая не может быть применена сама по себе. Аналитические функции используются только в конcтрукциях SELECT или ORDER BY.
👍17
Узнаем вместимость БД

Этот запрос определяет размер базы данных в мегабайтах путем вычисления суммарного количества страниц, выделенных для базы данных и вычисления размера в мегабайтах. Результат будет показан в столбце MB.
👍10
Узнать объем памяти базы данных с помощью SQL

Нужно заменить 'имя_базы_данных' на название вашей базы данных. Результатом будет суммарный размер всех таблиц в базе данных, выраженный в байтах.
❤‍🔥8👍6
Узнаем размер файла с помощью SQL

В SQL нельзя узнать размер файла напрямую. Однако, если файл находится в базе данных, то можно использовать функцию DATALENGTH, которая вернет размер данных в байтах.

Где MyFileColumn - это столбец таблицы, в котором хранится файл, MyTable - это имя таблицы, а ID = 1 - это условие выборки конкретной записи из таблицы.
❤‍🔥5👍5
Сработает ли данный запрос?

Ответ:
Здесь всё очень просто. При вставке строчек в таблицу количество полей при объявлении не соответствует количеству вставляемых значений в конструкции values. Это должен знать даже начинающий SQL-разработчик.
👍23🎄2
Функция EXTRACT()

Функция EXTRACT() извлекает часть из заданной даты.

В нашем примере функция извлекает месяц из даты.

Синтаксис:
EXTRACT(part FROM date).
👍15
#Вопросы_с_собеседования

Как скопировать данные из одной таблицы в другую?

Ответ на картинке.
👍18
Сработает ли данный запрос?

Ответ:
Запрос не отработает. Конструкция HAVING не может использоваться при удалении строк. Она используется только при операции SELECT и чаще всего вместе с группировкой строк (GROUP BY). Эта задачка рассчитана на новичков. Опытный SQLщик сразу ответит на вопрос.
👍23
Сработает ли данный запрос?

Ответ:
Вопрос нацелен на то, чтобы сбить с толку кандидата. На практике при операции join в большинстве случаев выполняется жесткое сопоставление одного поля в одной таблице с другим полем во второй. Например, t.field1 = tt.field1. В данном же случае запрос отработает.

В этом примере выполняется сначала декартово произведение всех строк одной таблице со всем строками другой и затем применяется условие, что tt.field1 = 1. Такое написание допустимо, хотя и редко где применяется. Неопытные data-инженеры часто впадают в ступор на этой задаче.
👍13
#Вопросы_с_собеседования

Добавьте в таблицу table1 поле status

Ответ на картинке.
👍9
Узнаем кол-во всех ячеек в таблице с помощью SQL

Для выполнения этой задачи вам понадобится использовать стандартный SQL запрос COUNT(*).

Замените your_table_name на фактическое имя вашей таблицы. Результатом выполнения этого запроса будет одна строка с одним столбцом cell_count, содержащим общее количество ячеек в таблице.
👍13😁5
#Вопросы_с_собеседования

При выборке из таблицы workers создайте новое поле res, в котором будет строка 'eee'.

Ответ на картинке.
👍10
#Вопросы_с_собеседования

Даны две таблицы: таблица category и таблица sub_category с полями id и name. Достаньте одним запросом названия категорий и подкатегорий.

Ответ на картинке.
👍10😁1
#Вопросы_с_собеседования

Как вставить нескольких строк одним запросом?

В данном примере мы одним SQL-запросом добавим 3 записи.
👍18🎄1
Узнаем дату последнего редактирования БД с поомщью SQL

Здесь мы используем системную таблицу sys.databases, которая содержит информацию о всех базах данных в SQL Server. Колонка modify_date указывает на дату и время последнего изменения базы данных.
👍19