Главная » Просмотр файлов » Программирование баз данных MS SQL Server

Программирование баз данных MS SQL Server (1084479), страница 68

Файл №1084479 Программирование баз данных MS SQL Server (Программирование баз данных MS SQL Server) 68 страницаПрограммирование баз данных MS SQL Server (1084479) страница 682018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 68)

Длл данного конкРезаного запйоса кеооходимо использовать клю меое слово 01Я Т1ИСТ. В п~ютивном случае не была бы исключена возможность получения многочисленных стасюк, откоса)Нихсч к каждому заказчику. НапУ)имер, компания Егия С Напбе1 заказывала това)з (гербе-яргеас( дваждьь поэтому было бы пазучено по однт1 ст)зоне длл каждого заказа. А по условиям рассматриваемой задачи необходимо оп[)едезить, какие заказчики заказали и тот, и другт1 товар, а ке количество сделанных ими заказов. Вполне очевидно, что с помощью производных таблиц удалось сформировать запрос, задача составления которого на первый взгляд казалась невозможной, и не только получить нужную информацию, но даже добиться вполне приемлемой производительности.

Но следует учитывать, что производные таблицы не позволяют решать все возможные задачи. Например, если результирующий набор становится довольно большим и количество строк, участвующих в операции соединения, достигает больших величин, то может потребоваться создать временные таблицы и сформировать на них индексы (производные таблицы не имеют индексов). Безусловно, возможность применения тех или других инструментальных средств зависит от ситуации, но, во всяком случае, производные таблицы позволят вам значительно расширить свой арсенал инструментальных средств.

Дополнительные сведения о запросах 267 Операция е~~8~8 ЯЕЬЕСТ Спввоеег1О, Соерапунаее РВОМ Спвсоаегв сп ИНЕВЕ ЕХ1ЯТБ (БЕЬЕСТ Огбегто РВОМ Огбегв о ИНЕВЕ о.спвсоеегтп = сп.спвгоеег1О) Выполнение этого запроса приводит к получению тех же 89 строк. которые были неоднократно получены в различных примерах этой главы: СоярапуИаее Спввожег1О А1тгебв РпввегКЬвсе Апа Тгп1111о Еерагедабов у Ье1абов Апсопто Могепо Таяпегта Агоппб ГЬе Ноге Вегд1ппбв впаЬЬХор В1апег Яее Ое11Аагеввеп АЬРК1 АМАТЕ АВТОИ АРООТ ВЕРЕЯ ВЬАОЯ ИЬЬСе С1огег Магкегв И11еап Ка1а Ио1ват Ба)агб ИН1ТС И1ЬМК ИОЬЗА (Б9 гое(в) аттесвеб) Очевидно, что такую же задачу можно было бы легко решить с помощью соединения: БЕЬЕСт Отзттнст сп.с Г егтп, с .Соерапун е РВОМ Спвсоеегв сп ЮО1И Огбегв о ОИ сп.спвсотег1О = о.спввоеег1Р В частности, применение указанного синтаксиса, основанного на использовании операции соединения, привело бы к получению точно таких же результатов (не считая возможных различий, вызванных другим порядком сортировки).

Поэтому напра- Автор рассматривает ЕХТБТЯ как операцию, но в документации Воо)св ОО11пе для обозначения ЕХТБТБ применяется лишь термин "ключевое слово". По-видимому, применение указанной трактовки обусловлено тем, что ЕХ1ЯТЯ не полностью соответствует определению понятия операции.

Разумеется, ЕХ1ЯТЯ в такой же степени заслуживает названия "операция", как и операция, обозначаемая ключевым словом 1И, но нельзя также отрицать, что обработка данных в ней происходит во многом иначе. При использовании операции ЕХ1ЯТБ возврат данных фактически не происходит. Вместо этого вырабатывается значение ТВЫЕ или РАЬЯЕ, указывающее на то, существуют ли данные, которые соответствуют критериям, заданным в том запросе, на который распространяется действие операции ЕХ1ЯТЯ. Перейдем непосредственно к рассмотрению примера, позволяющего ознакомиться с тем, как применяется эта операция. В данном случае речь идет о таком запросе, с помощью которого формируется список заказчиков, разместивших в компании по мень. шей мере один заказ (общее количество размещенных заказов нас не интересует): 268 Глава 7 ОЯЕ МогСЬв1пе БЕЬЕСТ с.спяеовег1О, Соврапуиаве ГНОМ Спяговегя с ЬЕГТ ОСТЕН д01М Огс(егя о ОМ с.спяговег1О = о.Спясовег1О НБЕНЕ о.Спясовег1О 1Я МСЬЕ Этот запрос возвращает две строки.

А чтобы добиться такого же изменения состава полученных результатов при использовании операции ЕХ1ЯТЯ, достаточно добавить только одно ключевое слово— МОТ: БЕАЕСТ Спясовег1О, Соврапунаве ГНОМ Спясовегя сп МНЕНЕ МОТ ЕХ1БТБ (ЯЕЬЕСТ Огоеггс ГНОМ Огс)егя о МНЕРЕ о.епяговег1О = сп.спясовег1О) Выполнение этого оператора приводит к получению тех же двух строк: Спяговег1О Совряпуиаве Г1ББА Гаьгуса 1пгег.

