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

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


Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 132 (24 марта 2007 г.)

SQL Exercises

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

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

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

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

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


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

§ Завершил непростой труд по подготовке задач. Итак,
- удалена 40-я задача. Под этим номером теперь находится бывшая 77-я (сложность 1 балл);
- вместо 31-ой выставлена новая задача (автор dorin_larsen, сложность 2 балла);
- вместо 33-ой выставлена бывшая задача 68 (2 балла);
- вместо 77-ой выставлена новая задача (автор yuriy.rozhok, 2 балла);
- вместо 68-ой выставлена новая задача (автор Палкин, 2 балла);
- новая задача появилась и по DML - 21-я (2 балла);
- третий этап прирос 142-ой задачей от pаparome (3 балла);
Надеюсь, что огрехов будет немного.
Успехов в решении.

§ Новые лица в сотне, а также вернувшиеся в нее:
olegv (123, 66.871)
Venser (122, 2.368)
yuriy.rozhok (115, 15.588)

§ Продвинулись в рейтинге:
Aladdin (133, 23.045)
Kamin (122, 48.626)
15th (121, 12.004)
Donald (118, 5.294)
Lexus (117, 20.473)
maar (116, 40.004)

§ На этой неделе сертифицированы:
horseman (A07004347) [BK] (г.Днепропетровск, Украина)
Interrupt (A07017348) [BK] (г.Солнечногорск МО, Россия)
Schummi (A07016162) [BK] (г.Первоуральск, Россия)
myster (A07017308) [BK] ( г.Москва, Россия)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Агапов В. (KERBEROS) 138 141 20 330 89 6.163 1.262 11 20 Nov 2006 22 Mar 2007
2 Солдатенков Ю.С. (SolYUtor) 138 141 20 330 265 17.183 2.517 11 07 Feb 2007 18 Mar 2007
3 Кувалкин К.С. (Cyrilus) 138 141 20 330 746 12.405 2.519 11 10 Dec 2006 22 Mar 2007
4 Карасёва Н.В. (vlksm) 138 141 20 330 196 27.834 2.710 11 18 Nov 2006 23 Mar 2007
5 Мурашкин И.В. (lepton) 138 141 20 330 240 14.847 4.724 11 18 Nov 2006 23 Mar 2007
6 Зверев Д.Л. (dimzv) 138 141 20 330 1141 9.294 4.938 11 19 Dec 2006 22 Dec 2006
7 Голубин Р.С. (Roman S. Golubin) 138 141 20 330 457 54.955 33.803 11 18 Nov 2006 23 Mar 2007
8 Войнов П.Е. (pаparome) 137 140 20 326 489 2.730 .049 7 26 Dec 2006 23 Mar 2007
9 Тарасов Д.Б. (Gavrila) 137 140 20 326 466 20.220 .513 7 05 Dec 2006 21 Mar 2007
10 Мальцев А.В. (Палкин) 137 141 20 326 145 27.545 7.373 7 09 Jan 2007 21 Mar 2007
11 Васьков Е.В. (Johan) 137 140 20 326 124 12.692 11.402 7 20 Nov 2006 22 Mar 2007
12 Валуев Д.И. (Fiolent) 136 140 20 323 1188 116.922 62.302 4 05 Dec 2006 23 Mar 2007
13 Юлдашев М.Р. (Snowbear) 136 139 20 322 546 4.106 .000 3 15 Jan 2007 20 Mar 2007
14 Держальцев В.А. (MadVet) 135 139 20 321 540 34.190 3.085 3 08 Oct 2006 19 Oct 2006
15 Палий С.А. (PS_Sergey) 136 139 20 322 212 15.704 4.188 3 01 Dec 2006 03 Dec 2006
16 Шептунов П.П. (PavelPS) 135 138 20 319 66 4.712 .000 0 03 Mar 2007 23 Mar 2007
17 Салимов Д.М. (Damirishe) 135 138 20 319 156 11.246 .000 0 24 Feb 2007 22 Mar 2007
18 Бородкина М.И. (marishkin) 135 138 20 319 67 15.074 .000 0 22 Jan 2007 20 Mar 2007
19 Утёнков М.Н. (=Maxim=) 135 138 20 319 200 24.978 .000 0 19 Nov 2006 08 Feb 2007
20 Slobodcicov A.N. (Testo) 133 138 20 316 337 7.157 .000 0 25 Aug 2006 10 Nov 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Реветнев А.А. (РевАндр) 52 52 100 19 119 803 23 Mar 2007
2 Хоров Е.М. (hrv) 47 47 86 15 101 1097 22 Mar 2007
3 >Манахов Е.Ю. (ugin) 29 53 65 32 97 595 23 Mar 2007
4 sobolev D.D. (denst) 51 51 97 0 97 1232 21 Mar 2007
5 Даянов Т. (Stopw) 34 83 71 15 86 231 22 Mar 2007
6 >Северюхин Ю.А. (Venser) 28 122 69 0 69 67 23 Mar 2007
7 >Толкачев В.В. (ssGorn) 24 24 37 32 69 1967 23 Mar 2007
8 Роппельт Г.А. (George_r) 32 39 61 2 63 1785 22 Mar 2007
9 >Федоров Е.Л. (Eg) 34 34 62 0 62 2225 23 Mar 2007
10 Ravlik (pro_neo) 32 32 58 0 58 2432 23 Mar 2007
11 >Sevidova E. (Selenka02) 29 30 54 3 57 2444 23 Mar 2007
12 >Селезнёва Н. (Shadiest) 35 35 56 0 56 2538 23 Mar 2007
13 Bugarchev (begemot) 19 56 36 19 55 733 23 Mar 2007
14 Filippov A. (some) 30 30 55 0 55 2630 21 Mar 2007
15 >Трифонов А.В. (l|) 29 29 52 0 52 2798 23 Mar 2007
16 M (Midgar) 29 29 52 0 52 2807 23 Mar 2007
17 Чернышев Е.И. (JekiZ) 28 29 51 0 51 2871 23 Mar 2007
18 Толибов Т.И. (totois) 29 29 50 0 50 2909 21 Mar 2007
19 Медведев С.В. (coala) 28 28 49 0 49 3019 20 Mar 2007
20 >Токмаков Е. (evgenijj) 19 41 38 9 47 1550 23 Mar 2007
21 Ренев А.Г. (Alex Renyov) 27 27 47 0 47 3145 17 Mar 2007
22 Prihodko P.V. (PvP) 18 33 45 1 46 2193 22 Mar 2007
23 Слышинский А.В. (SleyX) 22 29 45 0 45 2876 23 Mar 2007
24 >Hope D.L. (theHope) 26 26 45 0 45 3267 23 Mar 2007
25 >Перов А.С. (Sb) 29 29 45 0 45 3269 23 Mar 2007
26 зюзя (cher) 25 25 40 5 45 3277 23 Mar 2007
27 Стольников (alexeyst) 22 55 44 0 44 1019 23 Mar 2007
28 >блим М.Б. (меламори) 30 30 44 0 44 3314 23 Mar 2007
29 Vasiliev A. (Aresibo) 19 34 40 3 43 2325 20 Mar 2007
30 Хитров И. (autofox) 25 25 42 0 42 3419 21 Mar 2007
31 Tychko (AescCasper) 28 28 42 0 42 3425 23 Mar 2007
32 Св А. (SAlexa) 19 51 41 0 41 1164 22 Mar 2007
33 Бондаренко (ichLand) 14 54 31 9 40 869 23 Mar 2007
34 Куракин В.А. (Vitosoff) 15 15 17 23 40 3528 21 Mar 2007

