БД_лабы(11 лаб, 5 семестр) / БД_ЛР4
.docx
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Систем автоматизированного проектирования
отчет
по лабораторной работе №4
по дисциплине «Базы Данных»
Тема: Модификация данных
Студенты гр. 3352 |
________________ |
Гареева К.Р. |
|
________________ |
Жигунова О.М. |
Преподаватель |
________________ |
Горяинов С.В. |
Санкт-Петербург
2025
Цель работы
Научиться выполнять команды вставки, удаления и обновления данных.
Ход работы
Упражнение 1 - применение команды INSERT
Запрос 1:
Запишем запрос с оператором INSERT INTO (рис. 1):
INSERT INTO item (isbn, title_no, cover, loanable, translation)
VALUES
(10001, 8, 'HARDBACK', 'Y', 'ENGLISH'),
(10101, 8, 'SOFTBACK', 'Y', 'ENGLISH');
Рисунок 1 - Результат выполнения 1-го запроса.
Оператор INSERT INTO добавляет новые строки в таблицу item. В скобках перечислены столбцы, куда мы будем вставлять данные.
Убедимся в добавлении строк с помощью запроса к таблице item (рис. 2):
SELECT *
FROM item
WHERE title_no = 8;
Рисунок 2 - Результат выполнения 2-го запроса.
Запрос 2:
Добавим запись в таблицу copy:
INSERT INTO copy (isbn, copy_no, title_no, on_loan)
VALUES (10001, 1, 8, 'N');
Таким образом, мы зарегистрировала первый экземпляр книги с isbn 10001 (рис. 3).
Рисунок 3 - Результат выполнения 3-го запроса.
Проверим с помощью select выполнение запроса (рис. 4):
SELECT *
FROM copy
WHERE isbn = 10001;
Рисунок 4 - Результат выполнения 4-го запроса.
Запрос 3:
SELECT translation
FROM item
WHERE isbn = 10001;
Данный запрос возвращает язык, на который переведен экземпляр книги, добавленной ранее (рис. 5).
Рисунок
5
-
Результат выполнения 5-го
запроса.
Упражнение 2 - использование команды INSERT с ключевым словом
DEFAULT:
Запрос 4:
EXEC sp_help title;
Данная хранимая процедура возвращает справочную информацию таблицы title: столбцы, типы данных и ограничения и т.д (рис. 6).
Рисунок 6 - Результат выполнения 6-го запроса.
Запрос 5:
INSERT INTO title (title, author, synopsis)
VALUES ('The Art of Lawn Tennis', 'William T. Tilden', DEFAULT);
Запрос добавляет в таблицу title строку с названием и автором для соответствующих столбцов, а в synopsis записывает значение по умолчанию за счет ключевого слова DEFAULT (рис. 7).
Рисунок 7 - Результат выполнения 7-го запроса.
Проверим выполнение запроса с помощью select (рис. 8):
SELECT *
FROM title
WHERE title = 'The Art of Lawn Tennis';
Рисунок 8 - Результат выполнения 8-го запроса.
Запрос 6:
SELECT SCOPE_IDENTITY() AS LastTitleNo;
Функция SCOPE_IDENTITY() возвращает последнее значение поля с IDENTITY (рис. 9).
Рисунок 9 - Результат выполнения 9-го запроса.
Запрос 7:
Выведем все поля записи, где title_no совпадает со значением SCOPE_IDENTITY (рис. 10):
SELECT *
FROM title
WHERE title_no = SCOPE_IDENTITY();
Рисунок 10 - Результат выполнения 10-го запроса.
Запрос 8:
Напишем запрос, который добавляет новые данные в столбцы title и author (рис. 11):
INSERT INTO title (title, author)
VALUES ('Riders of the Purple Sage', 'Zane Grey');
Рисунок 11 - Результат выполнения 11-го запроса.
Выведем результат вставки (рис. 12):
SELECT *
FROM title
WHERE author = 'Zane Grey' OR title = 'Riders of the Purple Sage';
Рисунок 12 - Результат выполнения 12-го запроса.
Упражнение 2 - использование команды INSERT с ключевым словами
DEFAULT VALUES:
Запрос 9:
Переключимся в базу данных library:
USE Library;
Создадим таблицу с двумя столбцами. Столбец Cust_id хранит id клиентов, начиная со 100. Name представляет собой строку длиной 10 символов (рис. 13):
CREATE TABLE sample1 (
Cust_id INT NOT NULL IDENTITY(100,5),
Name CHAR(10) NULL
);
Рисунок 13 - Результат выполнения 13-го запроса.
Вставим строку, где во всех полях записаны значения по умолчанию (рис. 14):
INSERT INTO sample1
DEFAULT VALUES;
Рисунок 14 - Результат выполнения 14-го запроса.
Выведем результат выполнения вставки (рис. 15):
SELECT *
FROM sample1;
Рисунок 15 - Результат выполнения 15-го запроса.
Упражнение 4 - использование команды DELETE
Запрос 10:
Выведем все поля таблицы item по заданным условиям (рис. 16):
SELECT *
FROM item
WHERE isbn = 10101
AND title_no = 8
AND cover = 'SOFTBACK';
Рисунок 16 - Результат выполнения 16-го запроса.
Далее удалим эту строку (рис 17):
DELETE FROM item
WHERE isbn = 10101
AND title_no = 8
AND cover = 'SOFTBACK';
Рисунок 17. Данные после выполнение DELETE.
Повторим запрос с select и увидим, что строка удалена (рис. 17)
Упражнение 5 - использование команды UPDATE
Запрос 11:
Выведем из таблицы member данные читателя с номером 507 (рис. 18):
SELECT *
FROM member
WHERE member_no = 507;
Рисунок 18 - Результат выполнения запроса 18.
Запрос 12:
Изменим значения полей с помощью оператора UPDATE, поменяв имя и фамилию читателя (рис. 19):
UPDATE member
SET lastname = 'Ryouhei', firstname = 'Arisu'
WHERE member_no = 507;
Рисунок 19 - Результат выполнения запроса 19.
Упражнение 6 - изменение данных на основе информации других таблиц
Запрос 13:
Мы добавляем нового члена библиотеки с номером 16101, фамилией Walters, именем B, инициалом отчества L. Указываем, что этот ребёнок прикреплён к взрослому члену библиотеки №1 (рис. 20).
USE library;
BEGIN TRANSACTION;
SET IDENTITY_INSERT member ON;
INSERT INTO member (member_no, lastname, firstname, middleinitial)
VALUES (16101, 'Walters', 'B', 'L');
SET IDENTITY_INSERT member OFF;
INSERT INTO juvenile (member_no, adult_member_no, birth_date)
VALUES (16101, 1, DATEADD(YY, -18, DATEADD(DD, -1, GETDATE())));
COMMIT TRANSACTION;
Рисунок 20 - Результат выполнения запроса 20.
Запрос 14:
Напишем запроса, который выводит из базы данных juvenile читателей, которые уже достигли 18 лет (рис. 21):
SELECT
j.member_no, a.street, a.city, a.state, a.zip, a.phone_no,
DATEADD(YY, 1, GETDATE()) AS next_date
FROM juvenile j
JOIN adult a ON j.adult_member_no = a.member_no
WHERE j.birth_date <= DATEADD(YY, -18, GETDATE());
Рисунок 21 - Результат выполнения запроса 21.
Запрос 15:
Изменяем предыдущий запрос, чтобы результат добавлялся в adult (рис. 22).
INSERT INTO adult (member_no, street, city, state, zip, phone_no, expr_date)
SELECT
j.member_no, a.street, a.city, a.state, a.zip,a.phone_no,
DATEADD(YY, 1, GETDATE())
FROM juvenile j
JOIN adult a ON j.adult_member_no = a.member_no
WHERE DATEADD(YY, 18, j.birth_date) <= GETDATE();
Рисунок 22 - Результат выполнения запроса 22.
Проверим, что данный читатель под номером 16101 добавлен в таблицу adult (рис. 23).
SELECT *
FROM adult
WHERE member_no = 16101;
Рисунок 23 - Результат выполнения запроса 23.
Запрос 16:
SELECT
j.member_no,
j.birth_date,
a.member_no AS adult_member
FROM juvenile j
JOIN adult a
ON j.member_no = a.member_no;
Рисунок 24 - Результат выполнения запроса 24.
Запрос 17:
Изменим запись так, чтобы полученные данные удалялись из таблицы juvenile (рис 25).
DELETE j
FROM juvenile j
JOIN adult a
ON j.member_no = a.member_no;
Рисунок 25 - Результат выполнения запроса 25.
Затем проверим результат (рис 26).
SELECT *
FROM juvenile
WHERE member_no = 16101;
Рисунок 26 - Результат выполнения запроса 26.
Вывод
В ходе выполнения работы были изучены и применены основные команды модификации данных в SQL: INSERT, DELETE и UPDATE. Было освоено добавление новых записей в таблицы как с указанием конкретных значений, так и с использованием ключевых слов DEFAULT и DEFAULT VALUES, позволяющих вставлять данные по умолчанию. Также была изучена функция SCOPE_IDENTITY(), возвращающая последнее значение автоинкрементного поля, и показано использование транзакций для безопасного внесения связанных изменений в несколько таблиц. Команда DELETE позволила удалять записи по заданным условиям, а UPDATE - изменять значения существующих строк. Кроме того, были выполнены запросы, демонстрирующие изменение данных на основе информации из других таблиц с помощью операторов JOIN и INSERT. В результате работы были закреплены практические навыки управления содержимым базы данных.
