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

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


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

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

http://www.sql-ex.ru

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

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

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

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


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

§ Первый сертифицированный на сайте специалист появился на Украине.

§ Футбольную базу данных наполнили данными первого чемпионата мира 1930 года. На днях подготовлю скрипт и выставлю для скачивания на http://msi77.narod.ru/downld.html

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Колосов А.С. (KAS) 78 137 20 205 25 3.441 11 Mar 2005 19 Mar 2005
2 Кувалкин К.С. (Cyrilus) 78 137 20 205 102 4.896 06 Mar 2005 19 Mar 2005
3 Валуев Д.И. (Fiolent) 77 136 20 201 556 19.425 13 Mar 2005 19 Mar 2005
4 Hakobyan H.H. (hamlet) 77 136 20 201 161 37.812 09 Mar 2005 14 Mar 2005
5 Галиаскаров Э.Г. (Galogen) 77 136 20 201 109 52.933 11 Mar 2005 11 Mar 2005
6 Мельникова И.А. (Iris_m) 77 136 20 201 301 66.951 09 Mar 2005 12 Mar 2005
7 Шипунов И. (IAS) 77 136 20 201 265 82.049 05 Mar 2005 19 Mar 2005
8 Сныткин В.Л. (Ded I) 76 136 20 200 196 7.398 17 Mar 2005 18 Mar 2005
9 Зверев Д.Л. (dimzv) 76 136 19 198 450 2.291 27 Jan 2005 28 Jan 2005
10 Иткин И.Л. (joseph_itkin) 76 136 20 198 375 2.853 07 Mar 2005 16 Mar 2005
11 Spirin (spirin) 75 136 19 195 158 13.467 21 Jan 2005 24 Jan 2005
12 Леденев С.А. (Shurgenz) 73 136 19 193 146 8.298 11 Jan 2005 02 Mar 2005
13 Михайлов В.Г. (mslava) 73 136 17 189 498 9.731 26 Oct 2004 26 Oct 2004
14 >Пятница О.А. (Robin) 69 128 20 186 754 74.640 19 Mar 2005 19 Mar 2005
15 Gershovich (VIG) 62 121 20 171 732 8.218 13 Mar 2005 18 Mar 2005
16 Якутин Н.В. (ZrenBy) 73 136 6 169 511 3.991 14 Sep 2004 18 Jan 2005
17 Рахманов И.Е. (bloom) 61 120 20 168 91 7.715 15 Mar 2005 19 Mar 2005
18 Рассказов А. (ra) 61 121 19 168 70 29.764 28 Jan 2005 25 Feb 2005
19 Губарь Д.К. (DEathkNIghtS) 61 124 17 166 23 1.046 03 Nov 2004 03 Nov 2004
20 Смирнов А. (Leshich) 61 124 17 166 205 84.171 30 Sep 2004 19 Nov 2004

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Gontovoy (noname) 66 66 120 9 129 138 18 Mar 2005
2 Хайрова В.Р. (venera) 42 42 62 15 77 566 18 Mar 2005
3 Ситник (Kintis_) 28 28 49 3 52 705 15 Mar 2005
4 Серегин Д.В. (seregindv) 13 59 29 17 46 286 18 Mar 2005
5 >Романов В. (Vladir) 26 49 46 0 46 420 19 Mar 2005
6 Yousef T.K. (TARIIQ) 31 31 41 0 41 819 18 Mar 2005
7 Фомин Е. (Wanderer) 16 78 38 2 40 93 17 Mar 2005
8 Sadauskas V. (comandos) 27 27 40 0 40 843 18 Mar 2005
9 Курышев С.А. (KSAl) 28 28 38 0 38 873 18 Mar 2005
10 Манжелей В.В. (Манж) 24 24 37 0 37 888 18 Mar 2005
11 Царицын С.С. (s) 2 66 6 26 32 139 18 Mar 2005
12 Семенов О.А. (olegs) 13 28 32 0 32 721 18 Mar 2005
13 Петров А. (__alex) 21 21 29 0 29 1140 18 Mar 2005
14 Тихомиров Д.В. (DiMenTor) 16 53 26 0 26 341 14 Mar 2005
15 Осташинский Д.М. (dimma) 16 51 26 0 26 376 18 Mar 2005
16 Dankin A.M. (adan84) 16 49 26 0 26 416 17 Mar 2005
17 Glinskaja J. (Glinskaja) 19 19 25 0 25 1224 16 Mar 2005
18 Кулицкий Д.С. (StrayCat) 11 97 22 2 24 47 16 Mar 2005
19 Ярусов М.А. (qwest) 23 25 24 0 24 1191 16 Mar 2005
20 >Семафоров (tet) 13 20 20 0 20 1180 19 Mar 2005