Изучаем SQL

Некоторые примеры использования XML

Yousef Ekhtiari (оригинал: Some Usages for XML)
Перевод Моисеенко С.И.

Передача набора строк в хранимую процедуру:

Вам необходимо многократно передавать табличный результат в хранимую процедуру. Несмотря на то, что SQL Server 2000 и SQL Server 2005 имеют тип данных, который называется табличной переменной, Вы не можете использовать ее как параметр в хранимых процедурах. Начиная с версии SQL 2000, Microsoft все в большей мере поддерживает XML. Я знаю, что большинство из Вас уже использовало XML или, по крайней мере, много слышало о XML; однако я не хочу углубляться в XML, а лишь хочу показать Вам варианты его использования. Для тех из Вас, кто не знаком с XML, следующая ссылка даст хорошее введение в предмет: www.topxml.com/sql/learn_sql_server_xml_tutorial.asp

Итак, начнем. Пусть имеется следующая таблица:

CREATE TABLE Employee (empid INT,
name VARCHAR (20),
salary MONEY NOT NULL
)

И мы хотим вставить следующий список сотрудников в таблицу employee:

Empid      Name      Salary
1      John      $10000.00
2      Joseph      $3000.00
3      Melissa      $2500.00
4      Dan      $2000.00

Для этого мы создадим хранимую процедуру, чтобы выполнить обработку XML. Новый тип данных XML, введенный в SQL 2005, является наиболее подходящим для того, чтобы хранить значения XML. Вместо этого Вы можете также использовать VARCHAR (MAX) или, если Вы используете SQL 2000, то VARCHAR (8000).

Create PROC usp_ProcessRowset @p XML
AS
SET NOCOUNT ON
DECLARE @ih INT

EXEC sp_XML_preparedocument @ih output, @p

INSERT Employee
SELECT *
FROM OPENXML(@ih, 'data/emp')
WITH Employee

EXEC sp_XML_removedocument @ih

Следующий шаг должен изменить входные данные на допустимый XML. Просто объявим переменную XML и присвоим ей желаемые XML-данные, а затем выполним вышеприведенную хранимую процедуру:

declare @x XML

set @x='
<emp empid="1" name="John" salary="10000" />
<emp empid="2" name="Joseph" salary="3000" />
<emp empid="3" name="Melissa" salary="2500" />
<emp empid="4" name="Dan" salary="2000" />
</data>'
exec usp_ProcessRowset @x
-- Только для того, чтобы удостовериться, что это работает
select * from Employee

Вот результат:

Empid      Name      Salary
1      John      $10000.00
2      Joseph      $3000.00
3      Melissa      $2500.00
4      Dan      $2000.00
(4 row(s) affected)

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

(Окончание следует...)

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

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

§ В продаже еще имеется книга SQL. Задачи и решения, посвященная анализу ошибок, допускаемых при решении задач первого этапа. На сайте издательства Питер можно сделать заказ и познакомиться с содержанием.

§ Желающих поспособствовать популяризации сайта прошу проголосовать/поставить закладку в социальных сетях:
del.icio.us
dzone.com
Digg.com

Контакты

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

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

В избранное