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

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


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

Выпуск 442 от 16 марта 2013 г.

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

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

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

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

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


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

§ qwrqwr уточнил формулировки задач 37 и 195 (SELECT, рейтинг), а vlksm - 165 (SELECT, рейтинг).
Подлатал проверку задачи 110 (SELECT, обуч.) в ответ на замечание maxdmit.
Автор усилил проверку задачи 176 (SELECT, рейтинг),

§ Самые популярные темы недели на форуме

Топик		Сообщений
176 (SELECT)	35
191 (SELECT)	16
37 (SELECT)	7
195 (SELECT)	6
777		6

 

§ Авторы недели на форуме

Автор		Число сообщений
qwrqwr  	34
$erges  	31
Cygapb-007	7
AlexKarapysh	6
СитдиковАА	6

 

§ Объявленные конкурсы по оптимизации запросов

Задача	Дата		Автор
147	2012-02-23	$erges
159	2012-07-25	anddros
170	2011-07-15	qwrqwr
182	2012-02-16	Baser
192	2012-03-03	Baser
259	2012-07-23	anddros

 

Дополнительные неоптимизационные конкурсы

Задача	Дата		Автор/Организатор конкурса
71	2010-12-26	anddros (завершен).
88	2012-07-12	crescent/Pegoopik
91	2012-05-31	smog/$erges
121	2012-07-06	ZrenBy/anddros
153	2010-09-21	Ozzy

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
Смена лидера!
1. $erges (191)
9. _dimon_ (165)
18. KERBEROS (150, 151, 152, 153, 173, 174, 177)
26. Дмитрий Гринкевич (183)
33. GriGrim (194)
39. smog (143)

§ Новые лица в ТОР 100 и вернувшиеся туда:
98. azkaban (143, 1121.787)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
106. timka__s (137, 5.350)
158. Fomichev (105, 25.602)
200. Ренат (104, 2461.084)
204. .Wizard (99, 660.952)

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

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

Число упражнений:
   на обучающем этапе - 104;
   на рейтинговых этапах - 194;
   DML - 24
   головоломки - 7 (отрицательные номера) + 9 (3 этап).

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

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1Сальников С.А. ($erges)121119524506184214.76912.0121512013-03-132013-03-15
2Курочкин П.А. (qwrqwr)1211195245061207218.132146.4651512013-03-012013-03-15
3Креславский О.М. (Arcan)1211195245062221213.599159.8691512013-03-022013-03-15
4Карасёва Н.В. (vlksm)1211195245062485207.060164.8801512013-03-032013-03-15
5Бежаев А.Ю. (Baser)120912224503869150.835132.3091502012-09-172013-03-15
6Яцук А.А. (Faust_zp)1202255244851985144.336108.8401342012-07-122012-07-30
7Кузнецов В.С. (herrRo)1187104234441170481.39573.3351212012-02-082013-02-22
8Boiko D. (Angellore)8192992445418011986.9001013.2661112012-07-162013-01-29
9Филиппкин Д.В. (_dimon_)9197165244621511145.27681.6301072013-03-112013-03-15
10Дубинский А.В. (_yizraor)1187122244401088718.8141122.9071012012-11-052012-11-25
11Шиндин А.В. (AlShin)116325223399928408.942777.457992011-05-052011-05-21
12Дроздков А.Н. (anddros)518717824441156011.91810.760982012-09-052012-11-10
13Тарасов Д.Б. (Gavrila)918032234222428151.48799.710942012-04-232012-05-25
14Орлов М.В. (Eagleoff)9167-323398952138.554106.466912011-11-102013-03-13
15Зотов П.Г. (Ozzy)116523233921412213.999187.364812012-02-052013-02-14
16Держальцев В.А. (MadVet)3153100223712073143.67299.698812010-12-292011-09-26
17Калинин К.А. (kalinin_k)161701692338939927.22836.659602012-06-302013-03-14
18>Агапов В. (KERBEROS)117030224393239132.88526.870582013-03-152013-03-15
19Умрихина Е.В. (Umrikhina)1131672332294941.25643.454562010-11-292012-10-26
20Dvoryaninov V. (Валдай)1616891233801270405.666329.316552012-12-282012-12-28

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1Юсюмбели Н.И. (nickusPro)106417314858214 Mar 2013
2Надыршин Т.Р. (Zeliboba10)1113738227015 Mar 2013
3Demich N. (demich)0103737228115 Mar 2013
4Небыльцов К.И. (Otsegolectr)22653603650515 Mar 2013
5>Чурсинов Р.А. (сhursinov)22653303350715 Mar 2013
6rot R.R. (rotrot)0
02727289615 Mar 2013
7Корнюкова О.А. (OlgaKorn)2674222659314 Mar 2013
8Cygapb (Cygapb-007)16642502552810 Mar 2013
9>Ситдиков А.А. (СитдиковАА)161622325298715 Mar 2013
10Лахманец А. (lakhmanets)0402222287815 Mar 2013
11Dust (DustLelik)0
02222324411 Mar 2013
12>червяков А.С. (svenchik)15342002095115 Mar 2013
13Латыпов (barcarafmm)0
01919351515 Mar 2013
14Колбасов П.А. (kolbasOff)141518018154914 Mar 2013
15Ненужев (Zonder)141418018359514 Mar 2013
16>Агапов В. (KERBEROS)8170170171815 Mar 2013
17Болмасов С. (Сам Самыч)0
01717370015 Mar 2013
18Udodov P.A. (Pavel_U)32751116145714 Mar 2013
19Кабанец Е.Г. (azkaban)7143150159815 Mar 2013
20Мулло Д.А. (D.M.)02201515121610 Mar 2013

