Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_Laboratornyi_774_praktikum.doc
Скачиваний:
28
Добавлен:
17.06.2021
Размер:
921.09 Кб
Скачать

Раздел IV. Анализ полученных результатов

1. Сохраните созданный итоговый сценарий в файле D:\Work\X7230ХХХ\script.sql. с помощью команды меню FileSave (или соответствующей кнопки на панели инструментов). Далее закройте окно Query, содержащее сценарий script.sql.

2. Удалите базу данных Склад_ХХХ. Для этого в ее контекстном меню выберите команду Delete и затем в появившемся окне Delete Object установите флажок Close Existing Connections.

3. С помощью команды меню FileOpenFile загрузите сценарий из файла D:\Work\X7230ХХХ\script.sql, после чего, нажав на панели инструментов кнопку Execute, создайте базу данных Склад_ХХХ заново.

4. Обновите данные на панели Object Explorer и сделайте базу данных Склад_ХХХ видимой.

5. Убедитесь, что с помощью сценария получена база данных Склад_ХХХ с требуемыми объектами и свойствами.

6. Проведите сравнительный анализ лабораторных работ 3 и 4, т.к. их выполнение привело к получению одного и того же результата – баз данных СкладХХХ и Склад_ХХХ соответственно. Укажите для каждого пункта, связанного с созданием объектов базы данных с помощью графического интерфейса (база данных СкладХХХ), соответствующую ему команду языка Transact-SQL и, в частности, какие ее фрагменты связаны с установкой тех или иных свойств конкретного объекта базы данных.

7. Удалите созданную базу данных Склад_ХХХ.

Лабораторная работа №5. Манипулирование данными с помощью команд языка Transact-sql

Цель работы

  1. Изучить команды языка манипулирования данными.

  2. Освоить основные команды языка определения данных.

Задачи

  1. Выборка данных из таблиц и представлений.

  2. Обновление данных в таблицах и представлениях.

  3. Удаление данных из таблиц и представлений.

  4. Изменение структуры таблицы.

  5. Удаление таблиц из базы данных.

Методические указания

При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio, после чего на панели Object Explorer в древовидной структуре раскройте папку Databases.

С помощью команды меню FileOpenFile загрузите сценарий из файла 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