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

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

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

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

Но и в данном случае, как и при решении других проблем, с которыми мы сталкивались в данной главе, существует эффективное решение. Оно имеет форму предиката ()1ЯТ1ИСТ, который может применяться в операторе ЯЕЕЕСТ. Попытаемся повторно выполнить приведенный выше запрос, внеся в него небольшое изменение: ЯЕЬЕСт Птзт1НСт Япрр11 1О РНОМ Ргос(псся ННЕНЕ Ппзгя1пзсоск > О Теперь сформирован действительно удобный список идентификаторов Япрр11ег10 с данными о тех поставщиках, товары которых имеются на складе: Япрр1гег1П 27 28 29 (29 гоя(я) яг"гесгег() Вполне очевидно, что благодаря применению предиката ()1ЯТ1МСТ размеры списка существенно сократились, а само содержимое списка стало гораздо более удобным в использовании.

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

Рассмотрим три приведенных ниже запроса. Вначале определим количество строк в таблице Огс(ег Оеса11э базы данных Ноггмн1пс(: БЕЬЕСТ СООНТ(*) ГаОМ (Огаег Оеса11з) Если в таблицу Огс)ег Оега11з не вносили изменения,то выполнение этого запроса должно показать, что в данной таблице имеются 2155 строк. Теперь выполним тот же запрос, используя для подсчета количества строк конкретный столбец: БЕЬЕСТ СООНТ(огоегго) геом [Огаег Оеса11з] Столбец Огс(ег1Р входит в состав ключа для данной таблицы, поэтому не может содержать какие-либо )ь)УЕ(:значения (дополнительные сведения по этой теме приведены в главе, посвященной индексации). Поэтому общее количество строк, полученное с помощью данного запроса, всегда должно совпадать с тем количеством, которое обнаруживается с помощью выражения СОЫМТ (*); и в данном случае оно равно 2155.

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

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

НапРимер, тфудно пуедставить себе, для чего может потребоваться вычисление средних значений только по строкам, оставшимся после применения предиката 1)1Б ТЕС Т. 108 Глава 3 Теперь перейдем к рассмотрению предиката АЕБ На практике чрезвычайно редко приходится сталкиваться с тем, что в каком-то операторе применяется предикат АЫ,, за одним исключением. По-видимому, проще всего понять назначение предиката АЬЬ, рассматривая его как противоположный предикату РХБТХМСТ.

Как уже было сказано, предикат РХБТХМСТ обеспечивает исключение строк с повторяющимися данными, а предикат АЬЬ используется в качестве указания, что должна быть включена каждая строка. Предикат АЬЬ применяется по умолчанию во всех операторах БЕЗВЕСТ, за исключением тех ситуаций, когда выполняется операция РЕХОЕ. Последствия применения предиката АЬЬ в сочетании с операцией ОЕХОЫ рассматриваются в следующей главе, но на данный момент достаточно понять, что выборка данных по такому принципу, который предусмотрен в предикате А1.1., происходит во всех тех случаях, когда не используется предикат РХБТХЕСТ. Внесение данных с помощью оператора хявжат В предыдущих разделах приведен довольно большой объем информации об операторах БЕЗВЕСТ. Тем не менее применение этих операторов не имеет смысла, если в базу данных не введены перед этим какие-либо данные.

Именно для этой цели служит оператор ХЕБЕЕТ. Оператор ХХГБЕЕТ имеет примерно такой основной синтаксис: ХНБЕКТ ~ХМТ01 <саЬХе> [~соХавп ХгэсП чльРЕЯ (баса чаХиез1 Рассмотрим последовательно структуру этого оператора. Прежде всего отметим,что ХЕБЕЕТ вЂ” оператор действия. Само ключевое слово ХНБЕЕТ сообщает СУБД Я~Х. Беггег, что должна быть выполнена вставка данных, а все, что следует за этим ключевым словом, является уточнением деталей требуемого действия. Ключевое слово ХыТО главным образом предназначено лишь для уточнения. Его единственным назначением является повышение удобства чтения оператора. Без ключевого слова ХУШТО можно полностью обойтись, но автор настоятельно рекомендует использовать его именно по той причине, по которой оно было предусмотрено в определении оператора, — благодаря ему значительно повышается удобство чтения.

Рекомендуем читателю в ходе изучения данного раздела попытаться вызвать на выполнение некоторые операторы и с ключевым словом ХЕТО, и без него. Безусловно, отказ от применения ХЕТО приводит к небольшому сокращению объема кода, но вместе с тем чтение кода в значительной степени затрудняется. Тем не менее разработчик вправе сам принимать решение о его использовании.

За указанными ключевыми словами следует имя таблицы, в которую должны быть вставлены данные. До того как мы подошли к изучению данной части оператора ХЫБЕРТ, все обстояло довольно просто, а теперь нам придется столкнуться с более сложной его частью — с определением списка столбцов. Явно заданный список столбцов (в котором должен быть конкретно указан каждый столбец, принимающий вводимые значения) является необязательным, но если это явное определение не используется, то приходится соблюдать исключительную осторожность. Если явно заданный список столбцов не предусмотрен, то предполагается, что каждое значение в операторе ХНБЕЕТ должно Основные операторы языка Т-Бьдг. 109 соответствовать столбцу, находящемуся в той же порядковой позиции в строке таблицы, что и само вводимое значение (первое значение вводится в первый столбец, второе значение — во второй и т.д.). Кроме того, значение должно быть задано для каждого столбца, который не принимает ХЮз.з:значений и не имеет значения, заданного по умолчанию (пояснения к сказанному будут даны немного позже), пока не будет достигнут последний столбец.

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

Для того чтобы установить значения, необходимо прежде всего ввести ключевое слово ЧАЕНЕЯ, а затем представить список значений, разделенных запятыми, который заключен в круглые скобки. Количество элементов в списке значений должно точно совпадать с количеством столбцов в списке столбцов. Тип данных каждого значения также должен совпадать или допускать неявное преобразование в тип данных столбца, которому соответствует это значение (сопоставление столбцов и вставляемых в них значений осуществляется с учетом порядка следования).

Иногда угазфаботчихи задумываются над тем, сыдует ли задавать значение хонх)гсзпно для каждого спимбца. Ио фактически рекомендуется гфи любых обстояпмльствох указывать каждый столбец, гфименяемый для вставки данных, даже если используемое по умолчанию значение вставляется с помощью ключевого азова ЯЕРА01 Т или явно задается )чсШ значения Ключевое ово РЕЗАНЕТ сообщает СУБД 5ог. 5егоег, что должно быть вставлено то значение, хопхфое пфедусмопфено по умолчанию для данного столбца (если такое значение не гфедусмотрено, появллевгся ошибка). Соблюдение указанной )зехомендации способствует повышению удобства кода для чямния, поскольку позволяет полностью огфеделить, какие данные должны быть введены в таблицу.

К(зоне таге, по мнению автгфа„если каждый сгполбгц пеугечисляевгся явно, то количество возможных гфог)замглнь ошибок уменьшается. Безусловно, приведенное выше описание может показаться сложным, поэтому рассмотрим некоторые практические примеры. Начнем с использования базы данных роЬЯ. Это — еще одна база данных, которая широко используется в данной книге. Развертывание этой базы в системе происходит при инсталляции предлагаемых компанией М)сгозой образцов баз данных, в число которых входит Ноггпнйпб. Для перехода к этой базе данных не забудьте внести изменение в окне Опегу или выполните команду НЯЕ РпЬЯ.

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

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

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

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