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

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


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

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

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

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

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

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


С наступающим Рождеством!

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

§ Провел очередную чистку рядов, удалив "случайных" посетителей. Число участников рейтинга уменьшилось почти на 1500 человек.

§ На третий этап выставлена новая задача - 144 (сложность 4 балла). Автор задачи pvv.

§ Уже есть первые решившие новую 144-ю задачу. Помимо автора, с задачей за сутки справился Arcan, что принесло ему первое место в рейтинге. Автор, pvv, вышел на второе место.

§ man2 преодолел "барьер" в виде 137 и 138 задач перед третьим этапом (задач 138, время 59.556).

§ Продвинулись в рейтинге:
AlexFJ (136, 130.932)
-=ac=- (128, 61.188)
zjor (126, 95.588)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
antihero (120, 12.986)
Sysa (120, 17.517)
T! (115, 47.391)
Scorpion (113, 42.093)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 >Креславский О.М. (Arcan) 144 144 21 350 339 18.497 8.703 22 04 Jan 2008 04 Jan 2008
2 Печатнов В.В. (pvv) 143 144 21 346 74 15.622 2.768 18 01 Jan 2008 04 Jan 2008
3 Белогурова К. (Katy_Ekb) 143 143 21 346 155 9.563 4.673 18 27 Oct 2007 11 Dec 2007
4 Карасёва Н.В. (vlksm) 143 143 21 346 529 38.118 12.414 18 17 Oct 2007 04 Jan 2008
5 Голубин Р.С. (Roman S. Golubin) 143 143 21 346 795 69.101 43.885 18 22 Oct 2007 02 Jan 2008
6 Северюхин Ю.А. (Venser) 142 142 21 342 200 4.950 .655 14 19 Sep 2007 03 Jan 2008
7 Тарасов Д.Б. (Gavrila) 142 142 21 342 755 23.423 2.501 14 20 Sep 2007 01 Jan 2008
8 Солдатенков Ю.С. (SolYUtor) 142 142 21 342 490 17.853 2.695 14 20 Sep 2007 29 Dec 2007
9 Шептунов П.П. (Dzen) 142 142 21 342 279 8.186 3.499 14 02 Oct 2007 15 Nov 2007
10 Мурашкин И.В. (lepton) 142 142 21 342 544 15.800 5.539 14 18 Sep 2007 27 Dec 2007
11 Мальцев А.В. (Палкин) 142 142 21 342 422 49.738 7.690 14 13 Oct 2007 20 Nov 2007
12 Васьков Е.В. (Johan) 142 142 21 342 493 14.350 12.767 14 24 Nov 2007 30 Nov 2007
13 Бураков С.Г. (burakov58) 142 142 21 342 974 51.702 19.814 14 30 Sep 2007 09 Nov 2007
14 Агапов В. (KERBEROS) 135 141 20 326 89 6.143 1.262 11 20 Nov 2006 27 Jul 2007
15 Кувалкин К.С. (Cyrilus) 140 141 21 337 1133 12.570 2.519 11 01 Jan 2008 03 Jan 2008
16 Зверев Д.Л. (dimzv) 138 141 21 334 1503 9.374 4.938 11 16 Dec 2007 16 Dec 2007
17 Войнов П.Е. (pаparome) 141 142 21 338 765 2.788 .049 10 28 Sep 2007 21 Dec 2007
18 Любченко В.А. (IAS56) 141 142 21 338 377 177.859 20.130 10 16 Sep 2007 03 Jan 2008
19 Валуев Д.И. (Fiolent) 141 142 21 338 1547 122.201 66.360 10 29 Nov 2007 04 Jan 2008
20 Юлдашев М.Р. (Snowbear) 140 142 21 334 874 4.350 .188 6 09 Dec 2007 01 Jan 2008

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 rubirumT R.R. (rubirum) 40 40 76 0 76 2257 01 Jan 2008
2 >Сергеенко С.В. (Sqaimes) 18 39 40 34 74 1352 04 Jan 2008
3 >Baksheyev A. (Baksheyev A.) 32 41 66 0 66 2263 04 Jan 2008
4 >Назаров (TheMax) 25 96 55 0 55 319 04 Jan 2008
5 >Вергуленко В.Д. (Walery) 22 35 52 0 52 2307 04 Jan 2008
6 El-Ashi (ie) 26 26 46 0 46 4338 30 Dec 2007
7 none (skx) 17 30 42 0 42 3429 30 Dec 2007
8 >Билык О.В. (bil) 17 47 36 4 40 1253 04 Jan 2008
9 Ватник М.П. (mikev) 18 43 40 0 40 2078 02 Jan 2008
10 >Arcanoid G.A. (arcadius) 18 47 35 0 35 1873 04 Jan 2008
11 Паутов В.А. (Help) 0 0 34 34 29 Dec 2007
12 Шуленин А. (Leshik) 0 71 0 34 34 405 02 Jan 2008
13 Shigapov (dxist) 0 39 0 34 34 1251 04 Jan 2008
14 >Ковалев В.А. (Dr.Gonzo) 17 24 32 0 32 4962 04 Jan 2008
15 >Baczewski I. (Reniek) 14 36 30 0 30 2936 04 Jan 2008
16 >Topchyan V.А. (Vartan) 17 22 30 0 30 5513 04 Jan 2008
17 Кулешов С.А. (ksa) 18 22 30 0 30 5588 03 Jan 2008
18 >thakur S.T. (sapu) 21 21 30 0 30 6242 04 Jan 2008

