Вопросы по SQL
1) За что отвечает символ звёздочка (*) в SQL-запросе select?
2) Чем отличается оператор union от оператора join?
3) Чем отличается union от union all?
4) Расставьте в хронологическом порядке операции над БД выполняемые в следующем запросе, написав номер операции над ней в таблице ниже::
select top 10 *
from weather w (nolock) left join holidays h (nolock)
on w.date = h.date and h.event != 'Christmas_holidays'
where h.type = 'Weekend'
group by month(w.date)
having datepart(year, h.date) % 4 = 0
order by h.weekday
6 1 2 3 4 5 7
5) Если имеются две таблицы с совпадающими названиями полей (например таблицы Weather с полем date и таблица Holidays с полем date), объединенный join-ом по некоторому полю != date , а нужно вывести результат только одной таблицы. Каким образом это указывается в запросе?
6) Какая конструкция будет (в среднем) выполняться быстрее:
select
Клиент,
case when Источник_клиента = 'интернет-заявка'
then '1'
when Источник_клиента = 'оффлайн'
then '2'
end "Категория клиента"
from Clients (nolock)
--=======================
select
Клиент,
1 as Категория клиента
from Clients (nolock)
where Источник_клиента = 'интернет-заявка'
union all
select
Клиент,
2 as Категория клиента
from Clients (nolock)
where Источник_клиента = 'оффлайн'
7) Имеются 2 поля в формате datetime, но из-за неудачного проектирования запись идет таким образом, что в одном поле дата, но без времени, а в другом поле – время, но без даты, нужно получить одно поле в котором будет и дата и время:
date (datetime, но время не пишется – оно всегда статично)
2020-01-14 00:00:00:000
2020-01-15 00:00:00:000
2020-01-16 00:00:00:000
2020-01-17 00:00:00:000
Time (пишется время, но день всегда статичен)
1970-01-01 01:38:00:000
1970-01-01 12:56:00:000
1970-01-01 11:58:04:000
1970-01-01 08:38:07:000
Нужное поле – содержит и время, и дату
2020-01-14 01:38:00:0000
2020-01-15 12:56:00:0000
2020-01-16 11:58:04:0000
2020-01-17 08:38:07:0000
8) Что является более быстрым при прочих равных при select-запросе из двух объединенных таблиц – указание условий в блоке join или указание условий в блоке where?
9) Чем отличается raw_number от rank?
10) Какой командой можно вернуть все строки таблице, где поле Comment содержит хотя бы пробел или пустое выражение (но не NULL):
Пример таблицы
Id Comment
1 NULL
2 _
3 Ada___
4 Не известноыыю
5 Кто здесь??
11) Напишите условие, которое вернет все строки, содержащие нижнее подчеркивание в поле Comment
12) Какие существуют функции, позволяющиеся представить запись формата datetime (например, 20181031 00:00:00:012)
- в строку нужного вида (например ’31 октября 2018’)
- в запись того же формата datetime, но в нужном виде (например 31.10.18)
13) За что отвечает команда GO в SQL?
14) С помощью какой команды можно завести переменную?
15) Какие бывают типы данных в SQL?
16) Как сделать так, чтобы команды в SQL-скрипте выполнялись пошагово, а не одновременно? (например при создании таблицы, добавлении полей и изменения их типов)
17) Вернет ли ошибку нижеприведенный запрос или отработает без ошибок:
declare @name varchar = 'Nikolay'
select * from Clients_offline where Name = @name
GO
select * from Clients_online where Name = @name