Яа1сьтсЬая Я.А. Ряг1я яресТа11гея Г1ББА РАН15 (2 гок(я) аггесгес() Различие в производительности в данном случае становится еще более заметным по сравнению с внутренним соединением. Дело в том, что при выполнении оператора с ключевым словом МОТ в СУБД ЯОЕ Яегуег применяется операция отрицания к результатам той же операции ЕХ15Т5. И несмотря на то, что теперь используются не сами полученные результаты, а их отрицание, СУБД ЯОЕ Яегуег по-прежнему шивается резонный вопрос, с чем связана необходимость в использовании этого нового синтаксиса.

Ответ на этот вопрос весьма прост — с потребностями повышения производительности. Если в запросе используется ключевое слово ЕХТБТБ, то СУБД ЯЯЕ Яегуег не приходится выполнять полное построчное соединение. Вместо этого СУБД просматривает строки до тех пор, пока не находит первое соответствие, после чего немедленно останавливается. Дело в том, что операция ЕХ15ТЯ возвращает истинное значение сразу после обнаружения первого соответствия, поэтому необходимость в выполнении дальнейшего просмотра отпадает. Рассмотрим кратко ту же ситуацию под другим углом зрения. Предположим, что необходимо найти с помощью запроса информацию о тех заказчиках, которые не разместили в компании ни одного заказа.

В соответствии с тем методом, который был основан на использовании соединения (см. главу 5), потребовалось бы внести весьма существенные поправки в тот подход, с помощью которого получается требуемый ответ. Прежде всего нужно было бы воспользоваться не внутренним соединением, а внешним, затем применить операцию сравнения, чтобы определить, содержат ли какие-либо строки с данными о заказах АПЛ.)=значения. Таким образом, запрос, основанный на использовании соединения, выглядит следующим образом: Дополнительные сведения о запросах 2б9 прекращает просмотр сразу же после обнаружения одной строки, соответствующей условию.

Единственное различие состоит в том, что условием прекращения просмотра становится возврат нз операции сравнения значения ГАЬБЕ, а не ТЕРЕ. Во всем остальном, кроме производительности, запрос с конструкцией НОТ ЕХ1БТЯ не отличается от запроса с внешним соединением. Другие способы использования конструкции ех~Зт8 Одним из широко применяемых способов использования конструкции ЕХ1БТБ является проверка существования таблицы перед вызовом на выполнение оператора ее создания. На основании результатов такой проверки может быть предусмотрено уничтожение существующей таблицы или внесение изменений в существующую таблицу с помощью оператора АЬТЕЕ либо какого-то другого.

Чаще всего применяется примерно такой способ осуществления указанного действия: 1Р ЕХ1ЯТЯ (ЯЕЬЕСТ * РВОМ яуяпп]еспя ННЕНЕ Ьб = оЬ)есг Ьб(М [бпо).(ЯНТррегя)') АНР ОВЗЕСТРНОРЕНТТ(1б, Н'Тяпяегтяь1е') = 1) РРРР ТАВ1.Е (бпо].[ЯП1ррегя) 60 СНЕАТЕ ТАВЬЕ [бьо).(ЯАТррегя] ( [ЯВЬррег10) (Ьпг) 1РЕМТ1ТУ (1, 1) НОТ МОЬЬ, [Соарапукаае] (пчагсьаг] (40) НОТ НОЬЬ, (Рьопе) (пчагсьаг] (24) МОЬ1. ) 60 Очевидно, что операция ЕХТЯТЯ не должна возвращать какого-либо иного значения, кроме ТЕРЕ нли ГАЬЯЕ, а это означает, что данная операция может стать основой очень удобного условного выражения.

В предыдущем примере было показано, что оператор РАЗОР ТАВ1,Е вызывается на выполнение, только если создаваемая таблица уже существует; в противном случае данная часть сценария исключается и происходит переход непосредственно к оператору СНЕАТЕ. Это позволяет предотвратить возникновение в ходе выполнения сценария следующих двух ошибок.

Во-первых, исключается возможность неудачного завершения попытки выполнения оператора СНЕАТЕ в связи с тем, что создаваемый в нем объект уже существует (а такое неудачное завершение могло бы привести к возникновению других проблем, если операция создания таблицы входит в состав сценария, где должны быть созданы другие таблицы, зависящие от успешно созданной первой таблицы). Во-вторых, неудачно завершилась бы попытка уничтожения таблицы с помощью оператора РРРР, поскольку зта таблица еще не существуег (хотя такая ошибка не приводит к каким-либо неприятным последствиям, кроме выработки сообщения, которое может лишь смутить заказчика, устанавливающего у себя ваш программный продукт).

Таким образом, применение операции ЕХ1ЯТЯ позволяет предотвратить возникновение обеих ошибок. Итак, операция ЕХ1ЯТЯ может успешно применяться для автоматизации многих действия по сопровождению базы данных. В качестве еще одного примера применения указанной операции для данной цели рассмотрим сценарий СЕЕАТЕ, предназначенный для создания такого объекта, о котором часто забывают, разрабатывая средства автоматизации сопровождения, — самой базы данных. В документации этап создания базы данных часто отражается как часть не совсем понятных указаний, в которых содержатся примерно такие фразы, — "создайте базу данных ' хххх ' ".

Характеристики

Тип файла
PDF-файл
Размер
39,07 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее