Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru) 239


Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)"

Выпуск 239 от 25 апреля 2009 г.

Новым посетителям сайта

SQL Exercises Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.

Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 49-ти задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений.

Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов, которые пригодятся на третьем рейтинговом этапе, который начинается после 138 задачи.

Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.


Новости сайта

§ Ростовчан приглашаем посетить семинар, посвященный SQL Server 2008.
Доклад сделает Алексей Шуленин (Майкрософт):

Там, за облаками. Microsoft SQL Server и концепция приложений в "облаке"

Семинар состоится 29 апреля (начало в 16:00) по адресу:
ул. Мильчакова 10 (здание НКТБ Пьезоприбор), Факультет высоких технологий ЮФУ, а. 514 (5 этаж)

 

§ Добавил подсказки к задаче 4 (SELECT).

§ Чтобы усложнить подгонку, несколько изменил условие задачи 70. Добавил также проверочных данных.

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
1. vlksm (156)
3. Ozzy (154)
5. Umrikhina (153)
10. lepton (156)

§ К третьему этапу подошел:
48. _Bkmz_ (задач 138, время 6.238)

§ Продвинулись в рейтинге:
51. Angellore (136, 263.745)
52. B o r i s (136, 196.575)
56. glassman (133, 63.581)
63. Nariman Kurbanoff (131, 104.923)
68. Eka (129, 20.538)
73. Балуткин (128, 401.552)
74. modicus (127, 8.996)

§ Новые лица в ТОР 100 и вернувшиеся туда:
81. lemon (125, 8.178)
88. Ashton (124, 26.503)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
113. mitronin (122, 299.632)
116. _irina_ (121, 30.177)
125. maar (118, 88.677)
147. vitaliiS (116, 100.797)
156. GrImago (115, 16.010)
187. Magnetic (110, 88.709)

§ На этой неделе сертифицированы:
OgO (A09016654) [BK] - г.Смоленск, Россия

§ Число подписчиков - 3862

Число участников рейтинга - 20436

Число участников второго этапа - 1801

Число участников третьего этапа - 47

Сертифицировано на сайте - 367

Лучшие результаты (ТОР 20)

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Карасёва Н.В. (vlksm)1 156 156 21 378 1080 91.111 61.984 57 20 Apr 2009 24 Apr 2009
2 Креславский О.М. (Arcan)1 154 70 21 374 808 65.291 46.391 53 17 Apr 2009 24 Apr 2009
3 Зотов П.Г. (Ozzy)3 151 70 21 365 408 143.850 160.719 53 22 Apr 2009 24 Apr 2009
4 >Сальников С.А. ($erges)1 153 70 21 370 423 3.866 4.191 49 24 Apr 2009 24 Apr 2009
5 >Умрихина Е.В. (Umrikhina)5 152 153 21 369 365 24.957 27.315 49 24 Apr 2009 24 Apr 2009
6 Сенкевич С.В. (GreyC)1 148 152 21 363 358 57.860 27.102 46 26 Jan 2009 19 Apr 2009
7 Селезнёв А.С. (Артём С.)1 146 152 21 357 444 47.248 37.524 46 25 Jan 2009 03 Mar 2009
8 Дроздков А.Н. (anddros)7 151 70 21 365 325 6.474 7.110 44 17 Apr 2009 24 Apr 2009
9 Никотин В.М. (@Nikotin)1 147 4 21 358 239 8.371 3.751 40 23 Apr 2009 24 Apr 2009
10 Мурашкин И.В. (lepton)1 141 156 21 342 1125 69.490 59.005 38 21 Apr 2009 24 Apr 2009
11 Печатнов В.В. (pvv)1 142 149 21 344 357 30.849 17.490 36 10 Oct 2008 24 Apr 2009
12 Муллаханов Р.Х. (rem)9 145 152 21 352 483 14.427 20.056 35 05 Jan 2009 10 Apr 2009
13 Шиндин А.В. (AlShin)10 143 150 21 347 79 20.458 7.203 30 05 Jan 2009 28 Jan 2009
14 Держальцев В.А. (MadVet)7 133 146 21 325 1257 60.783 28.482 28 24 Sep 2008 30 Dec 2008
15 Любченко В.А. (IAS56)6 132 146 21 324 615 403.343 373.617 28 11 May 2008 01 Dec 2008
16 Голубин Р.С. (Roman S. Golubin)3 137 145 21 330 1260 93.162 58.822 25 29 Jan 2009 08 Feb 2009
17 Nikolaenko A.V. (Shadow77)12 138 147 21 331 436 77.451 14.010 23 22 Oct 2008 11 Dec 2008
18 Солдатенков Ю.С. (SolYUtor)2 134 146 21 323 819 22.615 6.102 20 14 Aug 2008 01 Apr 2009
19 Белогурова К. (Katy_Ekb)19 129 143 21 313 552 10.666 4.673 18 27 Nov 2008 18 Jan 2009
20 Егоров А.Б. (ABEgorov)20 133 144 21 321 180 12.897 8.815 18 03 Aug 2008 12 Aug 2008

