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

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


Информационный Канал Subscribe.Ru

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

http://www.sql-ex.ru

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

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

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

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


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

§ По просьбе VIG добавлено замечание об уникальности даты сражения для задачи 19 DML.

§ Добавлены проверочные данные под задачи 82 (сообщения от aaz и hell) и 65 (snikol).

§ Был устранен баг, который вызывал ошибку SQL Server, связанную с исключением EXCEPTION_ACCESS_VIOLATION. Просьба проверить те решения, которые вызывали эту или другие фатальные ошибки сервера. Сообщите, если ошибка будет продолжать иметь место.

§ К следующей рассылке готовлю добавление нескольких новых задач: 60-я - новое начало второго этапа, 137-я задача от Cirylus и 20 DML. Таким образом, на две задачи повышаются сертификационные требования. Уже по традиции будут удалены просроченные заказы сертификатов.

§ Если вам нравится наш сайт, и вы готовы поспособствовать его популяризации, мы будем рады, если вы разместите на своем сайте или персональной странице нашу кнопку

или ссылку

Надеюсь, что к следующей рассылке будет готова и кнопка подтверждения сертификата.

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Зверев Д.Л. (dimzv) 76 136 19 198 450 2.291 27 Jan 2005 28 Jan 2005
2 Кувалкин К.С. (Cyrilus) 76 136 19 198 72 4.861 04 Feb 2005 26 Feb 2005
3 Сныткин В.Л. (Ded I) 76 136 19 198 142 7.398 22 Jan 2005 25 Feb 2005
4 Валуев Д.И. (Fiolent) 76 136 19 198 503 19.337 19 Jan 2005 26 Feb 2005
5 Hakobyan H.H. (hamlet) 76 136 19 198 114 33.952 21 Jan 2005 22 Feb 2005
6 Галиаскаров Э.Г. (Galogen) 76 136 19 198 95 50.805 25 Feb 2005 25 Feb 2005
7 Мельникова И.А. (Iris_m) 76 136 19 198 254 66.765 21 Jan 2005 17 Feb 2005
8 Шипунов И. (IAS) 76 136 19 198 243 82.012 11 Feb 2005 26 Feb 2005
9 Иткин И.Л. (joseph_itkin) 75 136 19 195 359 2.809 19 Feb 2005 22 Feb 2005
10 Spirin (spirin) 75 136 19 195 158 13.467 21 Jan 2005 24 Jan 2005
11 Леденев С.А. (Shurgenz) 73 136 19 193 146 8.298 11 Jan 2005 11 Jan 2005
12 Михайлов В.Г. (mslava) 73 136 17 189 498 9.731 26 Oct 2004 26 Oct 2004
13 Пятница О.А. (Robin) 65 128 17 174 606 70.821 22 Oct 2004 06 Feb 2005
14 Якутин Н.В. (ZrenBy) 73 136 6 169 511 3.991 14 Sep 2004 18 Jan 2005
15 Рассказов А. (ra) 61 121 19 168 70 29.764 28 Jan 2005 25 Feb 2005
16 Губарь Д.К. (DEathkNIghtS) 61 124 17 166 23 1.046 03 Nov 2004 03 Nov 2004
17 Смирнов А. (Leshich) 61 124 17 166 205 84.171 30 Sep 2004 19 Nov 2004
18 Gershovich (VIG) 58 121 19 163 710 6.899 19 Feb 2005 25 Feb 2005
19 Булаев В.В. (Kvix) 58 121 17 159 124 24.267 27 Dec 2004 06 Jan 2005
20 Забара М.С. (максим111) 58 121 17 159 122 67.157 30 Dec 2004 14 Jan 2005

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Симонов И.А. (Гарсиа) 59 59 105 11 116 275 26 Feb 2005
2 >Колосов А.С. (KAS) 50 117 112 0 112 29 26 Feb 2005
3 Kochergina O.V. (Oksana) 46 61 92 5 97 233 26 Feb 2005
4 Gurinova N.M. (Natalу) 44 44 74 0 74 439 25 Feb 2005
5 Я. А.В. (T34) 28 28 49 19 68 674 22 Feb 2005
6 Зернятко А.В. (Azernot) 18 60 34 30 64 263 25 Feb 2005
7 Царицын С.С. (s) 26 33 51 0 51 608 25 Feb 2005
8 Vashin M.V. (m52) 25 46 47 3 50 432 25 Feb 2005
9 Galimov (Gram) 28 42 50 0 50 510 25 Feb 2005
10 Плоткин С.В. (Googler) 27 27 47 3 50 727 23 Feb 2005
11 Кулицкий Д.С. (StrayCat) 15 74 35 14 49 113 25 Feb 2005
12 >Ivanenko D.A. (Tigron) 28 28 49 0 49 685 26 Feb 2005
13 >Куликов В.Н. (Самоучка) 8 68 18 25 43 130 26 Feb 2005
14 >Станкевич U.N. (urykhy) 22 28 43 0 43 708 26 Feb 2005
15 Корнеев А.Б. (Thror) 17 41 30 9 39 496 25 Feb 2005
16 Золкин А.Н. (Andysun) 25 36 36 3 39 719 25 Feb 2005
17 Рахманов И.Е. (bloom) 11 89 24 14 38 74 25 Feb 2005
18 >Хатламаджиян А.Б. (КБ Арташес) 19 38 31 7 38 664 26 Feb 2005
19 Кузьмин (wolfstein) 24 24 37 1 38 874 23 Feb 2005
20 >Kiryushin A.V. (akir) 29 29 35 2 37 911 26 Feb 2005
21 Кузнецова О. (ok) 20 37 36 0 36 632 25 Feb 2005
22 Кузнецов (avk1) 22 22 31 5 36 1040 25 Feb 2005
23 Latypova E. (Elf) 26 33 35 0 35 785 25 Feb 2005
24 >Nikolaev S.V. (snikol) 14 78 34 0 34 91 26 Feb 2005
25 >Мячин Д.В. (Mjachin) 13 77 32 0 32 96 26 Feb 2005
26 Путятин И.Н. (Putin) 22 22 31 0 31 1037 24 Feb 2005
27 ba T.N. (ba tan) 14 28 30 0 30 760 23 Feb 2005
28 Цибилюк А.Ю. (alexts) 17 24 30 0 30 908 25 Feb 2005

