select 'Hello, World!'
The single biggest challenge to learning SQL programming is unlearning procedural programming (Joe Celko)
[SQL Server] Головоломки (Часть 1)
01.07.2015
|
Olaf |
В ходе работы иногда возникают интересные аспекты использования MS SQL Server. В свое время откладывал их в виде запросов, заметок и всего прочего с надеждой, что доберутся руки, чтобы оформить это в виде головоломок (задач) с ответами и пояснениями. И вот первые пять вопросов готовы. Возможно, кому-то покажется это интересным или будут предложены свои головоломки. Вопросы и ответы составлены мной, поэтому ошибки и заблуждения не исключены. Обсуждение приветствуется
1. select *
Дано: Запрос вида
select *
from dbo.Table1
where exists(select *)
Вопрос: Что произойдет при выполнении запроса?
a) Успешно выполнится
б) Не выполнится, т.к. возникнет ошибка
Выберите один вариант ответа
Ответ | |
| |
2. Сортировка по полю с псевдонимом и без
Дано: БД с уровнем совместимости 90+ и два запроса.
/* 1 */ select id, id from dbo.Table1 order by id
/* 2 */ select id, id from dbo.Table1 t order by t.id
Вопрос: Что произойдет при выполнении запросов 1 и 2? Запросы выполняются отдельно друг от друга.
а) Запрос 1 выполнится успешно
б) Запрос 1 не выполнится, т.к. возникнет ошибка
в) Запрос 2 выполнится успешно
г) Запрос 2 не выполнится, т.к. возникнет ошибка
Выберите два варианта ответа
Ответ | |
| |
3. Использование более одной функции getdate()
Дано: SQL Server 2005+. select запрос, который использует больше одной функции getdate()
select *,
(
select t3.Name
from dbo.Table3 t3
where t3.Table3Id = t1.Table3Id and t3.ModifiedDate < getdate()
)
from dbo.Table1 t1
join dbo.Table2 t2 on t1.Table1Id = t1.Table1Id
where t1.ModifiedDate < getdate() and t2.ModifiedDate < getdate()
Вопрос: На ваш взгляд значения, возвращаемые функцией getdate() в данном запросе будут?
а) Одинаковые
б) Разные
Выберите один вариант ответа
Ответ | |
| |
4. getdate() в функции
Дано: Таблица, содержащая 1 000 000 записей. Скалярная и табличная функции возвращающие текущую дату и запрос на обновление данных.
create function dbo.ufn_getdate1()
returns table
as
return (select getdate() as tdt)
go
create function dbo.ufn_getdate2()
returns datetime as
begin
return getdate()
end
go
update dbo.Table1
set A1 = (select tdt from dbo.ufn_getdate1())
,B2 = (select dbo.ufn_getdate2())
Вопрос: Какие данные будут содержаться в колонке A1 и B2 после обновления ?
a) В колонке A1 найдутся значения, отличающиеся от остальных (в пределах колонки A1)
б) В колонке A1 все значения будут одинаковые
в) В колонке B2 найдутся значения, отличающиеся от остальных (в пределах колонки B2)
г) В колонке B2 все значения будут совпадать
Выберите два варианта ответа
Ответ | |
| |
5. Тип данных date и datetime
Дано: Таблица, содержащая одно значение типа date и запрос вида
create table #DateAndTime(Dt date)
insert into #DateAndTime select '2013-11-19'
declare @dt datetime = '2013-11-19 19:00:00'
declare @d datetime = '2013-11-19 00:00:00'
/* 1 */ select 1 as n, * from #DateAndTime where Dt = @dt union all
/* 2 */ select 2, * from #DateAndTime where Dt = @d union all
/* 3 */ select 3, * from #DateAndTime where Dt = cast(@Dt as date) union all
/* 4 */ select 4, * from #DateAndTime where Dt = '2013-11-19 19:00:00'
Вопрос: Какое количество записей вернет запрос ?
a) 0
б) 1
в) 2
г) 3
д) 4
Выберите один вариант ответа
Ответ | |
| |
01.07.2015 3 комментария |
O>Добрый день, коллеги!
И вам не хварать.
O>В ходе работы иногда возникают интересные аспекты использования MS SQL Server.
Вот во вторую часть:
Вопрос: Будут-ли отличаться значения в foo и bar полях?
O>5. Тип данных date и datetime
Что делают "-" в дате и куда ушла "T"? Вот у меня на глазах пришлось остатки по счетам в довольно крупном банке пересчитывать, из-за таких косяков.
https://msdn.microsoft.com/en-us/library/ms187819.aspx
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d0f28d86-fea1-40f6-b982-65f6849b9eca/how-to-code-datetimeliteral-in-sql-server?forum=transactsql
O>Добрый день, коллеги!
O>В ходе работы иногда возникают интересные аспекты использования MS SQL Server. В свое время откладывал их в виде запросов, заметок и всего прочего с надеждой, что доберутся руки, чтобы оформить это в виде головоломок (задач) с ответами и пояснениями. И вот первые пять вопросов готовы. Возможно, кому-то покажется это интересным или будут предложены свои головоломки. Вопросы и ответы составлены мной, поэтому ошибки и заблуждения не исключены. Обсуждение приветствуется
0% попаданий. Был близок в паре мест