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

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


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

Выпуск 251 от 18 июля 2009 г.

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

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

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

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

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


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

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
17. Gavrila (156)

§ Продвинулись в рейтинге:
59. Minimal (136, 144.243)
91. SoVa (123, 255.590)

§ Новые лица в ТОР 100 и вернувшиеся туда:
93. AlexPhil (123, 8.445)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
104. niko2 (123, 8.615)
160. _ORA_ (115, 97.542)
166. burnall (128, 16.721)
182. Magnetic (113, 120.670)

 

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

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

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

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

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

Лучшие результаты (ТОР 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 159 159 22 384 1148 98.325 69.172 62 27 Jun 2009 17 Jul 2009
2 Креславский О.М. (Arcan)1 159 158 22 384 888 91.939 73.969 62 06 Jul 2009 17 Jul 2009
3 Зотов П.Г. (Ozzy)1 152 157 21 368 480 189.522 206.391 61 03 Jul 2009 17 Jul 2009
4 Сальников С.А. ($erges)1 157 159 22 378 483 4.506 4.807 56 23 Jun 2009 17 Jul 2009
5 Дроздков А.Н. (anddros)5 156 159 22 376 398 6.964 7.600 54 29 Jun 2009 17 Jul 2009
6 Умрихина Е.В. (Umrikhina)4 154 154 22 373 407 27.334 29.667 51 05 Jun 2009 17 Jul 2009
7 Сенкевич С.В. (GreyC)1 145 152 21 356 358 57.860 27.102 44 26 Jan 2009 08 Jul 2009
8 Селезнёв А.С. (Артём С.)1 143 152 21 350 444 47.248 37.524 44 25 Jan 2009 03 Mar 2009
9 Никотин В.М. (@Nikotin)1 146 150 21 353 283 8.371 3.751 38 06 Jun 2009 15 Jul 2009
10 Мурашкин И.В. (lepton)1 139 156 21 336 1139 69.490 59.005 36 05 May 2009 05 May 2009
11 Печатнов В.В. (pvv)1 142 149 21 340 584 30.849 17.490 34 25 May 2009 14 Jul 2009
12 Муллаханов Р.Х. (rem)9 149 152 22 355 649 14.627 20.056 33 20 Jun 2009 14 Jul 2009
13 Шиндин А.В. (AlShin)10 140 150 21 340 79 20.458 7.203 28 05 Jan 2009 25 May 2009
14 Держальцев В.А. (MadVet)7 132 146 21 320 1509 60.783 28.482 26 03 Jun 2009 16 Jun 2009
15 Любченко В.А. (IAS56)6 141 89 21 334 1045 417.506 373.617 26 15 Jul 2009 17 Jul 2009
16 Голубин Р.С. (Roman S. Golubin)3 136 145 21 326 1413 93.162 58.822 23 01 Jul 2009 11 Jul 2009
17 Тарасов Д.Б. (Gavrila)17 146 156 22 344 1419 41.261 10.993 22 15 Jul 2009 17 Jul 2009
18 Nikolaenko A.V. (Shadow77)12 135 147 21 324 436 77.451 14.010 21 22 Oct 2008 11 Dec 2008
19 Солдатенков Ю.С. (SolYUtor)2 131 146 21 316 819 22.615 6.102 18 14 Aug 2008 01 Apr 2009
20 Кудряков А.И. (AKudrakov)19 142 152 21 334 483 94.015 52.909 18 07 May 2009 07 May 2009

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Putin (danilko) 88 88 165 35 200 296 17 Jul 2009
2 Popov D. (DPopov) 32 48 63 35 98 1025 15 Jul 2009
3 Чудородов А.В. (AlexeyCh) 30 48 61 35 96 1024 15 Jul 2009
4 Kass A.K. (KassAK) 22 48 42 35 77 1021 15 Jul 2009
5 anonymous (codemonkey) 30 33 58 19 77 2155 16 Jul 2009
6 >Сизиков Н.К. (Hukutac) 26 31 53 23 76 2076 17 Jul 2009
7 Кольцова (AnnyK) 21 48 40 35 75 1023 16 Jul 2009
8 >Дворянинов В. (Валдай) 21 68 36 35 71 529 17 Jul 2009
9 Titov V. (VTitov) 21 48 36 35 71 1022 16 Jul 2009
10 >Smirnov G.V. (Gleb V Smirnov) 36 36 67 0 67 2799 17 Jul 2009
11 Iljy (Goblin1000) 6 71 13 35 48 484 16 Jul 2009
12 >oltean A. (andreea_ita) 21 29 47 0 47 3792 17 Jul 2009
13 Арустамян (Logan) 11 48 25 19 44 1313 17 Jul 2009
14 бокс (box) 18 34 44 0 44 3071 12 Jul 2009
15 Баранова М.А. (Maria13) 6 43 10 33 43 1138 17 Jul 2009
16 Рыхлецкий К.В. (KPbIC) 4 51 7 35 42 929 16 Jul 2009
17 Kansal S. (Kutu) 19 20 37 0 37 4792 17 Jul 2009
18 Kirilenko M. (Ritk@) 14 21 34 1 35 5439 17 Jul 2009
19 >Demyanov R. (RX) 14 14 17 17 34 6557 17 Jul 2009
20 Василец Е. (algedi) 16 16 23 11 34 6560 15 Jul 2009
21 >Кислова А. (annettek) 18 71 33 0 33 486 17 Jul 2009
22 >Файнберг М.Л. (burnall) 13 128 32 0 32 166 17 Jul 2009

Изучаем SQL

Предикат LIKE и регулярные выражения

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

Предикат LIKE в его стандартной редакции не поддерживает регулярных выражений, хотя ряд реализаций (в частности, Oracle) допускает их использование, расширяя возможности стандарта.

В SQL Server 2005/2008 использование регулярных выражений возможно через CLR, т.е. посредством языков Visual Studio, которые могут использоваться для написания хранимых процедур и пользовательских функций (UDF). Однако в Transact-SQL, помимо стандартных символов-шаблонов ("%" и "_"), существует еще пара символов, которые делают предикат LIKE более гибким инструментом. Этими символами являются:

  • [ ] - одиночный символ из набора символов (например, [zxy]) или диапазона ([a-z]), указанных в квадратных скобках. При этом можно перечислить сразу несколько диапазонов (например, [0-9a-z]);
  • ^ - который с сочетании с квадратными скобками исключает из поискового образца символы из набора или диапазона.

    Поясним использование этих символов на примерах.

    SELECT * FROM
    (
    SELECT '5%' name UNION ALL
    SELECT '55'       UNION ALL
    SELECT '5%%'      UNION ALL
    SELECT '3%%'   UNION ALL
    SELECT 'a5%%'   UNION ALL
    SELECT 'abc'    UNION ALL
    SELECT 'abc 5% cde' UNION ALL
    SELECT '5c2e'   UNION ALL
    SELECT 'C2H5OH'  UNION ALL
    SELECT 'C25OH'   UNION ALL
    SELECT 'C54OH'
    ) x
     
     /* 1 */
     --WHERE name LIKE'5%' -- начинается с 5
     /* 2 */
     --WHERE name LIKE '5[%]' -- 5%
     /* 3 */
     --WHERE name LIKE '5\%' ESCAPE '\'-- 5%
     /* 4 */
     --WHERE name LIKE '%5\%%' ESCAPE '\' -- 5% в любом месте строки
     /* 5 */
     --WHERE name LIKE '[0-9][a-zA-Z]%' -- первая цифра, вторая буква
     /* 6 */
     --WHERE name LIKE '[a-z][0-9]%' -- первая буква, вторая цифра
     /* 7 */
     --WHERE name LIKE '[^0-9]%' -- начинается не на цифру.
     /* 8 */
     --WHERE name LIKE '%[02468]%' -- содержит четную цифру.
     /* 9 */
     --WHERE name LIKE '%[02468][13579]%' -- комбинация четная-нечетная.
    
    В данном запросе генерируются некоторые данные, для поиска в которых используется предикат LIKE. Девять примеров - это соответственно 9 закомментированных предложений WHERE. Для проверки результатов выполнения запроса на сайте предварительно снимите комментарий с одной из строк, начинающихся с WHERE. Тем, кто не может использовать сайт, приведу здесь результаты выполнения этих примеров.

    name LIKE '5%'

    Все строки, которые начинаются с 5:

    name
    ----
    5%
    55
    5%%
    5c2e
    

    name LIKE '5[%]'

    Поиск строки '5%'. Символ в скобках воспринимается как обычный единичный символ:

    name
    ----
    5%
    

    name LIKE '5\%' ESCAPE '\'

    Другое решение, аналогичное второму, но использующее ESCAPE-символ, указывающий, что знак % следует воспринимать как обычный символ.

    name LIKE '%5\%%' ESCAPE

    Поиск подстроки '5%', находящейся в любом месте строки:

    name
    ----
    5%
    5%%
    a5%%
    abc 5% cde
    

    name LIKE '[0-9][a-zA-Z]%'

    Поиск строки, у которой первый символ является цифрой, а второй - буквой:

    name
    ----
    5c2e
    

    name LIKE '[a-z][0-9]%'

    Поиск строки, у которой первый символ является буквой, а второй - цифрой. Вариант для регистронезависимого сравнения:

    name
    ----
    a5%%
    C2H5OH
    C25OH
    C54OH
    

    name LIKE '[^0-9]%'

    Поиск строки, которая начинается не с цифры:

    name
    ----
    a5%%
    abc
    abc 5% cde
    C2H5OH
    C25OH
    C54OH
    

    name LIKE '%[02468]%'

    Поиск строки, которая содержит четную цифру:

    name
    ----
    5c2e
    C2H5OH
    C25OH
    C54OH
    

    name LIKE '%[02468][13579]%'

    Поиск строки, которая содержит подряд идущие четную и нечетную цифры:

    name
    ----
    C25OH
    

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

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

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

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

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

    Контакты

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

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

    В избранное