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

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


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

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

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

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

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

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

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


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

§ Добавлены проверочные данные от автора для задачи 140.

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
6. $erges (162)
10. _yizraor (147-150)
16. Eagleoff (140)
25. mz (145, 251)
51. Nariman Kurbanoff (140)

§ К третьему этапу подошли:
65. lilyok (задач 137, время 114.568)

§ Продвинулись в рейтинге:
67. kostik (136, 108.670)
72. Johnnymnemonic (130, 135.027)
81. alex.i (125, 129.465)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
107. Cергей L (118, 127.797)
118. Pavel_yu (114, 254.121)
120. qwrqwr (116, 19.352)
133. antihero (112, 20.810)
162. vtan (110, 91.474)

§ На этой неделе сертифицированы:
Chesnok (B10060966) [AR] - г. Москва, Россия

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

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

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

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

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

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

Лучшие результаты (ТОР 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 19 Feb 2010
2 Яцук А.А. (Faust_zp)1 164 251 22 405 1093 121.912 95.355 74 01 Feb 2010 16 Feb 2010
3 Креславский О.М. (Arcan)1 164 251 22 405 1097 119.114 95.867 74 31 Jan 2010 19 Feb 2010
4 Зотов П.Г. (Ozzy)1 162 251 22 400 690 197.605 209.129 72 29 Jan 2010 19 Feb 2010
5 Дроздков А.Н. (anddros)5 160 140 22 394 625 8.170 8.437 66 11 Feb 2010 19 Feb 2010
6 >Сальников С.А. ($erges)1 160 162 22 393 724 5.981 5.910 65 19 Feb 2010 19 Feb 2010
7 Умрихина Е.В. (Umrikhina)1 150 251 22 372 488 41.244 47.651 61 25 Aug 2009 29 Sep 2009
8 Сенкевич С.В. (GreyC)1 133 251 21 337 612 57.718 26.238 41 07 Oct 2009 01 Jan 2010
9 Селезнёв А.С. (Артём С.)1 130 251 21 329 444 47.221 34.492 41 25 Jan 2009 03 Mar 2009
10 Дубинский А.В. (_yizraor)10 151 150 22 368 630 56.367 21.091 37 18 Feb 2010 19 Feb 2010
11 Тарасов Д.Б. (Gavrila)10 149 71 22 363 1634 67.588 35.630 37 15 Feb 2010 19 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 18 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 148 76 22 356 673 44.115 18.300 28 19 Feb 2010 19 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 127 251 21 319 79 20.351 5.088 24 05 Jan 2009 27 Nov 2009
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 Васюков В. (Egoiste) 32 32 65 25 90 1488 18 Feb 2010
2 >Завалий И.В. (IrinaZV) 15 15 23 34 57 2826 19 Feb 2010
3 >Котов А. (Ckpa6) 21 77 43 0 43 357 19 Feb 2010
4 Chabanov K. (kir_chab) 18 18 42 0 42 4313 19 Feb 2010
5 skhirtladze (mixo) 11 11 28 9 37 4914 18 Feb 2010
6 >Ильин (Zoet) 21 72 36 0 36 723 19 Feb 2010
7 >Егоров А.Б. (ABEgorov) 20 137 33 1 34 31 19 Feb 2010
8 sfddsfgdfg D.G. (ajaccio) 12 12 29 0 29 6080 18 Feb 2010
9 >Фомченков В.Н. (hamp) 10 107 24 0 24 270 19 Feb 2010
10 >Сухарев В.В. (YodaS) 11 67 21 0 21 623 19 Feb 2010
11 ajaccio A.A. (ajaccio83) 9 9 20 0 20 7238 18 Feb 2010
12 >Мокров Е.Г. (Laszlo Kovacs) 12 15 17 2 19 5485 19 Feb 2010
13 >Odin (odin75) 11 55 15 0 15 1272 19 Feb 2010
14 Канторов М.Е. (Kantic) 9 60 14 0 14 595 18 Feb 2010
15 Павлицкая С.Л. (Courpourniaque) 7 7 14 0 14 7724 18 Feb 2010
16 >Zalyaev D.N. (3dpoison_) 8 8 13 0 13 7843 19 Feb 2010
17 Дубинский А.В. (_yizraor) 4 151 12 0 12 10 19 Feb 2010
18 abakumov (Olejka) 9 56 12 0 12 1102 17 Feb 2010
19 >B (vtan) 4 110 11 0 11 162 19 Feb 2010
20 >Курочкин П.А. (qwrqwr) 3 116 10 0 10 120 19 Feb 2010
21 >Сидоров А.В. (OPM) 5 97 10 0 10 299 19 Feb 2010
22 >Safonov (Amigos) 7 11 10 0 10 7550 19 Feb 2010

Изучаем SQL

Заметки о типах данных. CHAR и VARCHAR

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

Недавно мне довелось искать ошибку в решении, которое содержало такое преобразование:

CAST(model AS VARCHAR)

Те, кто изучил схему «Компьютеры», подумают о бессмысленности преобразования типа в тот же самый тип (столбец model определен как VARCHAR(50)). Однако именно это преобразование и делало запрос неверным.

Дело в том, что, если размер типа при преобразовании не указан, то в SQL Server принимается значение по умолчанию, которое для VARCHAR равно 30. При этом если преобразуемая строка имеет больший размер, то отсекаются все символы кроме первых 30-ти. Разумеется, никакой ошибки при этом не возникает. Как раз на «длинных» номерах моделей предложенное решение и давало неверный результат. Как говорится в таких случаях, читайте документацию. Однако интересно, что по этому поводу говорит Стандарт?

Согласно стандарту, если для типов CHAR и VARCHAR размер не указан, то подразумевается CHAR(1) и VARCHAR(1) соответственно. Давайте проверим, как следуют стандарту доступные мне СУБД: SQL Server, MySQL, PostgreSQL.

Тут имеется два аспекта:
1. Преобразование типа
2. Использование типов CHAR/VARCHAR при описании схемы (DDL).

Начнем с преобразования типа.

SQL Server 2008
SELECT CAST('11111111112222222222333333333344444444445555555555' AS CHAR) chr,
CAST('11111111112222222222333333333344444444445555555555' AS VARCHAR) vchr

В результате получим

chr     vchr
111111111122222222223333333333 111111111122222222223333333333

То есть оба символьных типа усекаются до значения по умолчанию, которое равно 30. Никаких сообщений об ошибках не возникает, что, собственно, соответствует стандарту.

PostgreSQL 8.3
SELECT CAST('11111111112222222222333333333344444444445555555555' AS CHAR) chr,
CAST('11111111112222222222333333333344444444445555555555' AS VARCHAR) vchr
 
chr  vchr
1 11111111112222222222333333333344444444445555555555

Налицо половинчатое следование стандарту, т.е. соответствие ему в отношении типа CHAR. Что касается типа VARCHAR, то согласно документации, если длина строки не указана, принимается строка любого размера, т.е. усечения не происходит. (If character varying is used without length specifier, the type accepts strings of any size.)

MySQL 5.0

Как говорится, чем дальше, тем «страньше». Оказывается, в MySQL преобразование к типу VARCHAR вообще не поддерживается. Нам остается проверить только преобразование к CHAR:

SELECT CAST('11111111112222222222333333333344444444445555555555' AS CHAR) chr
 
chr
11111111112222222222333333333344444444445555555555

Т.е. строка не усекается; при этом в документации читаю: «Если при использовании функций CAST и CONVERT размер не указан, то длина по умолчанию – 30.» (When n is not specified when using the CAST and CONVERT functions, the default length is 30).

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

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

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

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

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

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

Контакты

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

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

В избранное