SQL и БД Learning
10.7K subscribers
747 photos
9 videos
22 files
416 links
№ 5060218708

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

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

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
Какой результат вернет следующий PostgreSQL/MySQL запрос:
SELECT GREATEST (6.62, - 8, '82') ;
Anonymous Quiz
25%
6.62
6%
- 8
28%
82
23%
Ошибка
19%
Посмотреть ответы
👍6
Функция COALESCE

Возвращает первое ненулевое выражение в списке.
👍10
#Вопросы_с_собеседования

Что не так с этим запросом?

Неверное выражение BillingYear в условии WHERE. Несмотря на то, что он определен как алиас в выборке SELECT перед WHERE, логический порядок обработки условий отличается. Программисты привыкли к тому, что операторы выполняются сверху вниз или слева направо, но в T-SQL это происходит в другом порядке.
👍9
#Вопросы_с_собеседования

Как найти дубли в поле email?

Функция COUNT() возвращает количество строк из поля email. Оператор HAVING работает почти так же, как и WHERE, вот только применяется не для всех столбцов, а для набора, созданного оператором GROUP BY.
👍8😁1
#Вопросы_с_собеседования

Что такое внешний ключ?

Внешний ключ или FOREIGN KEY также является атрибутом ограничения и обеспечивает связь двух таблиц. По сути, это поле или несколько полей, которые ссылаются на PRIMARY KEY в родительской таблице.

В нашем случае внешний ключ, привязанный к полю user_id в таблице order, ссылается на первичный ключ id в таблице users, и именно по этим полям происходит связывание двух таблиц.
👍7😁1
Как настроить реакцию на изменения в таблицах Postgres?

Как передать эти изменения в микросервисы, в Kafka и в другие СУБД, например в Clickhouse?

Расскажем на открытом уроке «Событийная интеграция Postgres» посвященный курсу «PostgreSQL для администраторов баз данных и разработчиков»

Научитесь выбирать правильный способ событийной интеграции

Посмотрите, как и что можно реализовать для надежной передачи данных из Postgres во внешние системы

👉Узнаете про опыт других предприятий и протестируйте обучение на открытом уроке

https://tglink.io/1aeaa13b7a55?erid=2W5zFJmzZdJ

#реклама
О рекламодателе
Разворачиваем MySQL: установка и настройка

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

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

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

В нашем примере мы прибавляем к нашей дате 3 часа.
👍5
Какой результат вернёт данный запрос(PostgreSQL)?
SELECT (20/25)*25.0;
Anonymous Quiz
15%
25.0
3%
25
6%
125
19%
0
33%
Запрос не выполнится
24%
Узнать ответ
😁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) движок базы данных задействует меньше ресурсов и работает быстрее. В случае небольших таблиц эта разница будет незаметна, но если дело касается больших из них, то данный фактор существенно отразится на производительности запросов.
👍17
#Вопросы_с_собеседования

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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