Изучаем SQL

Оператор TRUNCATE TABLE

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

Как отмечалось выше, при выполнении этой команды значение счетчика (IDENTITY) сбрасывается в начальное значение. Давайте проверим это утверждение в MS SQL Server. Для начала создадим таблицу с автоинкрементируемым столбцом, и добавим в нее три строки.

    CREATE TABLE Truncate_test (id INT IDENTITY(5,5) PRIMARY KEY, val INT);
    GO
    INSERT INTO Truncate_test(val)
    VALUES (1),(2),(3);
    SELECT * FROM Truncate_test;
    GO

Начальным значением счетчика является 5, приращение счетчика выполняется также с шагом 5. В результате получим:

id	val
-----------
5    	1
10    	2
15    	3
Теперь удалим строки с помощью оператора DELETE, после чего снова вставим те же строки в таблицу.
    DELETE FROM Truncate_test;
    GO
    INSERT INTO Truncate_test(val)
    VALUES (1), (2), (3);
    SELECT * FROM Truncate_test;
    GO

id	val
-----------
20   	1
25    	2
30    	3
Как видно из результата, состояние счетчика не было сброшено, и приращение продолжилось с последнего значения (15), в отличие от использования оператора TRUNCATE TABLE:
    TRUNCATE TABLE Truncate_test;
    GO
    INSERT INTO Truncate_test(val)
    VALUES (1),(2),(3);
    SELECT * FROM Truncate_test;
    GO

id	val
-----------
5    	1
10   	2
15    	3

В то же время Стандарт предполагает несколько иное поведение. Стандартный синтаксис имеет вид

    TRUNCATE TABLE < имя таблицы > [{CONTINUE IDENTITY} | {RESTART IDENTITY}] 

т.е. значение счетчика может быть сброшено (опция RESTART IDENTITY) или продолжено (опция CONTINUE IDENTITY). И, кстати, значением по умолчанию является как раз CONTINUE IDENTITY, что эквивалентно поведению при использованию оператора DELETE (без предложения WHERE).

Оператор TRUNCATE TABLE неприменим, если на таблицу имеется ссылка по внешнему ключу. Это стандартное поведение имеет место в SQL Server. Если создать, например, такую ссылающуюся таблицу, которая даже не будет содержать данных:

    CREATE TABLE Trun_Ref(id INT REFERENCES Truncate_test);  

оператор TRUNCATE TABLE приведет к следующей ошибке:

Cannot truncate table 'Truncate_test' because it is being referenced by a FOREIGN KEY constraint. (Невозможно усечь таблицу 'Truncate_test', поскольку на нее ссылается ограничение FOREIGN KEY) .

Теперь проверим, насколько близки к стандарту другие реализации.

Читать далее...

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

§ В настоящее время для решения упражнений на сайте используются следующие СУБД: SQL Server 2008 R2 Express, Oracle 11g Express Edition, MySQL 5, PostgreSQL 9.

§ Группа SQL Exercises на LinkedIn.com. Присоединяйтесь!

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

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

§ Книги и статьи по SQL.

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

Контакты

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

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

В избранное