SQL и БД Learning
10.6K subscribers
761 photos
9 videos
22 files
424 links
№ 5060218708

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

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

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
Разворачиваем MySQL: установка и настройка

MySQL на сегодняшний день является одной из наиболее распространенных в мире. Достаточно сказать, что по рейтингам 2021 года данная СУБД лишь немного уступала Oracle.

Смотреть статью
👍5
Прибавляем время

Функция TIMESTAMPADD(unit, value, datetime) прибавляет к дате и времени суток datetime временной интервал value.

В нашем примере мы прибавляем к нашей дате 3 часа.
👍5
Какой результат вернёт данный запрос(PostgreSQL)?
SELECT (20/25)*25.0;
Anonymous Quiz
14%
25.0
3%
25
7%
125
18%
0
34%
Запрос не выполнится
25%
Узнать ответ
😁7👍6
Векторный поиск в YDB

Новая возможность в СУБД от Яндекса: поиск по семантическому сходству. Данные (текст, изображения, аудио, видео) преобразуются в эмбеддинги и индексируются.

Поддерживаются два режима — точный и приближенный. Второй рассчитан на большие объёмы и работает быстрее за счёт снижения точности. Векторный поиск доступен для использования в облаке и on-premises.

Читать статью
Разница между using и on в join-запросах

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

1 - Конструкция using используется, когда объединение происходит по столбцу, имеющему одинаковое имя в обеих таблицах.

2 - Конструкция on используется, когда объединение происходит по каким-то другим условиям.

Конструкция using удобна в случаях, когда объединение происходит по столбцам с одинаковыми именами, а on - в случаях, когда объединение происходит по другим условиям.
👍6
Все о команде COLLATE в SQL

Команда COLLATE в SQL используется для указания правил сортировки и сравнения символов при выполнении операций сравнения в запросах.

Существует несколько вариантов значений, которые можно использовать в команде COLLATE, включая:

- _CS - с учетом регистра
- _CI - без учета регистра
- _AS - с учетом локали (language sensitive)
- _AI - без учета локали (language insensitive)

Примеры:

- Cyrillic_General_CS_AS - с учетом регистра и локали для кириллицы
- Latin1_General_CI_AI - без учета регистра и локали для латиницы
👍5
Count (1) вместо count (*)

При любой возможности выбирайте count(1) вместо count(*). Оператор count(*) принимает в расчет все столбцы таблицы для выполнения вычислений, тогда как count(1) учитывает только первый столбец.

Обратите внимание, что результат остается неизменным, будь то count (*) или count (1).

При использовании count(1) движок базы данных задействует меньше ресурсов и работает быстрее. В случае небольших таблиц эта разница будет незаметна, но если дело касается больших из них, то данный фактор существенно отразится на производительности запросов.
👍19
#Вопросы_с_собеседования

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

В SQL, сущности (или таблицы)
- это коллекции данных, которые содержат информацию о конкретных объектах или событиях. Каждая сущность представляет собой набор атрибутов, которые описывают свойства объекта или события.

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

Например, предположим, что у нас есть две таблицы:

"Клиенты" и "Заказы". Каждый клиент может иметь множество заказов, но каждый заказ может принадлежать только одному клиенту. Это описывает отношение "один ко многим" между таблицами "Клиенты" и "Заказы".
👍6
Важные моменты при сравнении record и NULL:

При использовании ROW expression в SQL и сравнении с IS NULL результат будет TRUE только в том случае, если каждый столбец содержит значение NULL. Это важно знать, чтобы избежать ошибок в своем коде.

Таким образом, при сравнении ROW expression с NULL необходимо учитывать, что результат будет зависеть от того, есть ли в каждом столбце значение NULL или нет.
👍4
#вопросы_с_собеседований

В базе данных есть две таблицы: TABLE1 и TABLE2. Отработает ли данный запрос или упадет с ошибкой? И объяснить, почему.

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

Поля id, value, i, y должны быть в таблице table1 и соответствовать нужному типу данных.

Группировка выполняется по столбцу i, указанному в PARTITION BY. Сортировка выполняется по столбцу y, указанному в ORDER BY.

Функция SUM с оконной функцией OVER выполняет суммирование значения столбца value сгруппированного по столбцу i и упорядоченного по столбцу y. Также выбираются все поля.
👍6😁1
Экранирование двоичных данных в SQL

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

Экранирование двоичных данных

Для экранирования двоичных данных в SQL мы можем использовать функцию mysqli_real_escape_string(). Эта функция автоматически экранирует специальные символы, такие как одинарные кавычки, двойные кавычки и обратные слеши. Чтобы использовать эту функцию, мы должны сначала установить соединение с базой данных, а затем вызвать функцию, передав ей двоичные данные в качестве аргумента.

Пример экранирования двоичных данных в PDO

«PDO – PHP Data Objects – это прослойка, которая предлагает универсальный способ работы с несколькими базами данных.»

В PDO можно экранировать двоичные данные с помощью метода quote(). Этот метод автоматически экранирует специальные символы и возвращает заключенную в кавычки строку. Для использования этого метода мы должны сначала установить соединение с базой данных, а затем вызвать метод quote(), передав ему двоичные данные в качестве аргумента.
👍2
Как узнать размер файла с помощью SQL?

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

Замените [имя_столбца_с_файлом] на имя столбца, содержащего файл, [имя_таблицы] на имя таблицы, содержащей файл, а [условие] на условие выборки файлов.

Например, если у вас есть таблица Файлы с столбцом Содержимое_файла, и вы хотите узнать размер файла с id 1, обращаемся ко второй части фото.
👍3
Table Hints в T-SQL

Табличные хинты относятся только к таблицам и представлениям, для которых они указаны. Такие хинты предназначены для определения способа блокировки, указания конкретного индекса, способа обработки данных в таблицах, например, сканирование или поиск.

Некоторые хинты для таблиц:

- INDEX – оптимизатор запросов будет использовать указанный индекс при обработке запроса;
- FORCESEEK – оптимизатор запросов будет использовать только операцию поиска в индексе в качестве пути доступа к данным;
- FORCESCAN – оптимизатор запросов будет использовать только операцию сканирования в индексе в качестве пути доступа к данным;
- ROWLOCK – блокировки строк применяются вместо блокировки страниц или таблиц;
- HOLDLOCK – накладывает дополнительные ограничения на совмещаемую блокировку, удерживая ее до завершения транзакции. Хинт HOLDLOCK равнозначен хинту SERIALIZABLE;
- NOLOCK – разрешает «грязное чтение». Хинт NOLOCK равнозначен хинту READUNCOMMITTED;
- NOEXPAND – указывает, что индексированное представление не расширяется для доступа к базовым таблицам. Такое представление обрабатывается так же, как и таблица с кластеризованным индексом.

Хинты для таблиц указываются в предложении FROM с помощью ключевого слова WITH после названия таблицы или представления.
👍4
SQL SELECT TOP

Выражение SELECT TOP используется для определения количества записей при выборке.

SQL SELECT TOP полезен для больших таблиц с тысячами записей. Возврат большого количества записей может повлиять на производительность.

Не все системы баз данных поддерживают предложение SELECT TOP. MySQL поддерживает предложение LIMIT для выбора ограниченного количества записей, тогда как Oracle использует FETCH FIRST n ROWS ONLY и ROWNUM.

Все виды синтаксисов - здесь

В таблице приведена выборка из таблицы "Customers" базы данных Northwind

В фото разбираем такие примеры, как:
1 фото
- SQL TOP, LIMIT и FETCH FIRST
2 фото - SQL TOP PERCENT
3 фото - Использование выражения WHERE
👍5