Изучаем SQL

Функции работы со строками в SQL SERVER 2000

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

Вот полный перечень функций работы со строками, взятый из BOL:

ASCII NCHAR SOUNDEX
CHAR PATINDEX SPACE
CHARINDEX REPLACE STR
DIFFERENCE QUOTENAME STUFF
LEFT REPLICATE SUBSTRING
LEN REVERSE UNICODE
LOWER RIGHT UPPER
RTRIM RTRIM

Начнем с двух взаимно-обратных функций - ASCII и CHAR:

Функция ASCII возвращает ASCII-код крайнего левого символа строкового выражения, являющегося аргументом функции.

Вот, например, как можно определить, сколько имеется разных букв, с которых начинаются названия кораблей в таблице Ships:

SELECT COUNT(DISTINCT ASCII(name)) FROM Ships

Результат - 11. Чтобы выяснить, какие это буквы, мы можем применить функцию CHAR, которая возвращает символ по известному ASCII-коду (от 0 до 255):

SELECT DISTINCT CHAR(ASCII(name)) FROM Ships ORDER BY 1

Следует отметить, что аналогичный результат можно получить проще с помощью еще одной функции - LEFT, которая имеет следующий синтаксис:

LEFT (<строковое выражение>, <целочисленное выражение> )

и вырезает заданное вторым аргументом число символов слева из строки, являющейся первым аргументом. Итак,

SELECT DISTINCT LEFT(name, 1) FROM Ships ORDER BY 1

А вот как, например, можно получить таблицу кодов всех алфавитных символов:

SELECT CHAR(ASCII('a')+ num-1) letter, ASCII('a')+ num - 1 [code] FROM
(
SELECT 5*5*(a-1)+5*(b-1) + c AS num FROM
        (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x
             CROSS JOIN
         (SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) y
             CROSS JOIN
         (SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z
) x
WHERE ASCII('a')+ num -1 BETWEEN ASCII('a') AND ASCII('z')

Тех, кто еще не в курсе генерации числовой последовательности, отсылаю к вып.4 от 10 октября 2004.

Как известно, коды строчных и прописных букв отличаются. Поэтому чтобы получить полный набор без переписывания запроса, достаточно просто дописать к вышеприведенному коду аналогичный:

UNION
SELECT CHAR(ASCII('A')+ num-1) letter, ASCII('A')+ num - 1 [code]
FROM
(
SELECT 5*5*(a-1)+5*(b-1) + c AS num FROM
         (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x
             CROSS JOIN
         (SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) y
             CROSS JOIN
         (SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z
) x
WHERE ASCII('A')+ num -1 BETWEEN ASCII('A') AND ASCII('Z')

Чтобы таблица выглядела более патриотично, достаточно заменить латинские буквы "a" и "A" на неотличимые на взгляд русские - "а" и "А", а "z" и "Z" на "я" и "Я". Вот только буквы "ё" вы не увидите в этой таблице, т.к. в кодовой таблице ASCII эти символы лежат отдельно, что легко проверить:

SELECT ASCII('ё')
UNION ALL
SELECT ASCII('Ё')

Я полагаю, что не будет сложным добавить эту букву в таблицу, если потребуется.

§ Приведенные здесь примеры можно выполнить непосредственно на сайте, установив флажок "Без проверки" на странице с упражнениями на SELECT.

Контакты

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

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

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.db.sqlex
Отписаться

В избранное