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

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


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

Выпуск 475 от 02 ноября 2013 г.

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

SQL Exercises

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

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

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

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


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

§ Продолжается народное голосование в очередной ежегодной Премии Рунета. Мы попали в ТОР-30, т.е. прошли в третий этап обоими проектами - sql-ex.ru и sql-tutorial.ru.
Спасибо всем, кто за нас голосовал.
Мы еще ни разу не попадали в ТОР-10. Может быть получится в этом году. Попробуем?.
Голосовать можно раз в день. Третий этап голосования продлится до 21 ноября.

§ Новые задачи и перестановки на сайте:
6 --> обучающий этап (номер 114);
20 --> 6;
59 --> 20;
103 --> 59;
202 --> 103;
202 - новая задача от qwrqwr (2 балла);
На обучающий этап под номером 115 выставлена новая задача от Baser (сложность 2 балла).
Второй этап теперь начинается с задачи 20.

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

Топик		Сообщений
108 (Learn)	13
202 (SELECT)	10
1 (Learn)		4
204 (SELECT)	4
780		4

 

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

Автор		Число сообщений
Pegoopik  	9
Avangard	9
qwrqwr  	8
Baser  		6
anddros  	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

 

§ Изменения среди лидеров (решенные за неделю задачи третьего этапа):
20. Pegoopik (203)
47. Oct (141)

§ Одна задача до третьего этапа осталась:
99. YuriPetrov (задач 147, время 30.682)

§ Новые лица в ТОР 100 и вернувшиеся туда:
99. YuriPetrov (147, 30.682)

§ Продвинулись в рейтинге:
100. BW (145, 681.552)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
103. Dmitry Varenikov (143, 452.520)
114. al29 (133, 110.383)
171. Boris Pankin (112, 8.503)
182. Eugene Pavlov (106, 11.808)
193. GANRIK (102, 72.724)
200. rock_4 (100, 60.154)

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

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

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

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1Филиппкин Д.В. (_dimon_)1226200245311721171.867108.0321732013-10-072013-11-01
2Бежаев А.Ю. (Baser)1226204245311257153.788134.9301732013-10-102013-11-01
3Курочкин П.А. (qwrqwr)1226202245311428220.273148.5331732013-10-082013-11-01
4Креславский О.М. (Arcan)1226204245312442219.621165.2471732013-10-092013-11-01
5Карасёва Н.В. (vlksm)1226200245312707216.668171.7021732013-10-112013-11-01
6Boiko D. (Angellore)12252032452822473071.1351609.1841702013-10-052013-10-26
7Сальников С.А. ($erges)1214-1124509205914.82211.9891532013-10-162013-11-01
8Яцук А.А. (Faust_zp)1199255244821985144.272108.8401372012-07-122012-07-30
9Кузнецов В.С. (herrRo)1184260234411170481.38873.3351222012-02-082013-06-18
10Дроздков А.Н. (anddros)5196-1124452193812.47211.0461042013-09-182013-11-01
11Дубинский А.В. (_yizraor)1184122244371088718.8041122.9071022012-11-052012-11-25
12Шиндин А.В. (AlShin)116025223395928408.897777.457992011-05-052011-05-21
13Тарасов Д.Б. (Gavrila)917732234172428151.46299.710952012-04-232012-05-25
14Орлов М.В. (Eagleoff)9164-323395952138.545106.466922011-11-102013-11-01
15Кукушкин С.А. (smog)1519420424428911260.240440.178912013-10-072013-10-31
16Зотов П.Г. (Ozzy)116213233901412213.968187.364832012-02-052013-09-27
17Держальцев В.А. (MadVet)3150100223672073143.64299.698812010-12-292011-09-26
18Гринкевич Д.Л. (Дмитрий Гринкевич)1818920224411750128.549259.148772013-10-302013-11-01
19Агапов В. (KERBEROS)117425324407240935.65327.703692013-04-022013-09-12
20Красовский Е.А. (Pegoopik)18187203244201208203.8917.249622013-10-282013-11-01

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1>Бравиков Д.Г. (Дмитрий Бравиков)8893746197101 Nov 2013
2Суворов Н.В. (Oswer)1024162238165930 Oct 2013
3>Павлов Е.А. (Eugene Pavlov)121062902918201 Nov 2013
4Карлеев С.А. (Lardos)41942428139801 Nov 2013
5Гладышева Н.В. (Надинка)0
01919370027 Oct 2013
6Shray (JustAStudent)0
01919370128 Oct 2013
7>Зайцев В.С. (Sleeping)8881601631601 Nov 2013
8>Куанчалеев А.Б. (Avangard)9581401495101 Nov 2013
9Майоров Д.А. (Majoroff)01201414203501 Nov 2013
10Ганеев Р.Р. (GANRIK)61021301319301 Nov 2013
11Petrov Y. (YuriPetrov)4147120129931 Oct 2013
12Симакин В.А. (Rybak)9471201299530 Oct 2013
13Шарапудинов Ш.И. (shomik)83312012206530 Oct 2013
14Щербань М.М. (mery_evans)101312012392931 Oct 2013
15Перминова С.В. (Svetik21)0
01212444325 Oct 2013
16Симакова Л.Н. (SimakovaLN)0
01111457831 Oct 2013
17>Масляев В.С. (Velmont)7581001064201 Nov 2013
18>Deryugina I. (tegra)6661001083601 Nov 2013
19Иванов (vasil19671)0901010358331 Oct 2013

