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

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

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

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

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

Дело в том, что, определяя способ компоновки материала для книги об ЯОЕ Яеггег, приходится думать, о чем рассказать раньше, о "курице" или о "яйце", — описать вначале проблематику составления сценариев, выбора переменных и раскрыть тому подобные темы или сразу же приступить к описанию операций, с которыми относительно неопытные пользователи могут начать работу задолго до того, как приступят к написанию серверных сценариев. В конечном итоге бьшо решено в первую очередь уделить больше внимания запросам. До начала изучения понятий, изложенных в данной главе, читатель должен подготовиться к тому, что ему придется столкнуться с новым способом мышления, поскольку речь фактически пойдет об операциях с множествами.

Определенное представление об этом вы уже могли получить, знакомясь с тем, что было сказано в предыдущих главах в отношении соединений, а в настоящей главе указанный подход еще болыпе расширяется и углубляется. При использовании подхода, основанного на процедурном программировании, обработка данных происходит совсем иначе, но даже если разработчик не привык организовывать свою работу исключительно на основе процедурного программирования, остается фактом неизменное свойство любого человека — разбивать сложные задачи на меньшие подзадачи (логические этапы, которые можно сравнить с подпрограммами), а не использовать комплексный подход и рассматривать все обрабатываемые данные как единое целое (как "множество"), руководствуясь тем подходом, который принят в языке ВО1..

Безусловно, в версии ЯЯ). Беггег 2005 обеспечивается более широкая поддержка концепций процедурных языков, но автор призывает в первую очередь постараться 252 Глава 7 освоить комплексный подход к решению задач. Не следует думать, что для этого достаточно изучить один-два запроса. Тем не менее даже если такой подход не удается освоить сразу, часто возникает возможность вначале применить для решения задачи несколько меньших запросов, а затем постепенно соединить их в единый, более крупный запрос, позволяющий непосредственно решить всю задачу.

Итак, попытайтесь в первую очередь найти решение всей задачи в целом, а если этого не удается сделать, не отступайте, разбивайте ее на меньшие подзадачи, а затем снова соединяйте этапы решения в единое целое, продолжая эту работу до тех пор, пока она остается оправданной. Именно этот подход лежит в основе "нового способа мышления", который предлагает освоить автор, — стремление найти способ решения всей задачи в целом, а не разбивать решение на этапы. Составляя программы на большинстве языков программирования, обычно требуется действовать в линейной последовательности, а при использовании языка БЯЬ чаще приходится мыслить в терминах теории множеств. Дело в том, что многие операции в языке БЯЬ практически полностью соответствуют операциям теории множеств, таким как объединение множеств (Д ппьоп Е) или пересечение множеств (А Епгегэесг Е).

Программирование на языке БОЬ в большей степени требует поиска тех признаков в данных, которые бы позволили применить к ним операции комплексной обработки, чем подготовки этапов пошаговой обработки данных. Таким образом, в основе операций, выполняемых с помощью языка ЯОЬ, лежит понятие общности атрибутов в множествах данных.

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

П Вложенные подзапросы. Ю Связанные подзапросы. П Производные таблицы. й Использование операции ЕХ1БТЯ. П Оптимизация производительности запросов. Кроме того, в этой главе будет показано, как можно с помощью подзапросов решать задачи, которые на первый взгляд кажутся полностью неподдающимися решению, и насколько может измениться производительность запросов из-за небольших корректировок в отдельных конструкциях запросов, которые с виду кажутся незначительными.

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

О Разбивка запроса на последовательность логических этапов. сл Составление списка, который вкладывается в конструкцию ннеее с помощью ключевого слова 11ч, ЕХТЯТЕ, АМт или я1,Е. Создание поисковой таблицы, соответствующей каждой отдельной строке в родительском запросе. Чаще всего подзапрос можно разработать и создать очень легко, но иногда задача составления подзапроса становится чрезвычайно трудоемкой. Как правило, степень сложности задачи подготовки подзапроса зависит от того, насколько нетривиальной является связь между внутренним запросом (подзапросом) и внешним запросом (главным запросом). Следует также отметить, что вместо большинства операторов с подзапросами (но это определенно не относится ко всем таким операторам) вполне возможно применить операторы с соединениями.