Изучаем SQL

SQL Server 2008: Инициализация табличных данных с помощью конструкторов строк

Louis Davidson (оригинал: 2008: Initializing Table Data with Row Constructors )
Перевод Моисеенко С.И.

Ну, я только что обнаружил эту особенность, главным образом, потому, что я никогда не встречал ее ни в одной из демо-сессий, которые я посещал до сих пор по 2008. Не то, чтобы это скрывалось - я видел такое название и прежде, но не проверял или не видел ничего выдающегося в том, что они "наконец" осуществили.

Сегодня вечером, а я работаю над главой, в которой создаю некоторые таблицы как часть большого примера, я взял код из книги в версии 2005 (первичный ключ добавляется к таблице позже в книге, так же как и остальные ограничения, посему не судите меня!):

 

CREATE TABLE Inventory.MovieRating (
       MovieRatingId             int NOT NULL,
       Code                           varchar(20) NOT NULL,
       Description                 varchar(200) NULL,
       AllowYouthRentalFlag bit NOT NULL
)
GO
INSERT INTO Inventory.MovieRating (MovieRatingId, Code, Description, AllowYouthRentalFlag)
VALUES (0, 'UR','Unrated',1)
INSERT INTO Inventory.MovieRating (MovieRatingId, Code, Description, AllowYouthRentalFlag)
VALUE   (1, 'G','General Audiences',1),
INSERT INTO Inventory.MovieRating (MovieRatingId, Code, Description, AllowYouthRentalFlag)
VALUES (2, 'PG','Parental Guidance',1),
INSERT INTO Inventory.MovieRating(MovieRatingId, Code, Description, AllowYouthRentalFlag)
VALUES (3, 'PG-13','Parental Guidance for Children Under 13',1),
INSERT INTO Inventory.MovieRating(MovieRatingId, Code, Description, AllowYouthRentalFlag)
VALUES (4, 'R','Restricted, No Children Under 17 without Parent',0)

 

Еще один способ:

 

INSERT INTO Inventory.MovieRating (MovieRatingId, Code, Description, AllowYouthRentalFlag)
SELECT 0, 'UR','Unrated',1
UNION ALL
SELECT 1, 'G','General Audiences',1
UNION ALL
SELECT 3, 'PG-13','Parental Guidance for Children Under 13',1
UNION ALL
SELECT 4, 'R','Restricted, No Children Under 17 without Parent',0

 

Но это ненамного лучше (точнее, немного лучше). Я чувствовал, что использование VALUES намного "правильнее" для книги. Однако сейчас в издании 2008 я очевидно должен буду изменить весь код на использование последнего и наилучшего синтаксиса, а именно, использование конструкторов строк, которые преобразуют код к следующему:

 

INSERT INTO Inventory.MovieRating (MovieRatingId, Code, Description, AllowYouthRentalFlag)
VALUES (0, 'UR','Unrated',1),
       (1, 'G','General Audiences',1),
       (2, 'PG','Parental Guidance',1),
       (3, 'PG-13','Parental Guidance for Children Under 13',1),
       (4, 'R','Restricted, No Children Under 17 without Parent',0)

 

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

05-12-2007

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

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

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

Контакты

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

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

В избранное