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
Что вы знаете о функции OVERLAY() в PostgreSQL?

Функция OVERLAY() заменяет часть строки на другую подстроку, начиная с заданной позиции:
OVERLAY(main_string PLACING replacing_string FROM int [FOR int]);
main_string -
строка, которую изменяем.
replacing_string - подстрока, которую вставляем в main_string.
FROM int - позиция, с которой начнётся замена.
FOR int - количество заменяемых символов. Необязательно.

Например:

SELECT OVERLAY('who Pro' PLACING 'SQL' FROM 1);
👍5
История учебы Васи и конечный автомат на SQL

Смотреть статью
👍7
Как оператор GROUP BY обрабатывает поля с NULL?

Учитывая, что NULL в SQL — просто отсутствие значения, то все значения NULL при группировке попадают в одну группу. Например, пусть есть таблица:

name score
Alex 5
Sam 1
Sam 11
NULL 4
NULL 3

Тогда запрос
SELECT name, SUM (score) AS sc
FROM table
GROUP BY name;
выдаст:

name sc
Alex 5
Sam 12
NULL 7
👍21
Forwarded from SQL и БД Learning
#Вопросы_с_собеседования

При выборке из таблицы workers прибавьте к дате 3 дня и отнимите 2 часа

Ответ на картинке.
👍7
SQL-инъекции для самых маленьких. Часть 3

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

Смотреть статью
👍4
#Вопросы_с_собеседования

При выборке из таблицы workers получите первые 5 символов поля denoscription

Ответ на картинке.
👍91
Полезные TreeMap визуализации для MSSQL, Postgres и MySQL

Смотреть статью
👍6
Какая разница между TRUNCATE TABLE table_name и DELETE FROM table_name?

Фактически обе эти команды вызовут удаление всех строк из таблицы под названием table_name, но вот произойдет это совсем по-разному:

1. При вызове команды TRUNCATE таблица полностью сбрасывается и создается снова, в то время как команда DELETE удаляет каждую строку таблицы по отдельности. Из-за этого TRUNCATE отрабатывает значительно быстрее.

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

3. В отличие от DELETE команда TRUNCATE не транзакционная. То есть, если в момент ее вызова, таблица table_name будет заблокирована какой-либо транзакцией — может возникнуть ошибка.
👍8
#Вопросы_с_собеседования

Для каких числовых типов недопустимо использовать операции сложения/вычитания?

Ответ:
В качестве операндов операций сложения и вычитания нельзя использовать числовой тип BIT. BIT - целочисленный тип данных, который может принимать значения 1, 0 или NULL.
👍8
#Вопросы_с_собеседования

Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300

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

В чем разница между командами Delete, Truncate и Drop?

• Команда Delete — это команда DML , он используется для удаления строк из таблицы. Его можно откатить.
Truncate — это команда DDL, она используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Ее нельзя откатить.
Drop — это команда DDL, она удаляет все данные вместе со структурой таблицы (в отличие от команды truncate, которая удаляет только строки). Все строки, индексы и привилегии таблиц также будут удалены.
👍14
Какая ошибка в этом запросе?

UPDATE books SET sales_1999 >
(SELECT SUM(qty * price)
FROM sales
WHERE sales.book_id = bооks.id
AND salеs.date BETWEEN '01/01/1999' AND '12/31/1999')
Вы не можете использовать арифметические операторы для функции SUM() (например SUM(qty * price))

Ответ
Следует использовать знак (=) для подзапроса
👍5🔥21
#Вопросы_с_собеседования

Выберите из таблицы workers все записи за следующие дни любого месяца: 1, 7, 11, 12, 15, 19, 21, 29

Ответ на картинке.
👍81
LIMIT

При помощи LIMIT можно указать максимальное число строк, которые должны попасть в результат.

Это бывает полезно при работе с большими наборами данных. Если данных много, запрос может обрабатываться слишком долго. Но когда будет достигнут лимит результатов, обработка прекратится.
👍12
Что по умолчанию имеет более высокий приоритет! или NOT?
Anonymous Quiz
31%
!
30%
NOT
27%
Оба имеют одинаковый приоритет
13%
Узнать ответ
👍8😱41
В чем разница между функциями RANK() и DENSE_RANK()?

Единственная разница между функциями RANK() и DENSE_RANK() заключается в случаях, когда несколько значений в наборе имеют одинаковый ранг.

В таких случаях RANK() будет назначать непоследовательные «ранги» значениям в наборе.

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

Например, рассмотрим набор
{25, 25, 50, 75, 75, 100}.

Для такого набора RANK() вернет
{1, 1, 3, 4, 4, 6} (обратите внимание, что значения 2 и 5 пропущены), тогда как DENSE_RANK() вернет
{1, 1, 2, 3, 3, 4}.
👍8
Количество вхождений строки в поле в MySQL

Есть таблица items со следующими данными:

id desc
1 val test test val
2 val test
3 test test test
4 valvalvalvalval

Напишите MySQL запрос, который подсчитает количество вхождений значения ‘val‘ для каждого desc.

Ожидаемый результат:
2
1
0
5


Решение:


SELECT
ROUND (
(LENGTH (desc) - LENGTH (
REPLACE (desc, ‘val‘,‘‘)
)) / LENGTH(‘val‘)) AS c
FROM items;
👍11
Функция CONCAT_WS()

Функция CONCAT_WS() добавляет два или более выражений вместе с разделителем.

Синтаксис:
CONCAT_WS(separator, expression1, expression2, expression3,...).
👍13