Изучаем SQL с нуля По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning № 4974313625
В чем разница между функциями 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}.
#Вопросы_с_собеседования
❓Выберите из таблицы workers все записи за следующие дни любого месяца: 1, 7, 11, 12, 15, 19, 21, 29
Ответ на картинке.
#Вопросы_с_собеседования
❓В чем разница между командами Delete, Truncate и Drop?
• Команда Delete — это команда DML , он используется для удаления строк из таблицы. Его можно откатить.
• Truncate — это команда DDL, она используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Ее нельзя откатить.
• Drop — это команда DDL, она удаляет все данные вместе со структурой таблицы (в отличие от команды truncate, которая удаляет только строки). Все строки, индексы и привилегии таблиц также будут удалены.
#Вопросы_с_собеседования
❓Для каких числовых типов недопустимо использовать операции сложения/вычитания?
Ответ:
В качестве операндов операций сложения и вычитания нельзя использовать числовой тип BIT. BIT - целочисленный тип данных, который может принимать значения 1, 0 или NULL.
Полезные TreeMap визуализации для MSSQL, Postgres и MySQL
Смотреть статью
SQL-инъекции для самых маленьких. Часть 3
В статье вы узнаете, как можно собирать информацию о БД путем применения инъекций и затронем тему слепых SQL-инъекций.
Смотреть статью
Как оператор 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
Что вы знаете о функции 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);
Функция COALESCE
Возвращает первое ненулевое выражение в списке.
#Вопросы_с_собеседования
❓При выборке из таблицы workers запишите год, месяц и день в отдельные поля с помощью EXTRACT
Ответ на картинке.
Функция SUBSTRING_INDEX()
Функция SUBSTRING_INDEX() возвращает подстроку строки до того, как появится указанное число разделителей.
Синтаксис:
SUBSTRING_INDEX(string, delimiter, number).
Протестировать функцию можно здесь.
NOT NULL в CREATE TABLE
Следующий SQL гарантирует, что столбцы "ID", "LastName", и "FirstName" не будут принимать нулевые значения при создании таблицы "Persons".
SHOW DATABASES
Данная SQL-команда отвечает за просмотр доступных баз данных.
SQL стал международным языком. Теперь все переговоры касательно IT тематик ведутся именно на этом языке. Поздравим нашего любимца в комментариях!
Читать полностью…SQL Server 2022: измерение влияния Extended Events на производительность
Смотреть статью
LIMIT
При помощи LIMIT можно указать максимальное число строк, которые должны попасть в результат.
Это бывает полезно при работе с большими наборами данных. Если данных много, запрос может обрабатываться слишком долго. Но когда будет достигнут лимит результатов, обработка прекратится.
Какая ошибка в этом запросе?
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))
Ответ
Следует использовать знак (=) для подзапроса
#Вопросы_с_собеседования
❓Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300
Ответ на картинке.
Какая разница между TRUNCATE TABLE table_name и DELETE FROM table_name?
Фактически обе эти команды вызовут удаление всех строк из таблицы под названием table_name, но вот произойдет это совсем по-разному:
1. При вызове команды TRUNCATE таблица полностью сбрасывается и создается снова, в то время как команда DELETE удаляет каждую строку таблицы по отдельности. Из-за этого TRUNCATE отрабатывает значительно быстрее.
2. Как следствие первого пункта, команда TRUNCATE не вызывает срабатывание триггеров и правил внешних ключей, то есть, очищая таблицу таким способом, можно не бояться каскадного удаления или изменения данных в других таблицах.
3. В отличие от DELETE команда TRUNCATE не транзакционная. То есть, если в момент ее вызова, таблица table_name будет заблокирована какой-либо транзакцией — может возникнуть ошибка.
#Вопросы_с_собеседования
❓При выборке из таблицы workers получите первые 5 символов поля description
Ответ на картинке.
#Вопросы_с_собеседования
❓При выборке из таблицы workers прибавьте к дате 3 дня и отнимите 2 часа
Ответ на картинке.
История учебы Васи и конечный автомат на SQL
Смотреть статью
Создание отношений (связей) между таблицами
Смотреть видео
Дублирование данных для создания ограничений (контролей) на уровне БД
Смотреть статью
Как избежать распространенных ошибок при работе с СУБД
Смотреть статью
Функция MOD
Функция MOD() возвращает остаток от деления одного числа на другое.
Синтаксис:MOD(x, y)
Наш обучающий канал по JavaScript
@JS_per_month
#Вопросы_с_собеседования
❓Вывести 30 комментариев начиная с 5 комментария из таблицы replies, кроме комментариев автора 'Вася'. Данные сортируются по дате добавления комментария в убывающем порядке
Ответ на картинке.
#Вопросы_с_собеседования
❓Что делает оператор MERGE?
Ответ:
MERGE позволяет осуществить слияние данных одной таблицы с данными другой таблицы. При слиянии таблиц проверяется условие, и если оно истинно, то выполняется UPDATE, а если нет - INSERT. При этом изменять поля таблицы в секции UPDATE, по которым идет связывание двух таблиц, нельзя.
#Вопросы_с_собеседования
❓Напишите SQL запрос, чтобы напечатать имя отдельного работника у которого поле DOB составляет от 01/02/1965 до 31/11/1970
Ответ на картинке.