- •Кафедра экономической информатики
- •Базы данных
- •Содержание
- •Введение
- •Лабораторная работа №1. Логические и физические модели данных
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей в eRwin
- •Раздел II. Создание связей между сущностями, подмножеств модели и хранимых отображений. Переход к физической модели данных
- •Раздел III. Выполнение операции прямого проектирования
- •Раздел IV. Выполнение операции обратного проектирования
- •Лабораторная работа №2. Усложненные диаграммы «сущность-связь»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей логической модели
- •Раздел II. Создание связей между сущностями и иерархии наследования
- •Раздел III. Выполнение вариантов трансформы категориальной связи
- •Раздел IV. Выполнение методов синхронизации системного каталога базы данных и текущей модели
- •Лабораторная работа №3. Работа в среде субд «ms sql Server 2005»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Управление пользователями и правами доступа к данным
- •Лабораторная работа №4. Создание базы данных и ее объектов с помощью команд языка Transact-sql
- •Методические указания и задания к выполнению
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Ввод данных в таблицы базы данных
- •Insert into Заказ (КодКлиента, КодТовара, Количество)
- •Inner join Поставщик
- •Inner join Товар
- •Раздел III. Управление пользователями и правами доступа к данным.
- •Раздел IV. Анализ полученных результатов
- •Лабораторная работа №5. Манипулирование данными с помощью команд языка Transact-sql
- •Методические указания
- •Раздел I. Выборка данных из таблиц и представлений.
- •Раздел II. Обновление данных в таблицах и представлениях.
- •Раздел III. Удаление данных из таблиц и представлений.
- •Раздел IV. Изменение структуры таблицы.
- •Раздел V. Удаление таблицы из базы данных.
- •Задание к работе
- •Лабораторная работа №6. Программирование на языке Transact-sql
- •Методические указания
- •Раздел I. Основы программирования на языке Transact-sql.
- •Раздел II. Создание и работа с хранимыми (на сервере) процедурами.
- •If @Страна is not null
- •If @Город is not null
- •If @Город is not null
- •Insert into Валюта
- •Values(@Код, @Имя, @Шаг, @Курс)
- •If @Страна is not null
- •If @Город is not null
- •Into ##Регион
- •Раздел III. Создание и работа с определяемыми пользователем функциями.
- •Insert @rowset (КодРегиона, Страна, Область, Город)
- •Задание к работе
- •Лабораторная работа №7. Курсоры и триггеры в языке Transact-sql
- •Методические указания
- •Раздел I. Использование курсоров в языке Transact-sql
- •If @НачалоИнтервала is null
- •If @КонецИнтервала is null
- •Раздел II. Создание триггеров в языке Transact-sql.
- •If update(ДатаЗаказа)
- •If update(Цена)
- •If update(Цена)
- •Inserted.Цена * Валюта.КурсВалюты
- •Задание к работе
- •Литература Основная
- •Базы данных
- •220013, Минск, п. Бровки, 6.
Раздел IV. Анализ полученных результатов
1. Сохраните созданный итоговый сценарий в файле D:\Work\X7230ХХХ\script.sql. с помощью команды меню File►Save (или соответствующей кнопки на панели инструментов). Далее закройте окно Query, содержащее сценарий script.sql.
2. Удалите базу данных Склад_ХХХ. Для этого в ее контекстном меню выберите команду Delete и затем в появившемся окне Delete Object установите флажок Close Existing Connections.
3. С помощью команды меню File►Open►File загрузите сценарий из файла D:\Work\X7230ХХХ\script.sql, после чего, нажав на панели инструментов кнопку Execute, создайте базу данных Склад_ХХХ заново.
4. Обновите данные на панели Object Explorer и сделайте базу данных Склад_ХХХ видимой.
5. Убедитесь, что с помощью сценария получена база данных Склад_ХХХ с требуемыми объектами и свойствами.
6. Проведите сравнительный анализ лабораторных работ 3 и 4, т.к. их выполнение привело к получению одного и того же результата – баз данных СкладХХХ и Склад_ХХХ соответственно. Укажите для каждого пункта, связанного с созданием объектов базы данных с помощью графического интерфейса (база данных СкладХХХ), соответствующую ему команду языка Transact-SQL и, в частности, какие ее фрагменты связаны с установкой тех или иных свойств конкретного объекта базы данных.
7. Удалите созданную базу данных Склад_ХХХ.
Лабораторная работа №5. Манипулирование данными с помощью команд языка Transact-sql
Цель работы
Изучить команды языка манипулирования данными.
Освоить основные команды языка определения данных.
Задачи
Выборка данных из таблиц и представлений.
Обновление данных в таблицах и представлениях.
Удаление данных из таблиц и представлений.
Изменение структуры таблицы.
Удаление таблиц из базы данных.
Методические указания
При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio, после чего на панели Object Explorer в древовидной структуре раскройте папку Databases.
С помощью команды меню File►Open►File загрузите сценарий из файла D:\Work\X7230ХХХ\script.sql в окно Query.
Выполните сценарий, нажав на панели инструментов кнопку Execute (или клавишу F5). В результате будет создана база данных Склад_ХХХ.
Обновите данные на панели Object Explorer. Для этого используйте команду Refresh в контекстном меню папку Databases или соответствующую кнопку в верхней части панели. В результате база данных Склад_ХХХ станет видимой на панели Object Explorer.
Закройте окно Query, содержащее сценарий script.sql. Затем на панели инструментов нажмите кнопку New Query, и откройте новое пустое окно Query, предназначенное для формирования нового сценария.
Готовые к исполнению команды (пакеты) языка Transact-SQL, из которых будет формироваться сценарий, выделены ниже при помощи стрелок и .
Сделайте активной созданную базу данных Склад_ХХХ:
USE Склад_ХХХ
GO
Раздел I. Выборка данных из таблиц и представлений.
Синтаксис команды выборки данных из таблиц и/или представлений (см. [1], стр. 1158):
SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
Опробуем различные варианты команды выборки данных:
/* выборка всех столбцов и всех строк таблицы Регион */
SELECT * FROM Регион
/* выборка некоторых столбцов и всех строк (вертикальный фильтр) */
SELECT Город, Адрес, Факс
FROM Регион
/* выборка всех столбцов и некоторых строк (горизонтальный фильтр) */
SELECT *
FROM Регион
WHERE Страна = 'Беларусь' AND Город != 'Минск'
/* выборка некоторых столбцов и некоторых строк (вертикальный
и горизонтальный фильтры) */
SELECT Город, Адрес, Факс
FROM Регион
WHERE Страна = 'Беларусь' AND Город != 'Минск'
/* выборка с сортировкой строк по столбцу Город, а при совпадении городов – по
столбцу Адрес */
SELECT *
FROM Регион
ORDER BY Город, Адрес
/* выборка из двух таблиц путем их внутреннего соединения по столбцу КодРегиона */
SELECT Поставщик.ИмяПоставщика, Регион.Город, Регион.Факс,
Поставщик.КодПоставщика
FROM Регион
INNER JOIN Поставщик ON Регион.КодРегиона =
Поставщик.КодРегиона
ORDER BY Поставщик.ИмяПоставщика
/* выборка данных из трех таблиц */
SELECT Клиент.ИмяКлиента, Регион.Город, Регион.Факс,
Заказ.Количество, Заказ.ДатаЗаказа
FROM Регион
INNER JOIN Клиент ON Регион.КодРегиона = Клиент.КодРегиона
INNER JOIN Заказ ON Клиент.КодКлиента = Заказ.КодКлиента
WHERE Заказ.Количество >= 2
ORDER BY Клиент.ИмяКлиента, Заказ.ДатаЗаказа DESC
/* та же операция выборка данных из трех таблиц с использованием псевдонимов таблиц */
SELECT К.ИмяКлиента, Р.Город, Р.Факс, З.Количество, З.ДатаЗаказа
FROM Регион Р
INNER JOIN Клиент К ON Р.КодРегиона = К.КодРегиона
INNER JOIN Заказ З ON К.КодКлиента = З.КодКлиента
WHERE З.Количество >= 2
ORDER BY К.ИмяКлиента, З.ДатаЗаказа DESC
/* в SQL Server допускается опускать имена псевдонимов таблиц для тех столбцов, имена которых уникальны в пределах объединяемых таблиц. Поэтому предыдущую операцию выборки данных можно записать еще и так: */
SELECT ИмяКлиента, Город, Факс, Количество, ДатаЗаказа
FROM Регион Р
INNER JOIN Клиент К ON Р.КодРегиона = К.КодРегиона
INNER JOIN Заказ З ON К.КодКлиента = З.КодКлиента
WHERE Количество >= 2
ORDER BY ИмяКлиента, ДатаЗаказа DESC
/* выборка данных с формированием вычисляемого столбца Стоимость */
SELECT Товар.Наименование, Товар.Цена, Заказ.Количество,
Товар.ЕдиницаИзм, Товар.Цена * Заказ.Количество AS Стоимость
FROM Товар
INNER JOIN Заказ ON Товар.КодТовара = Заказ.КодТовара
ORDER BY Стоимость
/* подсчет итоговых данных для столбца Количество в таблице Заказ */
SELECT
SUM(Количество) AS [Общее кол-во], AVG(Количество) AS Среднее,
MAX(Количество) AS Максимум, MIN(Количество) AS Минимум
FROM Заказ
/* выборка данных с их группировкой по столбцу КодТовара и подсчетом для
каждой группы итоговых данных */
SELECT КодТовара,
SUM(Количество) AS [Общее кол-во], AVG(Количество) AS Среднее,
MAX(Количество) AS Максимум, MIN(Количество) AS Минимум
FROM Заказ
GROUP BY КодТовара
/* предыдущая операция выборки данных c группировкой, дополненная условием отбора данных (предложение WHERE) и условием отбора итоговых данных (предложение HAVING) */
SELECT КодТовара,
SUM(Количество) AS [Общее кол-во], AVG(Количество) AS Среднее,
MAX(Количество) AS Максимум, MIN(Количество) AS Минимум
FROM Заказ
WHERE Количество > 5
GROUP BY КодТовара
HAVING SUM(Количество) < 30
/* выборка данных из представления Запрос1 */
SELECT *
FROM Запрос1
WHERE ЕдиницаИзм = 'штука'
Примеры выборки некоторых системных данных:
/* Список учетных записей, которым разрешен доступ к серверу */
USE master -- переключаемся на системную базу данных master
SELECT name, dbname, password, language
FROM syslogins
USE Склад_ХХХ -- переключаемся обратно на базу данных Склад_ХХХ
/* Список учетных записей, включенных в фиксированные роли сервера */
EXEC sp_helpsrvrolemember
/* Список пользователей базы данных Склад_ХХХ */
EXEC sp_helpuser
/* Список ролей (как фиксированных, так и пользовательских) базы данных Склад_ХХХ */
EXEC sp_helprole
/* Членство ролей и пользователей в ролях базы данных Склад_ХХХ */
EXEC sp_helprolemember