Изучаем SQL

Конструктор значений таблицы

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

Конструктор значений таблицы имеет следующий синтаксис:

VALUES
(<элемент конструктора>, <элемент конструктора>, ...),
(<элемент конструктора>, <элемент конструктора>, ...),
 ...
(<элемент конструктора>, <элемент конструктора>, ...)

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

Конструктор значений таблицы может использоваться для вставки набора строк в существующую таблицу с помощью одного оператора INSERT.

Создадим следующую таблицу для выполнения примеров:

CREATE TABLE Items (
item_no INT PRIMARY KEY,
maker CHAR(10),
type CHAR(10) DEFAULT 'PC',
value INT
);

Вставим в таблицу 4 строки, используя конструктор.

INSERT INTO Items VALUES
(1, 'A', 'Laptop', 12),
(2, 'B', DEFAULT, NULL),
(3, 'C', 'Printer', (SELECT CAST(model AS INT) FROM Printer WHERE code=1)),
(4, 'C', 'Printer', (SELECT CAST(model AS INT) FROM Printer WHERE code=77));

SELECT * FROM Items;

item_no maker   	type    	value  
1	A         	Laptop    	12
2	B         	PC        	NULL
3	C         	Printer   	3001
4	C         	Printer   	NULL

Последнее значение в двух последних строках было получено с помощью подзапроса, который возвращает либо одно значение (поскольку выполняется отбор по ключу) с номером модели из таблицы Printer, либо ни одного. Последнее имеет место для четвертой строки, поскольку коду 77 не отвечает никакая строка таблицы Printer. В этом случае будет записано NULL-значение.

Конструктор значений таблицы может использоваться также в предложении FROM. В параграфе, посвещенном генерации числовой последовательнсти, последний пример, который находит 100 последовательных незанятых номеров моделей, с учетом этой возможности можно переписать более компактно:

SELECT (SELECT MAX(model)
    FROM Product
    ) + 5*5*(a-1) + 5*(b-1) + c AS num
    FROM
    (VALUES(1),(2),(3),(4),(5)) x(a) CROSS JOIN
    (VALUES(1),(2),(3),(4),(5)) y(b)  CROSS JOIN
    (VALUES(1),(2),(3),(4),(5)) z(c)
    WHERE 5*5*(a-1) + 5*(b-1) + c <= 100
    ORDER BY 1;

Еще один пример использования конструктора значений таблицы для трансформации строки в столбец можно увидеть в главе, посвященной оператору CROSS APPLY.

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

§ В настоящее время для решения упражнений на сайте используются следующие СУБД: SQL Server 2012 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"

В избранное