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

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


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

Выпуск 283 от 27 февраля 2010 г.

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

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

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

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

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


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

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
4. Ozzy (140)
8. _yizraor (151, 152, 153, 156)
19. AlShin (149)
27. ABEgorov (140)
62. Lohmatyi (139)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
102. qwrqwr (120, 21.080)
115. Pavel_yu (116, 254.937)
126. tolikas (115, 17.492)
128. vtan (115, 92.461)
223. hamp (115, 55.505)

§ На этой неделе сертифицированы:
Domeno (A10020604) [BK] - г. Ростов-на-Дону, Россия

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

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

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

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

На обучающем этапе - 10780

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

Лучшие результаты (ТОР 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 164 251 22 405 1369 127.332 94.136 74 03 Feb 2010 26 Feb 2010
2 Яцук А.А. (Faust_zp)1 164 251 22 405 1093 121.912 95.355 74 01 Feb 2010 22 Feb 2010
3 Креславский О.М. (Arcan)1 164 251 22 405 1097 119.114 95.867 74 31 Jan 2010 26 Feb 2010
4 Зотов П.Г. (Ozzy)1 163 140 22 402 713 199.849 211.373 74 21 Feb 2010 26 Feb 2010
5 Дроздков А.Н. (anddros)5 160 140 22 394 625 8.170 8.437 66 11 Feb 2010 26 Feb 2010
6 Сальников С.А. ($erges)1 160 162 22 393 724 5.981 5.910 65 19 Feb 2010 26 Feb 2010
7 Умрихина Е.В. (Umrikhina)1 150 251 22 372 488 41.244 47.651 61 25 Aug 2009 29 Sep 2009
8 Дубинский А.В. (_yizraor)8 155 156 22 379 636 61.522 26.246 48 24 Feb 2010 26 Feb 2010
9 Сенкевич С.В. (GreyC)1 133 251 21 337 612 57.718 26.238 41 07 Oct 2009 01 Jan 2010
10 Селезнёв А.С. (Артём С.)1 130 251 21 329 444 47.221 34.492 41 25 Jan 2009 03 Mar 2009
11 Тарасов Д.Б. (Gavrila)10 150 76 22 365 1640 67.654 35.630 37 21 Feb 2010 26 Feb 2010
12 Никотин В.М. (@Nikotin)1 134 251 21 334 471 8.335 3.704 35 11 Dec 2009 10 Feb 2010
13 Печатнов В.В. (pvv)1 142 18 21 345 845 36.963 19.888 33 10 Feb 2010 21 Feb 2010
14 Мурашкин И.В. (lepton)1 126 251 21 314 1139 69.439 58.709 32 05 May 2009 14 Dec 2009
15 Муллаханов Р.Х. (rem)9 136 251 22 334 649 14.598 20.041 29 20 Jun 2009 02 Feb 2010
16 Орлов М.В. (Eagleoff)15 149 132 22 359 679 45.024 18.300 28 25 Feb 2010 26 Feb 2010
17 Бойко Д.М. (Angellore)15 147 251 22 352 893 733.606 91.106 28 16 Jan 2010 17 Feb 2010
18 Анисимов Д. (danilko)13 139 160 22 332 32 12.700 9.542 28 12 Aug 2009 17 Aug 2009
19 >Шиндин А.В. (AlShin)10 140 70 21 338 496 24.574 417.872 27 26 Feb 2010 26 Feb 2010
20 Любченко В.А. (IAS56)6 129 251 21 316 1048 419.368 138.580 23 18 Jul 2009 28 Jul 2009

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 &&^%$% (Orry) 49 49 90 34 124 814 25 Feb 2010
2 Артемьев В.А. (vasart) 40 40 79 31 110 1073 26 Feb 2010
3 Гладченко В.Н. (HLVadim) 41 41 81 0 81 1739 24 Feb 2010
4 >Zalyaev D.N. (3dpoison_) 39 46 76 0 76 1559 26 Feb 2010
5 Завалий И.В. (IrinaZV) 33 48 66 0 66 831 24 Feb 2010
6 >Мокров Е.Г. (Laszlo Kovacs) 26 41 59 0 59 1440 26 Feb 2010
7 >Simanjuntak (waldo53) 21 21 46 3 49 2112 26 Feb 2010
8 Котов А. (Ckpa6) 20 97 43 0 43 252 26 Feb 2010
9 Ткачев А.Б. (Alexandre) 12 19 29 0 29 4636 24 Feb 2010
10 >Русановский (March) 13 13 29 0 29 6083 26 Feb 2010
11 Михайлов А.Н. (goodron) 0 0 27 27 6589 26 Feb 2010
12 Sadouski (Vitali84) 10 12 26 0 26 6194 25 Feb 2010
13 Зайцев М.И. (Armitage2010) 0 0 23 23 6205 25 Feb 2010
14 Фомченков В.Н. (hamp) 8 115 22 0 22 223 26 Feb 2010
15 >Шиндин А.В. (AlShin) 13 140 19 0 19 19 26 Feb 2010
16 >Егоров А.Б. (ABEgorov) 7 144 19 0 19 27 26 Feb 2010
17 Омельяненко Д. (Den!) 8 8 18 0 18 7441 25 Feb 2010
18 Grosu A. (Anisoara) 0 2 0 17 17 7312 26 Feb 2010
19 >Batyrshin R.N. (Ramses) 11 11 17 0 17 7536 26 Feb 2010
20 >Семака (tolikas) 6 115 16 0 16 126 26 Feb 2010
21 >Крылов С.А. (Serg71) 7 104 16 0 16 210 26 Feb 2010

Изучаем SQL

Заметки о типах данных. CHAR и VARCHAR (окончание, начало в вып.282)

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

Посмотрим теперь, как обстоят дела с определением данных. Ниже приведен тестовый скрипт.

CREATE TABLE Test_char(
chr CHAR,
vchr VARCHAR
);
 
DELETE FROM Test_char;
 
INSERT INTO Test_char VALUES
('1','11111111112222222222333333333344444444445555555555');
INSERT INTO Test_char VALUES
('11111111112222222222333333333344444444445555555555', '1');
INSERT INTO Test_char VALUES
('2',CAST('111111111122222222223333333333' AS VARCHAR));
INSERT INTO Test_char VALUES
(CAST('111111111122222222223333333333' AS CHAR), '2');
INSERT INTO Test_char VALUES
('3', '3');
 
SELECT * FROM Test_char;
SQL Server 2008
chr vchr  
3 3

Итак, будет вставлена только одна строка, содержащая по одному символу для каждого из столбцов. При вставке остальных строк получаем сообщение об ошибке:

String or binary data would be truncated.
The statement has been terminated.


которое означает, что следует уменьшить размер строки.

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

INSERT INTO Test_char VALUES
(CAST('111111111122222222223333333333' AS CHAR), '2');
PostgreSQL 8.3
chr vchr  
1 11111111112222222222333333333344444444445555555555
2 111111111122222222223333333333
1 2
3 3

Можно отметить последовательность в поведении: VARCHAR имеет произвольный размер; вторая строка не была вставлена из-за ошибки превышения размера (ERROR: value too long for type character(1)); явное преобразование значения к типу столбца таблицы работает, отсекая лишние символы справа.

MySQL 5.0

Не поддерживается тип VARCHAR без указания размера строки. CHAR соответствует CHAR(1) - по стандарту. Поскольку явное преобразование к CHAR оставляет длину строки без изменения, то в таблицу, определенную как

CREATE TABLE Test_char(
chr CHAR,
vchr VARCHAR(1)
);

в итоге, как и в SQL Server, добавится единственная строка:

chr vchr 
3 3

Выводы. По моему скромному мнению, ни одна из упомянутых СУБД не отвечает стандартному поведению в тех случаях, когда размер типа не указывается. Наиболее последовательной в "особенностях реализации" является, на мой взгляд, PostgreSQL. В целях переносимости кода я бы рекомендовал всегда явно указывать размер.

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

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

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

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

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

Контакты

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

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

В избранное