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

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


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

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

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

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

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

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


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

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

  • Сделать отдельный обучающий этап. При появлении новых задач, они будут менять простые задачи, которые, в свою очередь, будут перетекать на обучающий этап. Поэтому на ближайшее время общее число задач рейтинговых этапов меняться не будет. Исключение составят задачи третьего этапа, которые добавляются наверх и не влияют на сертификацию.
  • Интегрировать в систему имеющийся сервис для формирования тестовой базы вопросов по T-SQL. Когда сформируется тестовая база достаточного объема, запустим демо-тест, чтобы послушать отзывы.
  • Реализовать систему управления контентом, с помощью которой специалисты сайта смогут формировать справочную систему по тематике ресурса.
  • Довести до реализации карту сертифицированных специалистов, чтобы облегчить поиск специалистов по регионам.

     

    § Написал FAQ на 33 задачу. Эта задача перешла со второго этапа, где она никаких вопросов не вызывала. Однако, оказавшить на первом этапе, породила массу писем с одной характерной ошибкой, которая и описана в FAQ.

    § Fiolent подготовил очередную порцию проверочных данных. На этот раз усилена проверка задачи 91. Проверьте свои решения.

    § Новые лица в сотне и вернувшиеся в нее:
    Юля (задач 120, время 7.654)

    § Katy_Ekb закончила решение задач второго этапа с результатом на уровне лидеров (138, 4.694)
    На расстояние в однин шаг до третьего этапа подошли Alex Wolker (137, 57.309), Inuyasha (137, 2.236) и ikhomeriki (137, 4.176).

    § Продвинулись в рейтинге:
    15th (138, 16.082)
    marishkin (138, 19.015)
    Guy (136, 2.249)
    elka (136, 73.394)
    Fomichev (133, 14.193)
    User_Name (133, 27.590)
    gps (133, 217.162)
    Kamin (128, 51.944)
    Онуфрий Голохвастов (121, 64.828)
    lexaNRJ (120, 52.709)
    Weed (119, 164.657)

    § На этой неделе сертифицированы:
    Guy (B07020119) [AR] (г.Ставрополь, Россия)

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

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

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

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

  • Первая часть фокусирует внимание на генерации данных XML из результатов выполнения запроса с помощью директивы FOR XML. Здесь же объясняется использование режимов АВТО и RAW.
  • Вторая часть посвящена извлечению значений из элементов и атрибутов переменной XML.
  • В части III (перевод в вып.149-151) рассматриваются примеры более продвинутой генерации XML, использующие директиву PATH в предложении FOR XML.

     

    В предыдущих статьях мы рассмотрели несколько примеров, которые демонстрировали различные способы генерации XML-данных. Используя директиву FOR XML с AUTO, RAW и PATH, мы можем удовлетворить практически любым требованиям форматирования/обработки XML. В настоящей статье я хотел бы представить несколько примеров, которые демонстрируют мощь ключевого слова EXPLICIT.

    FOR XML EXPLICIT

    Использование EXPLICIT является намного более сложным, чем использование AUTO, RAW и PATH. Почти все требования к форматированию XML могут быть реализованы при помощи AUTO, RAW и PATH. Их использование является довольно простым и базовым. Однако иногда мы нуждаемся в более сложном форматировании XML, чем то, которое может предложить AUTO, RAW и PATH. EXPLICIT поддерживает очень сложное форматирование XML и дает Вам больше средств контроля над генерацией вывода.

    EXPLICIT ожидает, что результаты запросов будут иметь определенную структуру. Вся информация, необходимая для форматирования, присутствует в результатах запроса. Следующие примеры объяснят это подробно.

    Давайте попытаемся воспроизвести структуру XML, которую мы создали ранее при помощи FOR XML PATH. Как я упомянул ранее, использование FOR XML EXPLICIT значительно сложней, чем использование других директив. Чтобы представить этот режим насколько это возможно проще, я предлагаю пошаговый подход к генерации требуемой нам в примере структуры XML.

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

    1 <CustomersByRegion> 2 <Country name="England" currency="Pound Sterling"> 3 <City name="London"> 4 <Customer id="TH" name="Thomas Hardy" phone="444-444-4444" /> 5 </City> 6 </Country> 7 <Country name="India" currency="Rupee"> 8 <City name="New Delhi"> 9 <Customer id="JS" name="Jacob Sebastian" phone="555-555-5555" /> 10 </City> 11 </Country> 12 <Country name="USA" currency="US Dollars"> 13 <City name="NJ"> 14 <Customer id="EN" name="Elizabeth Lincoln" phone="333-333-3333" /> 15 <Customer id="MK" name="John Mark" phone="111-111-1111" /> 16 </City> 17 <City name="NY"> 18 <Customer id="WS" name="Will Smith" phone="222-222-2222" /> 19 </City> 20 </Country> 21 </CustomersByRegion>

    Теперь давайте начнем создавать представленную выше структуру XML, используя FOR XML с режимом EXPLICIT. Как я упомянул ранее, использование EXPLICIT немного сложней. Поэтому я представлю пошаговую процедуру, которая объяснит использование этого режима максимально подробно.

    Шаг 1: Создаем узел Country

    Давайте посмотрим, как мы могли бы создать узел Country. EXPLICIT предполагает, что результаты запроса должны находиться в определенном формате. Следующий пример показывает структуру результатов запроса и структуру XML, сгенерированную из результатов запроса.

     

    
        1 /*
        2 Позволяют нам сначала производить результаты в необходимой структуре. Как только
        3 результата будут получены в необходимом формате, пойдем дальше и
        4 получим XML.
        5 */
        6
        7 SELECT
        8     1 AS Tag,
        9     NULL AS Parent,
       10     c.CountryName AS 'Country!1!name',
       11     c.Currency AS 'Country!1!currency'
       12 FROM
       13     Countries c
    
    

     

    14 /* 15 Результат: 16 17 Tag Parent Country!1!name Country!1!currency 18 ----------- ----------- -------------------- -------------------- 19 1 NULL USA US Dollars 20 1 NULL England Pound Sterling 21 1 NULL India Rupee 22 23 "Tag" - дополнительный столбец. Он сообщает генератору XML уровень 24 элемента в иерархии XML. В примере я использую "1", чтобы 25 сказать генератору XML, что это узел верхнего УРОВНЯ. 26 "Parent" - второй дополнительный столбец. Он говорит генератору XML 27 о родителе текущего узла. Здесь NULL сообщает генератору XML 28 что текущий элемент не имеет родительского узла. 29 30 После первых двух дополнительных (предварительно определенных) столбцов я размещаю необходимые данные. 31 32 "Country!1!name" 33 "Country" - имя элемента 34 "1" задает УРОВЕНЬ узла в иерархии 35 "name" - название атрибута 36 "Country!1!currency" 37 "Country" - имя элемента 38 "1" задает УРОВЕНЬ узла в иерархии 39 "currency" - название атрибута 40 */ 41 42 /* 43 Теперь давайте сгенерируем XML с помощью FOR XML EXPLICIT 44 */

     

       45 SELECT
       46     1 AS Tag,
       47     NULL AS Parent,
       48     c.CountryName AS 'Country!1!name',
       49     c.Currency AS 'Country!1!currency'
       50 FROM
       51     Countries c
       52 FOR XML EXPLICIT
       53
    

     

    54 /* 55 Результат: 56 57 <Country name="USA" currency="US Dollars" /> 58 <Country name="England" currency="Pound Sterling" /> 59 <Country name="India" currency="Rupee" /> 60 */

    (Продолжеие следует...)

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

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

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

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

    Контакты

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

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

    No Person Number of
    Sel_ex
    Last_Sel Number of
    DML_ex
    Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
    1 Северюхин Ю.А. (Venser) 142 142 21 342 154 4.912 .655 14 04 Aug 2007 24 Aug 2007
    2 Солдатенков Ю.С. (SolYUtor) 142 142 21 342 453 17.807 2.695 14 14 Aug 2007 24 Aug 2007
    3 Шептунов П.П. (PavelPS) 142 142 21 342 222 8.145 3.499 14 06 Aug 2007 23 Aug 2007
    4 Мурашкин И.В. (lepton) 142 142 21 342 499 15.737 5.539 14 04 Aug 2007 11 Aug 2007
    5 Карасёва Н.В. (vlksm) 142 142 21 342 455 31.344 5.912 14 04 Aug 2007 24 Aug 2007
    6 Мальцев А.В. (Палкин) 141 142 21 340 310 27.974 7.690 14 23 Jun 2007 21 Aug 2007
    7 Голубин Р.С. (Roman S. Golubin) 142 142 21 342 719 55.391 34.203 14 07 Aug 2007 24 Aug 2007
    8 Агапов В. (KERBEROS) 137 141 20 329 89 6.163 1.262 11 20 Nov 2006 27 Jul 2007
    9 Кувалкин К.С. (Cyrilus) 140 141 20 335 901 12.541 2.519 11 14 May 2007 24 Aug 2007
    10 Зверев Д.Л. (dimzv) 137 141 20 329 1141 9.294 4.938 11 19 Dec 2006 22 Dec 2006
    11 Войнов П.Е. (pаparome) 141 142 21 338 712 2.765 .049 10 06 Aug 2007 09 Aug 2007
    12 Любченко В.А. (IAS56) 141 142 21 338 334 176.801 20.130 10 04 Aug 2007 13 Aug 2007
    13 Тарасов Д.Б. (Gavrila) 140 14 21 335 724 20.381 .513 7 20 Aug 2007 24 Aug 2007
    14 Васьков Е.В. (Johan) 139 140 21 333 253 12.786 11.402 7 29 Mar 2007 26 Jul 2007
    15 Валуев Д.И. (Fiolent) 139 140 20 330 1433 117.088 62.302 4 07 Aug 2007 24 Aug 2007
    16 Юлдашев М.Р. (Snowbear) 139 139 21 331 749 4.132 .000 3 06 Aug 2007 24 Aug 2007
    17 Утёнков М.Н. (=Maxim=) 139 139 21 331 459 25.187 .036 3 05 Aug 2007 20 Aug 2007
    18 Креславский О.М. (Arcan) 139 139 21 331 191 9.932 .315 3 09 Aug 2007 23 Aug 2007
    19 Держальцев В.А. (MadVet) 134 139 20 320 540 34.190 3.085 3 08 Oct 2006 19 Oct 2006
    20 Палий С.А. (PS_Sergey) 135 139 20 321 212 15.704 4.188 3 01 Dec 2006 03 Dec 2006

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

    No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
    1 Осоловский В.А. (v/a) 42 42 78 34 112 1052 23 Aug 2007
    2 Chesnokov V.V. (vchesnokov) 49 49 94 11 105 1204 24 Aug 2007
    3 Пелипенко О.А. (Олег) 27 86 58 34 92 241 24 Aug 2007
    4 Рожкова И. (IrinkaR) 39 39 74 17 91 1604 22 Aug 2007
    5 >Степанов (Barsyk) 28 95 64 20 84 198 24 Aug 2007
    6 >Литвиненко Д.В. (Stich) 27 27 59 19 78 1920 24 Aug 2007
    7 Leszczynski P.M. (leszcz) 38 38 66 9 75 2015 24 Aug 2007
    8 Мищук С.И. (vasya v) 29 32 57 11 68 1539 23 Aug 2007
    9 petrov (infonuke) 26 26 53 15 68 2330 24 Aug 2007
    10 Шушков Д.Б. (DSH) 19 56 38 29 67 630 24 Aug 2007
    11 >Вовк М.С. (Морская) 33 33 62 0 62 2588 24 Aug 2007
    12 Nikolaenko A.V. (Shadow77) 28 87 61 0 61 226 24 Aug 2007
    13 Klyukovskyy D.V. (drima) 20 65 42 17 59 498 23 Aug 2007
    14 >Балуткин А.В. (Чумазик) 26 47 59 0 59 1589 24 Aug 2007
    15 ILYA I. (IL55) 26 41 59 0 59 1958 23 Aug 2007
    16 >Дементьев А.А. (Дементьев Алексей) 32 32 57 0 57 2903 24 Aug 2007
    17 Яхин (yahoo) 23 110 56 0 56 125 24 Aug 2007
    18 >Соловьянова Н.С. (Шаманка) 18 34 43 9 52 2156 24 Aug 2007
    19 Киба А. (Alexiski) 22 45 48 2 50 1290 22 Aug 2007
    20 >Proskurnya A. (Anatol) 24 24 39 9 48 3585 24 Aug 2007
    21 >Пименов Д.Н. (Дмитрий Пименов) 27 27 48 0 48 3594 24 Aug 2007
    22 Ковальчук (andr__x) 27 27 47 0 47 3706 23 Aug 2007
    23 Сурхаев (gl) 27 27 47 0 47 3711 23 Aug 2007
    24 Смирнов М.А. (vgran) 26 26 45 0 45 3791 23 Aug 2007
    25 Корявец А.А. (balb) 16 30 40 0 40 3028 23 Aug 2007

    Изучаем SQL

    Мастерская XML IV - FOR XML EXPLICIT

    Jacob Sebastian (оригинал: XML Workshop IV - FOR XML EXPLICIT )
    Перевод Моисеенко С.И.

    Резюме

    Продолжая свою серию статей, знакомящих администраторов баз данных с возможностями SQL Server 2005 относительно работы с XML, Джекоб Себастьян рассматривает на этот раз предложение FOR XML EXPLICIT.

    Введение

    Это четвертый вклад в мою мастерскую XML, которая имеет целью объяснить/продемонстрировать обработку XML в SQL Server 2005. Если Вы не читали предыдущие статьи этой серии, я бы порекомендовал вам прочитать их перед этой статьей. Вот ссылки на предыдущие статьи.

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

    В избранное