Лучшие результаты за неделю

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Иванов Д.К. (WhiteWizard) 43 49 83 34 117 1030 23 Apr 2009
2 >Пластинин С.А. (Пластинин) 51 54 95 0 95 1635 24 Apr 2009
3 >Поляков (drum) 36 39 73 9 82 2063 24 Apr 2009
4 >куварина Е. (смальта) 34 43 73 0 73 1573 24 Apr 2009
5 >marat (lemon) 28 125 71 0 71 81 24 Apr 2009
6 Nowakowski M. (Psz750) 31 40 64 0 64 2499 24 Apr 2009
7 Ушаков С.В. (Cliper29) 25 52 43 17 60 955 23 Apr 2009
8 >Odin (odin75) 25 35 56 0 56 3019 24 Apr 2009
9 >Sobolev (sqlll) 27 27 54 1 55 4098 24 Apr 2009
10 Yarmakeev Б.И. (Bulat04) 27 27 54 0 54 4186 24 Apr 2009
11 >Денисов Ю.Н. (UraNik) 15 37 32 21 53 1845 24 Apr 2009
12 >Фамилия (SimaYang) 15 44 28 23 51 1163 24 Apr 2009
13 panina (gruzman) 11 67 21 28 49 646 24 Apr 2009
14 >Осадчий В.В. (Mathematician) 17 106 38 0 38 212 24 Apr 2009
15 Конопко О.Е. (Konopko) 18 25 38 0 38 5116 23 Apr 2009
16 Битюков Г.С. (Kopernik) 1 47 2 34 36 1066 24 Apr 2009
17 Волошин С.О. (smack) 19 19 35 1 36 6354 21 Apr 2009
18 >Митронин А.А. (mitronin) 15 122 34 0 34 113 24 Apr 2009
19 Ogorzelski P. (PiotrO) 17 17 33 0 33 6666 22 Apr 2009
20 >Ершов А.Н. (basik) 11 49 13 19 32 1302 24 Apr 2009
21 >Саурин (Delchef) 13 29 32 0 32 3697 24 Apr 2009
22 Артамонов Е.В. (.:John:.) 11 26 30 0 30 4438 19 Apr 2009

Изучаем SQL

Порядок выполнения операторов UNION, EXCEPT, INTERSECT

Моисеенко С.И.

В связи с задачей 6 (SELECT) рейтингового этапа возник вопрос относительно старшинства операций UNION, EXCEPT и INTERSECT. Логический порядок выполнения этих операций, который приводится в книге Мартина Грабера "Справочное руководство по SQL", выглядит так:

UNION, EXCEPT
INTERSECT

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

Рассмотрим три простых запроса, которые будем комбинировать различными способами, чтобы убедиться в этом:

--Модели и типы продукции производителя B

SELECT model, type FROM Product WHERE maker='B'

model  type
-------------
1121   PC
1750   Laptop

--Модели ноутбуков

SELECT model, type FROM Product WHERE type='Laptop'

model type
----------
1298  Laptop
1321  Laptop
1750  Laptop
1752  Laptop

--Модели ПК

SELECT model, type FROM Product WHERE type='PC'

model  type
------------
1121   PC
1232   PC
1233   PC
1260   PC
2111   PC
2112   PC

Давайте сначала проверим первое утверждение. Если операция EXCEPT старше операции UNION, то запросы

SELECT model, type FROM Product WHERE maker='B'
UNION
SELECT model, type FROM Product WHERE type='Laptop'
EXCEPT
SELECT model, type FROM Product WHERE type='PC'
и
(SELECT model, type FROM Product WHERE maker='B'
UNION
SELECT model, type FROM Product WHERE type='Laptop')
EXCEPT
SELECT model, type FROM Product WHERE type='PC'

должны нам дать разные результаты. Однако это не так, и мы получаем один и тот же результирующий набор:

model   type
--------------
1298  Laptop
1321  Laptop
1750  Laptop
1752  Laptop

Аналогично, если операция UNION старше операции EXCEPT, то запросы

SELECT model, type FROM Product WHERE type='Laptop'
EXCEPT
SELECT model, type FROM Product WHERE type='PC'
UNION
SELECT model, type FROM Product WHERE maker='B'
и
(SELECT model, type FROM Product WHERE type='Laptop'
EXCEPT
SELECT model, type FROM Product WHERE type='PC')
UNION
SELECT model, type FROM Product WHERE maker='B'

должны нам дать разные результаты. И тут мы получаем одинаковый результат:

model  type
------------
1121   PC
1298   Laptop
1321   Laptop
1750   Laptop
1752   Laptop

Итак, операции UNION и EXCEPT эквивалентны по старшинству.

Проверим теперь старшинство операции INTERSECT по отношению к другим операторам (в тестах можно взять любую из них, т.к. они имеют один и тот же порядок).

Если INTERSECT "младше" или эквивалентен UNION, то запросы

SELECT model, type FROM Product WHERE maker='B'
UNION
SELECT model, type FROM Product WHERE type='Laptop'
INTERSECT
SELECT model, type FROM Product WHERE type='PC'
и
(SELECT model, type FROM Product WHERE maker='B'
UNION
SELECT model, type FROM Product WHERE type='Laptop')
INTERSECT
SELECT model, type FROM Product WHERE type='PC'

должны дать одинаковые результаты. Однако мы получаем разные результирующие наборы. Первый запрос дает

model  type
------------
1121   PC
1750   Laptop

в то время как второй

model  type
------------
1121   PC

Вывод. Логический порядок, приведенный в начале статьи не соответствует старшинству операций, и, на мой взгляд, его следует поменять на обратный:

INTERSECT
UNION, EXCEPT

Полезная информация

§ Приглашаем вас посетить новый проект - Интерактивный учебник по SQL.
   Ресурс позиционируется как "справочное обеспечение" для сайта SQL-EX.RU, но может использоваться и независимо от него.

§ Онлайновый выпуск рассылки можно почитать на сайте.

§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.

§ Хотите поддержать проект? Вот инструкция по применению. :-)

Контакты

По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77[@]yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.

Подписка Subscribe.Ru
Новости сайта "Упражнения по SQL"

В избранное