DB_shared / БД_ЛР_7_8
.docЛабораторные работы № 7, 8
Работа с СУБД MS SQL Server 2008.
Базы данных, таблицы и другие объекты.
Язык SQL. Операторы INSERT, UPDATE, DELETE.
Теоретические сведения.
Операторы добавления, изменения и удаления данных
Для добавления в таблицу новых строк в SQL используется команда INSERT.
Эта команда может использоваться в двух разновидностях.
Добавление одной строки со значениями, задаваемыми пользователем:
INSERT INTO <table> [(список заполняемых полей)]
VALUES (список значений полей)
Добавление любого количества строк, уже хранящихся в БД:
INSERT INTO <table> [(список заполняемых полей)]
SELECT <список полей> FROM <список таблиц> WHERE <условие>
(в запросе можно использовать любые варианты запроса выборки SELECT; главное, чтобы количество выводимых полей совпадало с количеством добавляемых полей).
Для изменения хранящихся в таблице данных используется команда UPDATE:
UPDATE <table> SET <изменяемое поле> = <новое значение>
WHERE <условие>
Для удаления данных используется команда DELETE:
DELETE FROM <table> WHERE <условие>
Задание условия в разделе WHERE не обязательно, а применяется так же как в команде SELECT для отбора части строк. Если такого условия нет, то оператор затронет все строки таблицы, если есть – то только те, для которых заданное условие истинно.
Работа со структурой ведется с помощью команд CREATE (создать), ALTER (изменить) и DROP (удалить). Написание команд различается в зависимости от объектов, с которыми ведется работа.
В SQL Server Management Studio соответствующую команду можно сформировать автоматически с помощью контекстного меню:
Основным объектом любой базы данных является таблица, предназначенная для хранения данных.
Таблицы и другие объекты в SSMS MS SQL Server 2008 могут создаваться как выполнением соответствующей команды на SQL, так и с помощью встроенных инструментов:
Для понятного отображения структуры БД можно создавать диаграммы (аналог Схем данных в MS Access).
Связи между таблицами можно задавать как с помощью вызова специального окна в папке Keys, так и «перетаскивая» нужное поле мышью на диаграмме.
В БД под управлением СУБД MS SQL Server можно создавать не только таблицы, в которых хранятся данные, но и многочисленные вспомогательные объекты.
Представление VIEW – именованная динамически поддерживаемая сервером выборка из одной или нескольких таблиц (виртуальная таблица). Представление – это хранимый оператор SELECT, который выполняется при каждом обращении к Представлению.
В отличие от обычных таблиц реляционной БД, представление не является самостоятельной частью набора данных, хранящегося в базе данных. Содержимое представления динамически вычисляется на основании данных, находящихся в реальных таблицах. Изменение данных в реальной таблице БД немедленно отражается в содержимом всех представлений, построенных на основании этой таблицы.
Создание и изменение представления возможно как на языке SQL, так и с помощью Мастера, аналогичного Мастеру создания запросов в MS Access:
Хранимая процедура STORED PROCEDURE – именованный набор конструкций, решающий конкретную задачу.
Функция FUNCTION – именованный набор конструкций языка, решающий конкретную задачу и возвращающий результат.
Триггер TRIGGER – процедура, автоматически выполняемая при наступлении заданного события (INSERT, UPDATE, DELETE).
Примеры:
Создание процедуры, обновляющей зарплату:
CREATE PROCEDURE Pr_test_1
@Emp_id int, @sal int
AS
BEGIN
UPDATE Emp SET Salary=@sal WHERE ID_emp=@Emp_id;
END
Вызов процедуры:
Pr_test_1 1,5050
Создание функции, возвращающей максимальную зарплату отдела:
CREATE FUNCTION MaxSal
(@Dep_ID int)
RETURNS int
AS
BEGIN
RETURN (SELECT max(salary) FROM emp WHERE Id_dep=@Dep_ID);
END
Вызов функции:
SELECT dbo.MaxSal(2);
Создание триггера, который при смене должности автоматически увеличивает зарплату:
CREATE TRIGGER Trig_test_1
ON Emp
AFTER UPDATE
AS
BEGIN
IF (SELECT id_job FROM Inserted) <> (SELECT id_job FROM Deleted)
BEGIN
UPDATE Emp SET Salary=Salary+100 WHERE id_emp=
(SELECT id_emp FROM Inserted);
END;
END;
Deleted и Inserted– виртуальные таблицы, которые существуют во время работы триггера: первая из них содержит строку до изменения, вторая – после изменения.
Подключение к MS SQL Server
Запуск Microsoft SQL Server Management Studio на лабораторной работе:
Start – All Programs – Microsoft SQL Server 2008 R2 – SQL Server Management Studio. Вид аутентификации – ‘Windows Authentication’
Лабораторное задание
ЛР 7:
-
Создать в базе данных Study в своей схеме копии таблиц, использовавшихся в лабораторных работах №5, 6, задав свои названия таблиц и столбцов.
-
Создать диаграмму, отобразить в ней все таблицы своей схемы и связи между ними.
-
Преобразовать структуру таким образом, чтобы:
-
Участниками проекта были не сотрудники, а отделы.
-
При этом для проекта задавался сотрудник, ответственный за его выполнение.
-
Уровень зарплаты определялся не только категорией, но и должностью сотрудника.
-
Для надбавки указывать в рамках какого проекта она выплачивается.
-
Заполняя данные, подготовить запросы в соответствии с вариантом.
ЛР 8:
-
Создать представление, отображающее список проектов, в которых задействовано более одного отдела, с указанием имени, должности, отдела ответственного сотрудника.
-
Создать функцию, возвращающую суммарный доход заданного сотрудника.
-
Создать в своей схеме триггер для таблицы аналога EMP, который при внесении новой записи:
-
Если зарплата равна 0 или NULL, то задается минимальная зарплата сотрудника заданной категории из таблицы SALGRADE.
Вариант 1 (нечетный).
-
При переносе данных из таблицы EMP задать зарплату, соответствующую минимальному уровню категории сотрудника.
-
Увеличить зарплату в 1,5 раза сотрудникам отдела 1, имеющим надбавки.
-
Увеличить зарплату в 2 раза менеджерам и инженерам, не имеющим надбавок.
-
Удалить из списка сотрудников всех менеджеров.
-
Добавить менеджеров, поставив им должность «Супервизор» и сегодняшнюю дату поступления на работу.
Вариант 2 (четный).
-
При переносе данных из таблицы EMP задать зарплату, соответствующую максимальному уровню категории сотрудника.
-
Уменьшить зарплату на 200 сотрудникам, получающим больше 2000 и имеющим надбавки.
-
Увеличить зарплату на 500 сотрудникам отделов 1 и 3, не имеющим надбавок.
-
Удалить из списка сотрудников всех инженеров.
-
Добавить инженеров, поставив им должность «Мастер», подразделение – «Технический отдел».