СОЗДАНИЕ ПРЕДСТАВЛЕНИЙ В MS SQL SERVER Методические указания к выполнению практической работы по курсу «Современные технологии управления базами данных» для студентов направления 230400.62 очной, заочной и заочно-сокращенной форм обучения Цель работы: научиться создавать и изменять представления в MS SQL Server ОСНОВНЫЕ ПОНЯТИЯ 1. Понятие представления Представления — это виртуальные таблицы. В отличие от таблиц, содержащих данные, представления содержат запросы, которые динамически выбирают данные, когда это необходимо. Представление может содержать данные из одной или нескольких таблиц или может быть создано на основе других представлений. Представления позволяют: • ограничивать число столбцов , из которых пользователь выбирает или в которые вводит данные; • ограничивать число строк, из которых пользователь выбирает или в которые вводит данные; • выводить дополнительные столбцы, преобразованные из других столбцов базовой таблицы; • выводить группы строк таблицы. Благодаря этому представления дают возможность гибкой настройки выводимой из таблиц информации в соответствии с требованиями конкретных пользователей, позволяют обеспечивать защиту информации на уровне строк и столбцов, упрощают формирование сложных отчетов и выходных форм. 2. Создание представлений Представление определяется с помощью команды CREATE VIEW < имя представления > AS FROM < имя таблицы > Пример 1 SELECT <список столбцов > CREATE VIEW MOSC_STUD AS SELECT * FROM STUDENT WHERE CITY = ‘Москва ’; Данные из базовой таблицы, предъявляемые пользователю в представлении, зависят от условия (предиката), описанного в SELECTзапросе при определении представления. В созданную в приведенного выше запроса таблицу- представление результате MOSC_STUD передаются данные из базовой таблицы STUDENT, но не все, а только записи о студентах, для которых значение поля CITY равно ‘Москва ’. К таблице MOSC_STUD можно теперь обращаться с помощью запросов так же , как и к любой другой таблице базы данных. Например, запрос для просмотра представления MOSC_STUD имеет вид: Пример 2 SELECT * FROM MOSC_STUD; Данные предъявляемые пользователю через представление, могут изменяться с помощью команд модификации, но при этом фактическая модификация данных будет таблице - представлении, а базовой таблице. осуществляться не в самой виртуальной будет перенаправлена к соответствующей Например, запрос на обновление представления NEW_STUDENT UPDATE NEW_STUDENT SET CITY = ‘Москва ’ WHERE STUDENT_ID = 1004; эквивалентен выполнению команды STUDENT. Следует, однако, обратить UPDATE над базовой таблицей внимание на то, что в общем случае, из-за того, что обычно в представлении отображаются данные из базовой применение таблицы команд в преобразованном или усеченном виде, модификации к таблицам -представлениям имеет некоторые особенности. 1) Оператор INSERT, примененный к представлению, фактически осуществляет вставку строки в соответствующую базовую таблицу, причем во все столбцы этой таблицы независимо от того, видны они пользователю через представление или скрыты от него. В связи с этим, в столбцах, не включенных в представление, устанавливается NULLзначение или значение представление столбец по умолчанию. Если не имеет опцию NOT NULL, то включенный в генерируется сообщение об ошибке. 2) Любое применение оператора DELETE удаляет строки базовой таблицы независимо от их значений. 3. Удаление представлений. Синтаксис удаления представления из базы данных подобен синтаксису удаления базовых таблиц: DROP VIEW <имя представления> 4. Работа с представлениями с помощью конструктора. 4.1. Создание представления Для создания нового представления нужно выбрать пункт New view во всплывающем меню типа объект Views. Появляется страница создания нового представления данных. Вид заполненной страницы показан на рис.1. Рис.1. Пример страницы для представления Работа на странице начинается с выбора таблиц базы данных. Для этого используется диалоговое окно выбора таблиц, появляющееся при выборе пункта Add Table во всплывающем окне. (рис. 2). Рис.2. Диалоговое окно для выбора таблиц базы данных Таблица в середине страницы позволяет отобрать необходимые поля добавленных таблиц, которые будут участвовать в представлении (рис. 3). Для определения одного поля представления нужно выбрать с помощью выпадающего списка таблицу базы данных (колонка Table в списке полей), поле этой таблицы (колонка Column в списке полей) и ввести (если это необходимо) альтернативное имя данного поля в представлении (колонка Alias в списке полей). Колонки Sort Type и Sort Order позволяют задать необходимость сортировки и порядок сортировки по данному полю представления соответственно. В поле Criteria можно указать условие, которому должно удовлетворять данное поле представления (добавляется к результирующему SQL-запросу с помощью AND-объединения), а в полях Or... определить условия на поле, добавляемые к результирующему SQLзапросу с помощью OR-объединения. Ниже таблицы отображается реальный SQL-запрос на выборку данных для представления, формируемый с помощью конструктора. При нажатии кнопки F5 отображается таблица, в которой показывается содержимое сформированного представления, подобное отображению содержимого простой таблицы. Сохраняется сформированное представление данных с помощью нажатия на File > Save. 4.2. Изменение и просмотр представления Для изменения представления следует щелкнуть правой клавишей мыши на элементе, представляющем выбранное представление в левой части фрейма SQL Server Management Studio, и во всплывающем меню выбрать пункт Modify. Появляющаяся далее страница аналогична странице управления структурой нового представления из пункта 4.1. При выборе пункта меню Open view в том же всплывающем меню открывается окно содержимого представления, идентичное окну содержимого таблицы. ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ Для базы данных, созданной на лабораторных работах №1, 2 создайте представления (не менее 3).