Изучаем SQL

Функции работы со строками в SQL SERVER 2000 (продолжение, начало в вып.24)

Ранее мы для извлечения числа из текстовой строки пользовались функцией LEFT, т.к. нам было известно априори, какое число символов нужно убрать справа (один). А если же нужно извлечь строку из подстроки не по известной позиции символа, а по самому символу? Например: извлечь все символы до первой буквы "х" (значение скорости CD).

В этом случае мы можем использовать также уже рассмотренную ранее функцию CHARINDEX, которая позволит определить неизвестную позицию символа:

SELECT model, LEFT(cd, CHARINDEX('x', cd) -1) FROM PC

Функция SUBSTRING

SUBSTRING ( <выражение> ,<начальная позиция>,<длина> )

Эта функция позволяет извлечь из выражения его часть заданной длины, начиная от заданной начальной позиции. Выражение может быть символьной или бинарной строкой, а также иметь тип text или image. Например, если нам потребуется получить 3 символа в названии корабля, начиная со 2-го символа, то сделать без помощи функции SUBSTRING будет не так просто. А так мы пишем:

SELECT name, SUBSTRING(name, 2, 3) FROM Ships

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

SELECT name, SUBSTRING(name, 2, LEN(name)) FROM Ships

даст нам все символы в названиях кораблей от второй буквы в имени. Обратите внимание на то, что для указания числа извлекаемых символов я использовал функцию LEN(name), которая возвращает число символов в имени. Понятно, что поскольку мне нужны символы, начиная со второго, то их число будет меньше общего количества символов в имени. Однако это не вызывает ошибки, поскольку если указанное число символов превышает возможное число, то будут извлечены все символы до конца строки. Поэтому я и беру их с запасом, не утруждая себя вычислениями.

Функция REVERSE

Эта функция переворачивает строку, как бы читая ее справа налево. Т.е. результатом запроса

SELECT REVERSE('abcdef')

будет 'fedcba'. Если бы в языке отсутствовала функция RIGHT, то запрос

SELECT RIGHT('abcdef',3)

можно было бы равносильно заменить запросом

SELECT REVERSE(LEFT(REVERSE('abcdef'),3))

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

Вспомним пример, в котором мы определяли позицию первого символа "а" в названии корабля "California":

SELECT CHARINDEX('a', name) first_a
FROM Ships WHERE name='California'

Определим теперь позицию последнего вхождения в это название символа "а". Функция

CHARINDEX('a', REVERSE(name))

позволит найти эту позицию, но справа. Для получения позиции этого же символа слева достаточно написать

SELECT LEN(name) + 1 - CHARINDEX('a', REVERSE(name)) first_a
FROM Ships WHERE name='California'

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

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

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

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

SELECT REVERSE('abcdef')

на сайте, можно написать

SELECT TOP 1 REVERSE('abcdef') FROM PC

§ Мы выставили наш сайт на конкурс Интернить 2005. Победитель определяется числом поданых голосов. Просьба проголосовать. (рекомендуемая оценка 3 :-)).

Контакты

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

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

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

В избранное