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

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


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

SQL Exercises

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

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

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

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

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


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

§ Исправлен последний замеченный баг, связанный с графиком оценки стоимости запросов-решений.

§ Добрался до третьего этапа PavelPS (задач 138, время 4.734), занимающий пока 16 место.
На подходе Arcan (137, 7.227) и wasp (136, 76.184).

§ Новые лица в сотне не появились.

§ Продвинулись в рейтинге:
Julia_M (136, 97.814)
Aladdin (134, 15.019)
raul (124, 16.102)
safervas (128, 143.319)
15th (121, 10.405)
Онуфрий Голохвастов (120, 49.272)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Агапов В. (KERBEROS) 141 141 20 333 89 6.183 1.262 11 20 Nov 2006 06 Mar 2007
2 Солдатенков Ю.С. (SolYUtor) 141 141 20 333 265 17.216 2.517 11 07 Feb 2007 09 Mar 2007
3 Кувалкин К.С. (Cyrilus) 141 141 20 333 746 12.417 2.519 11 10 Dec 2006 09 Mar 2007
4 Карасёва Н.В. (vlksm) 141 141 20 333 196 27.850 2.710 11 18 Nov 2006 09 Mar 2007
5 Мурашкин И.В. (lepton) 141 141 20 333 240 14.865 4.724 11 18 Nov 2006 08 Mar 2007
6 Зверев Д.Л. (dimzv) 141 141 20 333 1141 9.324 4.938 11 19 Dec 2006 22 Dec 2006
7 Голубин Р.С. (Roman S. Golubin) 141 141 20 333 457 54.984 33.803 11 18 Nov 2006 09 Mar 2007
8 Войнов П.Е. (pаparome) 140 140 20 329 489 2.738 .049 7 26 Dec 2006 09 Mar 2007
9 Тарасов Д.Б. (Gavrila) 140 140 20 329 466 20.242 .513 7 05 Dec 2006 09 Mar 2007
10 Мальцев А.В. (Палкин) 140 141 20 329 145 27.557 7.373 7 09 Jan 2007 03 Mar 2007
11 Васьков Е.В. (Johan) 140 140 20 329 124 12.713 11.402 7 20 Nov 2006 08 Mar 2007
12 Валуев Д.И. (Fiolent) 139 140 20 326 1188 117.017 62.302 4 05 Dec 2006 09 Mar 2007
13 Юлдашев М.Р. (Snowbear) 139 139 20 325 546 4.113 .000 3 15 Jan 2007 08 Mar 2007
14 Держальцев В.А. (MadVet) 138 139 20 324 540 34.249 3.085 3 08 Oct 2006 19 Oct 2006
15 Палий С.А. (PS_Sergey) 139 139 20 325 212 15.756 4.188 3 01 Dec 2006 03 Dec 2006
16 Шептунов П.П. (PavelPS) 138 138 20 322 66 4.734 .000 0 03 Mar 2007 09 Mar 2007
17 Салимов Д.М. (Damirishe) 138 138 20 322 156 11.263 .000 0 24 Feb 2007 07 Mar 2007
18 Бородкина М.И. (marishkin) 138 138 20 322 67 15.105 .000 0 22 Jan 2007 21 Feb 2007
19 Утёнков М.Н. (=Maxim=) 138 138 20 322 200 24.998 .000 0 19 Nov 2006 08 Feb 2007
20 Slobodcicov A.N. (Testo) 136 138 20 319 337 7.171 .000 0 25 Aug 2006 10 Nov 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Северюхин Ю.А. (Venser) 78 78 150 32 182 284 09 Mar 2007
2 Воротников М.С. (michael_vorotnikov) 44 44 79 32 111 921 09 Mar 2007
3 >Эстис В.В. (Interrupt) 43 43 70 23 93 1354 09 Mar 2007
4 >Труфанов А.Н. (TruF) 29 69 57 32 89 380 09 Mar 2007
5 Чернышев (Вячеслав) 42 42 75 0 75 1801 05 Mar 2007
6 Ян К.М. (s_zoid) 35 42 69 3 72 1693 04 Mar 2007
7 >M (dilshatka) 40 40 70 0 70 2000 09 Mar 2007
8 >Казазаев А.М. (J2k) 38 38 69 0 69 2026 09 Mar 2007
9 Schecter S.S. (Schec) 40 40 67 0 67 2084 08 Mar 2007
10 Назарова О.В. (jkmuf) 36 36 64 0 64 2203 07 Mar 2007
11 Bogdanov (CrazyTiger) 26 36 60 2 62 1738 05 Mar 2007
12 Мамонов Д.Н. (feihc) 34 34 60 1 61 2337 06 Mar 2007
13 Dmytryshyn B. (bohdan) 29 44 60 0 60 1759 07 Mar 2007
14 Хабипов Р. (myster) 28 43 59 0 59 1776 07 Mar 2007
15 >D I.G. (Irina_) 33 33 58 0 58 2487 09 Mar 2007
16 >Бехтерев Д. (trionix) 30 30 55 0 55 2695 09 Mar 2007
17 >Bazhenov K. (kstin) 25 44 51 3 54 1675 09 Mar 2007
18 Соколов (sir_derryk) 17 57 34 19 53 749 09 Mar 2007
19 К (drovosek) 26 33 52 0 52 2457 07 Mar 2007
20 >Стольников (alexeyst) 28 28 49 0 49 2993 09 Mar 2007
21 Zubkova (Lilia123) 33 33 48 0 48 3109 05 Mar 2007
22 Wong J.H. (johnwong) 27 27 46 1 47 3142 07 Mar 2007
23 Piskun A.B. (pab) 28 28 47 0 47 3144 06 Mar 2007
24 Loran (Loran) 23 23 44 0 44 3283 05 Mar 2007
25 >A (mcwhite) 26 26 43 1 44 3295 09 Mar 2007
26 Polkovnikov S. (Slemin) 25 25 40 0 40 3530 06 Mar 2007
27 Ivanova (ptaxa) 25 25 40 0 40 3546 06 Mar 2007

