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
#Вопросы_с_собеседования

Что такое строковые функции в SQL?

Строковые функции SQL используются в основном для обработки строк. Некоторые из широко используемых строковых функций SQL представлены ниже:

• LEN () — возвращает длину значения в текстовом поле.
• LOWER () — преобразует символьные данные в нижний регистр
• UPPER () — преобразует символьные данные в верхний регистр
• SUBSTRING () — извлекает символы из текстового поля.
• LTRIM () — Это удалить все пробелы в начале строки.
• RTRIM () — удалить все пробелы в конце строки.
• CONCAT () — функция Concatenate объединяет несколько символьных строк вместе.
• REPLACE () — для обновления содержимого строки.
👍11
#Вопросы_с_собеседования

Объясните разницу между командами DELETE и TRUNCATE

Команда DELETE — это DML-операция, которая удаляет записи из таблицы, соответствующие заданному условию(1 строка на картинке). При этом создаются логи удаления, то есть операцию можно отменить.

А вот команда TRUNCATE — это DDL-операция, которая полностью пересоздаёт таблицу, и отменить такое удаление невозможно(2 строка на картинке).
👍8❤‍🔥1
SQL_Pandas.pdf
515.4 KB
Шпаргалка SQL → Pandas

— выбрать один столбец или несколько из них;
— фильтрация;
— выбор уникальных значений по столбцу;
— подсчет числа значений;
— перечисление названий столбцов и т.д.
👍9❤‍🔥3
#Вопросы_с_собеседования

Что такое сущности и отношения?

Объект представляет собой абстракцию набора связанных данных и представлен в виде таблиц . Отношения определяют, как объекты связаны друг с другом.
Например, предположим, что у нас есть две таблицы с именами orders и users. Наши orders и users являются нашими сущностями.

Мы можем представить, что у одного пользователя может быть много заказов. Таким образом, пользователи могут иметь отношения «один ко многим» с заказами. Сущности и отношения часто используются в процессе разработки схемы таблицы. Понимая, как определять объекты и отображать их отношения, вы показываете, что можете продуктивно работать в коллективном сеансе проектирования таблиц базы данных.
👍3❤‍🔥2
Стоимостной подход в SQL

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

Для выполнения данного запроса в SQL сервере может быть несколько возможных планов, например:

1.
Сначала выполнить выборку из таблицы customers, затем из orders. Далее объединить результаты с помощью оператора JOIN по customer_id.
2. Сначала выполнить выборку из таблицы orders, затем из customers. Далее объединить результаты с помощью оператора JOIN по customer_id.
3. Использовать индексы на таблицах для выполнения быстрой выборки.

Для выбора наилучшего плана выполнения запроса SQL-сервер оценивает стоимость каждого плана, исходя из статистики таблиц, наличия индексов и других факторов.

Например, если таблица customers содержит много строк и немного соответствующих строк в таблице orders, то выборка из таблицы customers должна быть выполнена первой, чтобы уменьшить количество строк, которые нужно объединять с таблицей orders. Таким образом, стоимостной подход позволяет выбирать наиболее эффективный план выполнения запроса, что ускоряет работу SQL-сервера и сокращает время выполнения запросов.
❤‍🔥6👍2
#Вопросы_с_собеседования

Для чего используются агрегатные функции?

Агрегатные функции используются для выполнения вычислений на одном или нескольких значениях и возвращают одиночное значение с осмысленной информацией.

Несколько примеров агрегатных функций: COUNT(), SUM(), MAX(), MIN(), AVG() и ROUND().
❤‍🔥8👍5
🥽Наглядная шпаргалка: Шардирование базы данных
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6
JupySQL — позволяет выполнять SQL-запросы в Jupyter/IPython с помощью %sql и %%sql

pip install jupysql duckdb-engine

JupySQL — это форк ipython-sql с множеством исправленных ошибок и массой новых возможностей

JupySQL позволяет выполнять SQL-запросы и строить графики для больших наборов данных в Jupyter с помощью команд %sql, %%sql и %sqlplot.
JupySQL совместим со всеми основными БД (PostgreSQL, MySQL, SQL Server и др.), хранилищами данных (типа Snowflake, BigQuery, Redshift) и движками (SQLite и DuckDB).

🖥 GitHub
🟡 Доки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😁2🎄1
🖥 sqlite-vec

Чрезвычайно маленькое и "достаточно быстрое" расширение для векторного поиска SQLite, которое работает в любом месте!

Проект преемник sqlite-vss.

- Храните и запрашивайте float, int8 и двоичные векторы в виртуальных таблицах vec 0.
- Написан на чистом C, без зависимостей, работает везде, где работает SQLite (Linux/ macOS /Windows, в браузере с WASM, Raspberry Pis и т.д.)
- Предварительная фильтрация векторов с rowid В подзапросах (...)

Github
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤‍🔥1
Spice — унифицированный интерфейс запросов SQL и портативная среда выполнения для быстрого извлечения данных из любой БД, хранилища данных или озера данных


curl https://install.spiceai.org | /bin/bash
spice init spice_qs
cd spice_qs
spice run


Spice — open-source портативная среда выполнения, предлагающая унифицированный интерфейс SQL для получения данных из любой базы данных и не только.
Spice написана на Rust для максимальной производительности.

🖥 GitHub
🟡 Доки
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2
🤝SQL vs Polars vs Pandas
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9🔥5👍3
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