Лабораторная № 5 Тема: Изучение языка Transact SQL. Модификация данных. Цель работы: изучить представления, научиться модифицировать данные Задание 1: Представления Представление – это объект, который для пользователей и приложений, выполняющих запросы, почти ничем не отличается от таблицы. Представления можно использовать для просмотра и обновления данных, но на самом деле никаких данных они не содержат. Представление лишь предоставляет доступ к данным одной или нескольких таблиц, на которых оно основано. Представление может с одной стороны упростить, а с другой ограничить доступ к данным. На данном занятии вы поймете все тонкости работы с этими объектами и научитесь их правильно применять для продуктивной работы с базами данных. Понятие о представлениях Хотя конструктор запросов Query Designer облегчает обращение к таблицам в вашей базе данных, постоянная корректировка или создание оператора запроса каждый раз заново может оказаться слишком утомительным и трудоемким. SQL Server предоставляет средства для хранения оператора SELECT в виде представления. В большинстве случаев данные, отображаемые представлением, не являются данными, хранящимися в базе данных, – в представлении хранится только оператор SELECT. Вы можете считать представление виртуальной таблицей. Она может использоваться точно так же, как обычная таблица. Возможность использования результатов выполнения одного оператора SELECT в качестве входной информации для другого оператора SELECT является одним из фундаментальных требований реляционной модели. Это требование основано на принципе замкнутости. Индексированные представления Новое в SQL Server 2000 – это его способность создавать индекс для представления. Если вы индексируете вид, результирующее множество представления хранится в базе данных и модифицируется при любой модификации базовых таблиц и представлений. При определенных обстоятельствах это может существенно улучшить производительность, поскольку нет необходимости пересчитывать результирующее множество при каждой ссылке на него. Индексированные представления работают лучше, если базовые данные меняются не слишком часто; в противном случае затраты на сопровождение индексированного представления будут выше, чем если бы вы пересчитывали представление по мере необходимости. Индексированные представления лучше всего использовать для следующих двух типов запросов: запросы связывания и агрегирования, которые обрабатывают большое количество строк; операции связывания и агрегирования, которые часто выполняются в других запросах. Создание представлений Enterprise Manager предусматривает два метода для создания нового представления: мастер создания представления Create View Wizard, который проводит вас по всем этапам процедуры создания представления; и команда New View (Создать представление), которая открывает конструктор представлений View Designer. Конструктор представлений аналогичен конструктору запросов, за исключением того, что он дает возможность сохранять созданный вами оператор SELECT. Мастер создания представлений Create View Wizard является полезным инструментом, но иногда проще создать представление с помощью конструктора представлений View Designer. 1.Создайте представление с использованием мастера Create View Wizard 2.Создайте представление с использованием конструктора View Designer Использование представлений Создав представление, вы можете использовать его точно так же, как таблицу. Вы можете открыть его в Enterprise Manager с использованием конструктора представлений View Designer, либо включить его в другие запросы. Если вы открываете конструктор представлений View Designer для существующего представления, Enterprise Manager трактует его как виртуальную таблицу. Базовым оператором SQL является либо SELECT * FROM <имя представления>, либо SELECT TOP n FROM <имя представления>, но не оператор запроса, создавший представление. 1.Откройте конструктор View Designer для представления 2.Включите представление в запрос Управление представлениями Как и для других объектов базы данных, вполне вероятно, что у вас может возникнуть необходимость изменить представление. Это легко можно сделать средствами Enterprise Manager. Изменение представлений Представление может быть изменено двумя способами: вы можете изменить его имя, либо вы можете изменить базовый оператор SQL для представления. 1.Переименуйте представление 2.Модифицируйте представление Удаление представлений Вы можете удалить представление из базы данных точно так же, как вы удаляете любой другой объект. 1.Удалите представление Задание 2: Работа с данными Вы узнали, как использовать конструктор запросов Query Designer для добавления строк в таблицу путем ввода значений в панель результатов Results Pane. Вы научитесь применять оператор Transact-SQL INSERT для добавления строк в процессе выполнения программы. Понятие об операторе INSERT Синтаксис оператора INSERT похож на синтаксис оператора SELECT. Его базовая форма имеет следующий вид: INSERT [INTO] таблица_или_представление [(список_столбцов)] VALUES (список_значений) Каждый оператор INSERT может модифицировать только одну таблицу или представление. При использовании оператора INSERT для модификации представления следует учитывать следующие ограничения: представление не должно содержать функций агрегирования, таких как COUNT или AVG; представление не должно содержать операторов TOP, GROUP BY, UNION или DISTINCT; представление не должно содержать вычисляемых столбцов; представление должно ссылаться на таблицу во фразе FROM; оператор INSERT модифицирует столбцы только из одной таблицы. Список столбцов в операторе INSERT не является обязательным. Если он не указан, оператор INSERT должен включать значения для всех столбцов в таблице или представлении, а порядок их должен соответствовать порядку столбцов в таблице или представлении. Вы можете использовать ключевое слово DEFAULT, чтобы задать для строки значения, установленные по умолчанию. Если список столбцов присутствует, формат его подобен формату, используемому для списка столбцов в операторе SELECT: имена столбцов отделяются запятыми. Поскольку оператор INSERT может добавлять строку только в одну таблицу, вам нет необходимости использовать идентификатор имени таблицы в имени столбца. Использование оператора INSERT Оператор INSERT может быть создан с использованием панели сетки Grid Pane путем задания столбцов, либо с использованием панели SQL Pane путем непосредственного ввода оператора. Вставка строк с использованием панели сетки Grid Pane Панель сетки Grid Pane предоставляет самый простой способ создания оператора INSERT, поскольку при этом не требуется запоминать синтаксис оператора. 1.Вставьте строку с использованием панели сетки Grid Pane Вставка строк с использованием панели SQL Pane Хотя панель сетки Grid Pane предоставляет простой метод создания оператора INSERT, но использование панели SQL Pane, позволяющее вводить оператор непосредственно, предоставляет большие функциональные возможности. 1.Вставьте строку с использованием панели SQL Pane 2.Вставьте строку, задающую значения для всех столбцов 3.Вставьте строку с использованием значений DEFAULT и NULL Вставка нескольких строк Оператор INSERT имеет вторую форму, которая использует оператор SELECT вместо списка VALUES с целью задания значений для строки (или строк), которая будет добавлена. Эта форма оператора INSERT имеет следующий вид: INSERT INTO таблица_или_представление [(список_столбцов)] SELECT [(список_столбцов) FROM таблица_или_представление [WHERE (условие)] Фраза WHERE в операторе является необязательной. Если она отсутствует, в таблицу или представление, заданные в фразе INSERT, будут добавлены все строки из таблицы или представления, заданных в фразе FROM. 1.Вставьте несколько строк с использованием панели сетки Grid Pane 2.Вставьте несколько строк с использованием панели SQL Pane Задание 3: Модификация строк Для модификации данных в T-SQL используется инструкция DML UPDATE. Она может модифицировать либо одну строку таблицы, либо заданный набор ее строк. Можно модифицировать данные через представление, основанное на нескольких таблицах. Можно использовать предложения WHERE и FROM в операторе UPDATE. На уроке мы рассмотрим использование Grid Pane и SQL Pane. Также будут представлены примеры сценариев, выполняющие модификацию строк. Рекомендуется использовать справочную систему Books Online, чтобы избежать ошибок в написании сценариев и лучше узнать синтаксис представленных операторов. Понятие об операторе UPDATE Оператор UPDATE позволяет изменять значения в одной или в нескольких строках таблицы. Базовый синтаксис оператора UPDATE следующий: UPDATE таблица_или_представление SET объекты_изменения [WHERE (условие)] Подобно оператору INSERT, один оператор UPDATE может модифицировать только одну таблицу или представление. Для обновления представления с помощью оператора UPDATE существуют те же ограничения, что и для обновления представления с помощью оператора INSERT: представление не должно содержать функций агрегирования, таких как COUNT или AVG; представление не должно содержать TOP, GROUP BY, UNION или DISTINCT; представление не должно содержать вычисляемых столбцов; представление должно ссылаться на таблицу, указанную в фразе FROM; оператор UPDATE должен модифицировать столбцы только из одной таблицы. За ключевым словом SET следует перечень подлежащих обновлению столбцов, отделяемых запятыми, а также их новые значения. Форма записи при этом следующая: имя_столбца = новое_значение. Новое значение может быть константой или выражением, которое также может ссылаться на сам столбец. Например, выражение SalesPrice = SalesPrice * .90 будет уменьшать значения в столбце SalesPrice на 10 процентов. Фраза WHERE является необязательной. Если она имеется, то должна задавать строки, подлежащие обновлению. Если фраза WHERE в операторе UPDATE отсутствует, будут модифицироваться все строки в таблице. Использование оператора UPDATE Как и большинство других форм запросов, вы можете создавать запрос UPDATE в конструкторе запросов Query Designer с использованием панели сетки Grid Pane, либо непосредственно вводя оператор в панели SQL Pane. Модификация строк с использованием панели сетки Grid Pane Панель сетки Grid Pane конструктора запросов предоставляет возможности для создания запроса UPDATE. 1.Модифицируйте все строки с использованием панели сетки Grid Pane 2.Модифицируйте одну строку с использованием панели сетки Grid Pane Модификация строк с использованием панели SQL Pane Как и для других форм запросов, непосредственный ввод оператора UPDATE в панели SQL обеспечивает большую гибкость. 1.Модифицируйте все строки с использованием панели SQL Pane 2.Модифицируйте строки с использованием условия WHERE Модификация строк с использованием фразы FROM Можно использовать фразу SELECT в операторе INSERT, чтобы вставить значения из другой таблицы (см. урок 19). Оператор UPDATE использует фразу FROM для извлечения значений из другой таблицы: UPDATE таблица_или_представление SET объекты_изменения FROM таблица_или_представление оператор_связывания условие_связывания [WHERE (условие_ограничения)] Фраза FROM здесь имеет тот же формат, что и фраза FROM в операторе SELECT. Так же, как и для оператора SELECT, вы можете задать более одной таблицы или представления путем добавления операторов связывания. Необязательное условие WHERE может использоваться для ограничения множества модифицируемых строк. 1.Модифицируйте строки с использованием оператора FROM Задание 4: Удаление строк SQL Server предоставляет два оператора для удаления строк из таблицы или представления: оператор DELETE и оператор TRUNCATE TABLE. Оператор TRUNCATE TABLE безо всяких условий удаляет все строки в таблице. Оператор DELETE обеспечивает большую гибкость и дает возможность удалять только избранные строки с помощью фразы WHERE, которая может включать дополнительные таблицы и представления. Понятие об операторе DELETE Базовая структура оператора DELETE несколько отличается от других операторов SQL, с которыми мы сталкивались ранее. Его синтаксис следующий: DELETE таблица_или_представление [FROM источники_таблиц] [WHERE условие_отбора] Список столбцов в операторе DELETE не указывается, поскольку при удалении строки удаляются также все столбцы. Необязательная фраза WHERE дает возможность указывать, какие строки следует удалить. Если фраза WHERE опущена, удаляются все строки в указанной таблице или представлении. Фраза FROM, также необязательная, позволяет задавать дополнительные источники (таблицы или представления), которые будут использоваться в условии отбора в фразе WHERE. Подобный синтаксис оператора может ввести в заблуждение, поскольку строки не будут удаляться из таблиц и представлений, указанных в фразе FROM. Если в фразе FROM вы указываете более одной таблицы или представления, их имена следует отделять запятыми. Совет. Оператор DELETE не поддерживает применение операции JOIN, поэтому вам следует связывать таблицы или представления в фразе WHERE оператора. Если таблица участвует в отношении, важно не допустить, чтобы при удалении в главной таблице оставались "висячие" строки. Висячими строками называют строки в зависимой таблице (таблице внешнего ключа), которые не имеют соответствующих строк в главной таблице (таблице первичного ключа). Новинкой в SQL Server 2000 является возможность каскадных удалений в отношении. Если для отношения задается каскадное удаление, SQL Server автоматически удалит строки в зависимой таблице, чтобы не оставлять висячих строк. На рис. 19.1 показано отношение, установленное между таблицами Oils и PlantParts. Рис. 19.1. Каскадные удаления выполняются на вкладке Relationships (Отношения) диалогового окна Properties (Свойства). Использование оператора DELETE Подобно другим операторам SQL, используемым в конструкторе запросов Query Designer, оператор DELETE может быть непосредственно введен в панели SQL Pane, либо создан с использованием графических панелей. Удаление строк с использованием панели сетки Grid Pane и панели диаграмм Diagram Pane Панель сетки и панель диаграмм конструктора запросов Query Designer предоставляют графические средства для создания операторов DELETE; однако, они не поддерживают применение фразы FROM, которая дает возможность использовать в операторе DELETE дополнительные таблицы и представления. 1.Удалите избранные строки из таблицы Удаление строк с использованием панели SQL Pane Как и в других случаях, непосредственный ввод оператора DELETE в панели SQL Pane конструктора запросов Query Designer обеспечивает большую гибкость, однако при этом вам необходимо помнить синтаксис оператора. 1.Удалите строки с использованием фразы WHERE 2.Удалите строки с использованием фразы FROM 3.Удалите строки при помощи каскадного удаления Оператор TRUNCATE TABLE Результат выполнения оператора TRUNCATE TABLE идентичен результату выполнения оператора DELETE, для которого не указано условие WHERE, т.е. из таблицы удаляются все строки. Оператор TRUNCATE TABLE, отличается от оператора DELETE тем, что оператор TRUNCATE TABLE не записывается в журнал транзакций, что существенно ускоряет его выполнение. Удаление всех строк с помощью оператора TRUNCATE TABLE Оператор TRUNCATE TABLE может быть выполнен только из панели SQL Pane конструктора запросов Query Designer. 1.Удалите все строки с использованием оператора TRUNCATE TABLE Задание 5: Копирование и перемещение данных Помимо работы с данными, размещенными в базе данных SQL Server, иногда возникает необходимость передать или получить данные в другом формате – например, в формате Microsoft Access или Oracle – либо копировать данные между различными экземплярами SQL Server. Рассмотрим три возможности, предоставляемые Enterprise Manager для выполнения подобных задач Мастера служб преобразования данных Службы преобразования данных Data Transformation Services (DTS) –мощный набор графических инструментальных средств и программных объектов, который дает возможность импортировать и экспортировать данные, преобразовывать структуры данных и объединять данные из различных источников для их анализа и составления отчетов. Как и для любых других мощных графических инструментов с широкими возможностями, использование DTS может вызвать определенные затруднения. К счастью, Enterprise Manager имеет в своем составе два мастера, облегчающие выполнение наиболее распространенных задач: импорт и экспорт данных. Использование мастера импорта DTS Import Wizard Мастер DTS Import Wizard дает возможность импортировать данные из различных типов источников данных, в том числе: источников данных OLE DB и ODBC; текстовых файлов; соединений с другими экземплярами Microsoft SQL Server; баз данных Oracle и Informix; рабочих листов Microsoft Excel; баз данных Microsoft Access и Microsoft FoxPro; баз данных dBase и Paradox. 1.Импортируйте таблицу с использованием мастера DTS Import Wizard Использование мастера экспорта DTS Export Wizard Как вы можете догадаться, мастер экспорта DTS Export Wizard выполняет ту же функцию, что и мастер импорта DTS Import Wizard, но в обратном направлении. Подключение и отключение баз данных В SQL Server база данных хранится в двух или более файлах. Хотя эти файлы обычно представляют собой файлы операционной системы, вы не можете просто переместить или скопировать их из одного места в другое, поскольку они связаны с определенным экземпляром сервера, который содержит эту базу данных. Тем не менее, SQL Server дает вам возможность отключать базу данных от сервера, удаляя связь между базой данных и конкретным сервером, но при этом оставляя саму базу данных и журнал транзакции нетронутыми. После отключения базы данных вы можете переместить или скопировать ее, после чего подключить к какому-либо другому серверу. Отключение базы данных Задача отключения базы данных от сервера, с которым она связана, представляется достаточно простой и реализуется через одно диалоговое окно. 1.Отключите базу данных Aromatherapy Подключение базы данных После того, как база данных была отключена от сервера, вы можете переместить или скопировать ее файл данных и журнал транзакций, как вы это делаете для любых других файлов операционной системы. Далее вы можете подключить базу данных к этому же или к другому серверу. 1.Повторно подключите базу данных Aromatherapy Мастер копирования Copy Database Wizard Мастер Copy Database Wizard предоставляет простой путь для копирования или перемещения базы данных из одного экземпляра SQL Server в другой. Вы можете копировать базу данных между различными экземплярами SQL Server 2000, либо между SQL Server 2000 SQL Server 7.0. Использование мастера Copy Database Wizard Мастер копирования Copy Database Wizard может быть вызван через диалоговое окно Select Wizard (Выбор мастера), а также через меню All Tasks (Все задачи) контекстного меню для папки Server или для папки Databases. 1.Скопируйте базу данных Внимание! Чтобы выполнить это упражнение, вы должны иметь доступ к серверу. Выполните практические задания 19,20,21,22,23 из учебника. Для ответа по лабораторной работе необходимо ответить на следующие вопросы: 1. Создание представлений с помощью Create View Wizard, View Designer. 2. Включения представления в запрос. 3. Переименование, модификация и удаления представления. 4. Вставка строки с помощью Grid pane, SQL Pane. 5. Вставка строки со значениями Default и Null. 6. Модификация строк с помощью Grid pane, SQL Pane. 7. Модификация строк с использованием условия WHERE и оператора FROM. 8. Удаление строк с использованием WHERE, Truncate Table и FROM. 9. Импорт и экспорт таблицы с помощью DTS Import Wizard и DTS Export Wizard. 10.Отключение и подключение БД.