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

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

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

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

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

При этом весьма удобно то, что задача переупорядочения столбцов является чрезвычайно простой, — достаточно просто явно задать эти столбцы. Еще более простым является способ изменения порядка следования столбцов, согласно которому изменяется последовательность указания самих таблиц, но фактически мы можем изменять порядок столбцов как угодно, явно указывая, какие столбцы должны исгюльзоваться для формирования результирующего набора (даже если при этом потребуется указать каждый столбец), а также задать порядок, в котором должны быть представлены эти данные. Применение простой конструкции готы Рассмотрим неболыпой запрос, который позволяет ознакомиться с особенностями конструкции Т01М: ЯЕЬЕСТ Р.Ртобист1О, я.Япрр1тет10, р.Ртобистнаве, я.ооврапукаве РЕОИ Ртобсстя р 1ИИЕЕ 001Н Япрр1тетя я ОИ р.эирр11ет10 = я.эирр1тет10 ННЕЕЕ р.р сбпст10 < 4 Соединения 129 Выполнение этого запроса приводит к получению довольно простого результирующего набора: Зоррзуеггп Ргопосг1В Сотраоукапе Ргооооскапе Ехоозо ЬЬЧозбз Ехоозо Ь1Чозпз Ехогзс ЬЕЧиЬоз Свау Спавши Апгэееп Бугор (3 гоэ(з) аггеооесц Описание полученных результатов В отличие от тех примеров, в которых не были даны конкретные указания в отношении того, какие столбцы должны присутствовать в полученных результатах (поскольку использовался просто подстановочный символ *), на этот раз необходимые столбцы указаны конкретно, поэтому СУБД оЦЬ Белет получила возможность однозначно определить, что нам требуется, — данные столбцов выведены точно в таком "Р"" РЕ~ " "" ~Р"".

Общие свойства конструкции 1ЫЫЕа ЮОАНН и конструкции %НЕВЕ До сих пор при описании особенностей конструкции 1ИИЕК Ю01И фактически затрагивались только те концепции, которые применимы к соединениям любых других типов, поскольку принципы определения порядка расположения столбцов в результирующем наборе и применения псевдонимов являются полностью одинаковыми для конструкций 001Ы любых типов. А то, в чем конструкция 1ЕМЕР,,Т01И отличается от конструкций Ю01Е других типов, является создание с ее помощью исключительного соединения, т.е. соединения. в котором исключены все строки, не имеющие определенного значения в обеих таблицах (в левой жабаиид как называют таблицу, указанную в первую очередь, и в тфалой табзикд заданной во вторую очередь).

Первый пример проявления этого свойства можно обнаружить по результатам применения конструкции 1ММЕЕ 001И к воображаемым таблицам Г11жз и Лсгогз. В результаты не вошла строка с данными об актере Водеу, поскольку в таблице Г11тз не бьш указан соответствующий фильм с участием этого актера. А теперь рассмотрим несколько более реальных примеров того, как проявляется это свойство.

Допустим, что имеется таблица Спзгопегэ, в которой собраны все данные об именах и адресах заказчиков. Но наличие большого списка заказчиков компании отнюдь не означает, что в текущий момент компанией действительно выполняются заказы, полученные от всех заказчиков. Фактически можно смело предположить, что в текущий момент имеются такие заказчики, которые не разместили в компании ни одного заказа. Запросы предназначены для выборки требуемой информации. В начале данной главы рассматривались такие информационные потребности, для удовлетворения которых требуется применение в запросе конструкций 1ИИЕР, З01И, а в этом разделе будет показано, что даже небольшое изменение характера искомой информации влечет за собой необходимость перейти к использованию конструкций З01Е других типов.

130 Глава 4 Например, коммерческий директор может задать администратору базы данных такой вопрос: "Можете ли вы предоставить информацию обо всех заказчиках, заказы которых выполняются в настоящее время?" На этот вопрос можно смело ответить: "РазумеетсяГ', после чего приступить к проектированию структуры будущего запроса. Итак, что нам требуется? Коммерческий директор задал вопрос, касающийся и заказчиков, и заказов, поэтому примем предположение, что для получения этой информации должны использоваться обе таблицы.

Далее, коммерческому директору требуется только список заказчиков, поэтому в запросе должен быть упомянут столбец СоарапуМаме, а также, возможно, столбец Сиясомег1Р. Следует отметить, что, безусловно, потребуется включить в запрос и таблицу Огс(егя, чтобы можно было узнать, бьио ли что-либо заказано тем или другим заказчиком или нет, но из этой таблицы не требуется возвращать какие-либо данные для дальнейшего использования (именно поэтому в приведенном ниже операторе эта таблица отсутствует в списке выборки).

В вопросе коммерческого директора речь идет о том, что должен быть получен список заказчиков, разместивших в компании свои заказы, поэтому для ответа на данный вопрос требуется найти решение, в котором рассматривались бы и строки таблицы Спясовегя, и строки таблицы Огс(егя. Как уже было сказано, конструкция 1ММЕЕ ЮО1М применяется именно для этой цели. Таким образом, мы выяснили все, что необходимо для составления запроса, и можем сформулировать его следующим образом: БЕЬЕСт РтяттМСт с.Спясомег1Р, с.Сояряпуияме ГРОМ Сиясомегя с 1ММЕЕ ЮО1М Огс(ягя о ОМ с.еиясотегтР = о.Сиясояеггп Если в данные базы данных МогЕАМ1пс( не были внесены изменения, то выполнение этого запроса должно привести к получению 89 строк.

Обратите внимание на то, что в запросе используется ключевое слово Р1БТ1МСТ, поскольку достаточно знать только количество заказчиков, сделавших заказы (причем достаточно только одного упоминания каждого заказчика), а не количество заказов. Если бы в этом запросе отсутствовало ключевое слово Р1БТ1МСТ, то была бы возвращена отдельная строка, относящаяся к каждому заказчику для каждой строки из таблицы Огоегя, в которой имеется информация об этом заказчике. Теперь попьггаемся получить информацию об общем количестве заказчиков и для этого вызовем на выполнение следующий простой запрос с агрегирующей функцией СООМТ: БЕЬЕСТ СООМТ(*) АБ "Мо. ОГ Еесогоя" ГЕРМ Сиясовегя Очевидно, что этот запрос, в котором определяется количество строк в таблице Спясопегя, возвращает другие данные по сравнению с предыдущими: Мо.

ОГ Еесогоя 91 (1 гоя(я) аттессео) С чем связано то, что количество строк отличается на два? Как и следовало ожидать, в первом случае из результирующего набора были исключены две строки с информацией о заказчиках, поскольку данным об этих заказчиках не соответствует ни Соединения 131 одна строка в таблице Огс)егз. Именно по этой причине конструкцию 1ННЕН 001Н иногда сравнивают с конструкцией ХНЕНЕ. Применение конструкции 1ННЕН Я01Н приводит к исключению строк в связи с тем, что не обнаруживаются соответствующие им строки в другой таблице, а использование конструкции инене приводит к исключению строк из возвращаемого набора, поскольку эти строки не соответствуют заданным критериям.

Чтобы лучше изучить свойства соединений и получить дополнительную практику, рассмотрим, какие столбцы имеются еще в нескольких таблицах базы данных рпЬя (апСЬогз, СТС1ез и СТС1еапСЬог) (табл. 4.9). Таблица 4.9. Столбцы таблиц аие1ьоха, Ьхе1еа и ХЕЬ1еапЫьох ЕЕЕ1еаивиох аиеиохв ао 1а ап 1пззье ап анапе Рьопе СЕЬ1е за тзь1е ап за сзь1е 1а ап ога соуа1сурес Туре рпЬ 16 Рхзсе ааахезз Сгьу Яьасе Апчапсе Коуа1ьу уса за1ез посев рпьааье Я1р сопсгасс ЯЕЕЕСТ ап 1паие ь ', ' + ап Тпаее АЯ "Апхпог", ЬЕС1е Как и во многих языках, в языке 5~1.

операция "+ "может использоваться как для конкате- нации ст)1ок, так и для сложения чисел. В данном случае просто выполнлевкл конкатенация ст)зэки фамилии со ст~нтой имени и между этими двумя строками ставипгсл Разделитель в виде запятой. Теперь необходимо приступить к соединению двух указанных таблиц. Но для этого требуется найти столбец, по которому должно быть выполнено соединение. В связи с этим в ходе решения данной задачи возникает первая проблема — обнаруживается, что такой столбец отсутствует.

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

Прежде всего необходимо точно выяснить, какие данные должны быть получены из базы данных. В рассматриваемом задании речь идет о том, что должны быть возвращены два различных фрагмента информации — имена авторов и названия книг. Имена авторов (состоящие из двух частей — само имя и фамилия) можно получить из таблицы апсьогз, а названия книг приведены в таблице сйс1еэ, поэтому мы можем приступить к написанию первой части оператора ЯЕЕЕСТ следующим образом: 132 Глава 4 Теперь становится ясно, для чего нужна третья из таблиц, приведенных в табл.

4.9. Иногда соединения могут быть сформированы только с помощью такой таблицы, как сьс1еаисйог, которая позволяет проложить связь между двумя другими таблицами. Для обозначения подобных таблиц, обеспечивающих возможность связать две другие таблицы, применяются разные термины, но автору чаще всего приходилось встречать термины связующая таблица, или таблица ассоциации. =., Саьяеувя(ЕЙ ГабЛИцсай:(ИИСГда НааммадВМОй'таЮКЕ,'табЛИс'ИЕй ИСССЩЕацИИ ИЛИ, ГабдсИцЕЙСЛИ'-:.. яиия) 'называют любую'-'таблицу;врновным,назначением;-'косарей-являетсся не хранениессб.'-;ствениыхданных; ассадасиив айвза меяду дсанийми; хранимыми вдругиктаблицал; такие: табЛИцм-'Моясмо:расССМатрИВагты КаКСрвдетеа',"-С6ЕСПЕЧЕНИя:ВэаИМссдейаГВМ',ИЛИ Саада.

Йия( СВЯЗЕЙ, МЕЖду'ДВУМЯ ИЛИ'ИЕС)КСЛЬКЙйй:.ТабЛИИЬМси., В:ЧЕТНОСТИ,' СВЛЗУЮЩИЕ, 'ТабЛИЦЫ лозволяат найти выксд1в,тахусй чаете рквайцвензщеЙсе(Ситуации;"ксудас-иМевт. меотО так: Йазываемая свлзь лмнсгйе'ксгмсисг(Йм":между:.'таблиЦами,',а такой 'ситуаций дае таблицы Содвржат СеяэаННЫа друГ С друГПМ дйиимв;; ЛрИЧЕМ И В тОй И В д(>усей табпицв Можвт На)(Сднстъея-бсЛЬШОЕ. КОЛГИЧастВО СтйСК ВотаёЫЕ СЕГЛабуЮстая: Со',Мистйыи'СтрОКаМИ',В) друП1й тагбяйцв:.:СУБД ЩЬЗМЕГ Нв,поаасзяяет,'НЕПОС4)ЕдетВаййЕ'реаЛИЗБВЫаьатЬ Подобав ЕВЛ- -(зи;:пойтбму'примечаются:рвязующие таблицы пбзвбляк=(щие, разделать связь ".мнй ие кс:-.' мнсгим".';иа две.связи:",один ко,многим",; а: последииедсдс(еряйваются)СУБД ЗЖ Зеп(еп Дсп1щнительнйя Йнфсрмация;.иа,втутему привцг(еьиввс главе'б. Данная конкретная таблица, с1с1еаис)зог, не отвечает всем критериям определения связующей таблицы в самом строгом смысле этого термина, но все же соответствует общему нааначению связующих таблиц, поэтому автор рассматривает ее именно как таковую, поскольку не считает себя педантом.

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

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

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

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