Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БД / DB_shared / БД_ЛР_7_8

.doc
Скачиваний:
28
Добавлен:
18.02.2017
Размер:
1 Mб
Скачать

Лабораторные работы № 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:

  1. Создать в базе данных Study в своей схеме копии таблиц, использовавшихся в лабораторных работах №5, 6, задав свои названия таблиц и столбцов.

  2. Создать диаграмму, отобразить в ней все таблицы своей схемы и связи между ними.

  3. Преобразовать структуру таким образом, чтобы:

  • Участниками проекта были не сотрудники, а отделы.

  • При этом для проекта задавался сотрудник, ответственный за его выполнение.

  • Уровень зарплаты определялся не только категорией, но и должностью сотрудника.

  • Для надбавки указывать в рамках какого проекта она выплачивается.

  1. Заполняя данные, подготовить запросы в соответствии с вариантом.

ЛР 8:

  1. Создать представление, отображающее список проектов, в которых задействовано более одного отдела, с указанием имени, должности, отдела ответственного сотрудника.

  2. Создать функцию, возвращающую суммарный доход заданного сотрудника.

  3. Создать в своей схеме триггер для таблицы аналога EMP, который при внесении новой записи:

  • Если зарплата равна 0 или NULL, то задается минимальная зарплата сотрудника заданной категории из таблицы SALGRADE.

Вариант 1 (нечетный).

  1. При переносе данных из таблицы EMP задать зарплату, соответствующую минимальному уровню категории сотрудника.

  2. Увеличить зарплату в 1,5 раза сотрудникам отдела 1, имеющим надбавки.

  3. Увеличить зарплату в 2 раза менеджерам и инженерам, не имеющим надбавок.

  4. Удалить из списка сотрудников всех менеджеров.

  5. Добавить менеджеров, поставив им должность «Супервизор» и сегодняшнюю дату поступления на работу.

Вариант 2 (четный).

  1. При переносе данных из таблицы EMP задать зарплату, соответствующую максимальному уровню категории сотрудника.

  2. Уменьшить зарплату на 200 сотрудникам, получающим больше 2000 и имеющим надбавки.

  3. Увеличить зарплату на 500 сотрудникам отделов 1 и 3, не имеющим надбавок.

  4. Удалить из списка сотрудников всех инженеров.

  5. Добавить инженеров, поставив им должность «Мастер», подразделение – «Технический отдел».

Соседние файлы в папке DB_shared