Изучаем SQL

Изменение контекста выполнения в SQL Server 2005 (окончание, начало в вып.129)

Tim Chapman (оригинал: Modifying execution context in SQL Server 2005)
Перевод Моисеенко С.И.

В SQL Server 2005 схема уже не трактуется как пользователь базы данных; это - совершенно отличное пространство имен, служащее контейнером объектов. Разделение пользователя и схемы - хорошее дело, поскольку это делает владение объектами передаваемым и намного более просто управляемым по сравнению с SQL Server 2000. Следующий оператор создает схему, которую я буду использовать для примера:

CREATE SCHEMA [TableOwnerSchema] AUTHORIZATION [TableOwner]

GO

Чтобы использовать логины, разрешу их:

ALTER LOGIN [TableOwner] ENABLE

ALTER LOGIN [BaseUser] ENABLE

GO

GRANT CREATE TABLE TO TableOwner

GO

Сначала я использую команду EXECUTE AS. Этим я устанавливаю текущий контекст выполнения на контекст TableOwner. После выполнения этой команды все оценки разрешений будут выполняться для этого TableOwner; предыдущие привилегии sysadmin не будут применяться.

EXECUTE AS USER = 'TableOwner'

GO

Выполните следующий оператор, чтобы увидеть, что текущий контекст выполнения является контекстом TableOwner:

SELECT SESSION_USER

GO

Следующий скрипт создает таблицу MyTable в схеме TableOwnerSchema. TableOwner имеет разрешение выполнить этот оператор, поскольку ранее я предоставил этому пользователю разрешения CREATE TABLE.

CREATE TABLE TableOwnerSchema.MyTable
(
    Field1 INT
)

GO

Когда я выполняю следующий оператор REVERT, я отступаю на один шаг назад в цепочке контекста выполнения. В SQL Server 2005, контекст выполнения может быть вложенным, поэтому, если Вы работали под несколькими различными пользователями в одном и том же подключении, Вам, возможно, потребуется выполнить этот оператор несколько раз, чтобы вернуться к вашему контексту исходного логина.

REVERT

GO

SELECT SESSION_USER

GO

Теперь я выполню оператор select для выборки из нашей новой таблицы, чтобы удостовериться, что она существует:

SELECT * FROM TableOwnerSchema.MyTable

GO

Следующий скрипт создает процедуру, которая будет выполнять вставку в новую таблицу TableOwnerSchema.MyTable. Обратите внимание, что я использую оператор WITH EXECUTE AS 'TableOwner' в определении процедуры. Это означает, что когда процедура выполняется, она будет всегда выполняться в контексте TableOwner.

CREATE PROCEDURE usp_InsertMyTable

WITH EXECUTE AS 'TableOwner'

AS
BEGIN
INSERT INTO TableOwnerSchema.MyTable(Field1)VALUES(8)

END

GO

Я могу предоставить разрешения на выполнение этой хранимой процедуры учетной записи пользователя. Здесь я использую предварительно созданную учетную запись с именем BaseUser.

EXECUTE AS USER = 'BaseUser'

GO

EXEC usp_InsertMyTable

GO

Мне удалось вставить запись в таблицу TableSchema.MyTable, потому что контекст выполнения TableOwner в процедуре позволяет мне делать это. BaseOwner не имеет явных разрешений на вставку в эту таблицу, в результате любая его попытка сделать это приведет к ошибке. Для иллюстрации сказанного выполните следующий скрипт, который изменит нашу процедуру так, чтобы она исполнялась в контексте выполнения того, кто вызывает процедуру.

REVERT

GO

ALTER PROCEDURE usp_InsertMyTable

AS
BEGIN
INSERT INTO TableOwnerSchema.MyTable(Field1)VALUES(8)

END

GO

EXECUTE AS USER = 'BaseUser'

GO

EXEC usp_InsertMyTable

GO

REVERT

Разработчики или администраторы баз данных найдут для себя очень полезным иметь возможность переключить контекст разрешения, в котором выполняются процедуры. Это может быть особенно удобным, когда Вы имеете дело с оператором TRUNCATE TABLE, который не имеет присваиваемых разрешений. Вы могли бы переключить контекст в вашей процедуре на пользователя, который имеет разрешение выполнять усечение целевой таблицы, и затем вернуться назад к предыдущему набору разрешений.

12-02-2007

Работа

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


Looking for a strong MySQL DBA/programmer with solid English skills to work remotely for a company in San Francisco, California. Email and AIM would your communication tools.
We are a game development company, please look at our Web site http://www.iwin.com.
Please send me your resume in confidence using the following email:
mplotkin@iwin.com.
Thank you.

Michael Plotkin
Senior Director of Engineering
iWin.com

Так что посылайте резюме, коллеги, если вас заинтересовало это предложение.

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

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

§ В продаже еще имеется книга SQL. Задачи и решения, посвященная анализу ошибок, допускаемых при решении задач первого этапа. На сайте издательства Питер можно сделать заказ и познакомиться с содержанием.

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

Контакты

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

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

В избранное