Причем в тех случаях, когда действительно можно использовать соединения, именно такой способ организации работы является предпочтительным. Автлфу однажды пуисшлось вступить в довольно п)тодалжительный сиф со своим сотфудником (п)ти этом в течение нескольких дней п(тоизошел обмен иочти что тремя десятками писем по ззек пфонной почте с и(тимфами, доводами и т д ). Этот сиф возник по поводу того, какими фаенительними преимутуеаивоми и недостатками обладают соединения и подзон)тосьь В соотяветствии с т(тадиуиями, сложившимися в феде пользователей языка 5~1 при любой возможности следует всегда использовтпь соединения, и я отстаивал именно эту точку фения (исходя из своего опыта, а не сложившихся т(тадиуий' читатель уже, вфоятно, заметил, что в некоторъгх местах данной кнтсга была подчфкнута мьюль, что т(тадиуионные взгляды могут оказаться ошибочными).

С фугой сто(тоны, мой сот(тудник стремился доказать, что фактически для выполнения подзапросов требуется меныяе издфжек. В конечном итоге бъою Решено п)товфить обоснованность тех и фугах утвфждений на практике. Как и следовало ожидать, палученнъ~е )ттультаты показали, что в различных обстоятельствах становится оправданным либо то, либо фузее мнение. Более иофобно о том, каковыми являю тася эти обстоятельспюа, будет сказано ближе к кон уу данной главы, после изложения всех необходимых для этого сведений. Итак, после теоретического знакомства с тем, что представляют собой подзапросы, рассмотрим некоторые конкретные типы подзапросов и примеры их применения. Создание вложенных подзапросов Вложенным подзапросом является такой подзапрос, который выполняет исключительно однонаправленное действие — возвращает либо единственное значение, предназначенное для использования во внешнем запросе, либо, возможно, полный список значений, которые предназначены для использования в операции 1Е.

В том случае, если требуется обеспечить осуществление явно заданной операции сравнения на равенство, "=", приходится применять такой подзапрос, который возвращает единственное значение, иными словами, значение одного поля одной строки. Если же предполагается, что подзапрос должен возвратить список значений, то в сочетании с внешним запросом должна использоваться операция 1Е.

254 Глава 7 Не вдаваясь в подробности, можно отметить, что синтаксическая конструкция запроса с вложенным подзапросом должна выглядеть примерно так, как показано в двух следующих примерах синтаксиса: яеьест <яеьест Ьтзг> РВОМ <ЯоветаЫе> ННЕВЕ <яовесо1п > = ( ЯЕЬЕСТ <зьп91е со1пвп> РВОМ <яоветаЫе> ннеВН <сопб1с1оп спас гезп1сз 1п оп1у опе гои геспгпеб>) ЯЕЬЕСТ <БЕЬЕСТ 11зс> РВОМ <яоветаЫе> ННЕВЕ <Яовесо1пвп> 1Н ( ЯЕЬЕСТ <зап91е со1пвп> РВОМ <яоветаЫе> [ННЕВЕ <сопб1С1оп>)] Безусловно, синтаксическая конструкция практически применяемых операторов может выглядеть немного иначе.

Это связано не только с тем, что могут изменять. ся списки выборки и уточняться имена таблиц, но и может быть также обусловлено тем, что во внешнем или внутреннем запросе, а также в обоих запросах может применяться соединение нескольких таблиц. Запросы с вложенными подзапросами, в которых исполызуютсв операторы зктлСт, возвращающие единственные значения БЕЬЕСТ 015Т1НСТ о.огбегпаге, об.Ргобпсг10 РВОМ Огбе о ЮО1М [Огбег Оега11з] об ОН о.огбег10 = об.огбег10 ННЕВЕ ОгбегОасе = '7/4/1996' — Ято — первая дата заказа, Огбегпзсе, з системе Выполнение этого запроса приводит к получению правильных результатов: Огбегпаге Ргобесс10 1996-07-04 00:00:00.000 1996-07-04 00:00:00.000 1996-07-04 ОО:00:00.000 11 42 72 (3 гом(з) абгесгеб) Приступим к изучению нюансов использования подзапросов на конкретном примере. Предположим, например, что требуется определить идентификаторы РгобпсС10 всех товаров, проданных в первый день после того, как любой товар был куплен в данной торговой системе.

Если уже известно, каковым является тот первый день, когда в системе был введен заказ, то проблема не возникает; достаточно применить запрос, который выглядит примерно таким образом: Дополнительные сведения о запросах 255 Но предположим для примера, что в данной системе регулярно удаляются устаревшие данные, но остается потребность в поиске ответа на тот же вопрос для составления автоматизированного отчета. Итак, перед нами стоит задача автоматизации работы, поскольку нельзя предусмотреть выполнение запроса для определения того, за какую первую дату имеются данные в системе, после чего вручную включить полученную дату в следующий запрос.

Тем не менее возможность автоматизации выполнения этой операции не исключена. Для этого достаточно применить следующий единственный оператор: ЯЕЬЕОт 01ят1НСт о.огбегоясе, об.ггобпос10 ГНОМ Огбегя о 301М )Огбег Оесз11я) об ОН о.сгбег10 = об.сгбег10 ИНЕНЕ о.сгбегоясе = )ЯЕЬЕСт Н1Н)огбегояге) ГНОН Огбегя) Как оказалось, решение является простым и удобным. С помощью внутреннего запроса, (ЯЕЬЕСТ М11)...

), осуществляется выборка единственного значения, предназначенного для использования во внешнем запросе. Кроме того, поскольку в качестве операции сравнения задана операция сравнения на равенство, необходимо обеспечить, чтобы внутренний запрос возвращал значение только единственного поля одной строки, поскольку в противном случае возникает ошибка этапа прогона.

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

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

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

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