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

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Систем автоматизированного проектирования

отчет

по лабораторной работе №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. В результате работы были закреплены практические навыки управления содержимым базы данных.

Соседние файлы в папке БД_лабы(11 лаб, 5 семестр)