Лабораторная работа №3
Вставка, удаление и обновление данных
Теперь заполним таблицы тестовыми данными в графическом режиме.
MSSQL
Следует заметить, что данный скрипт был сгенерирован автоматически
USE [Notarius]
GO
INSERT INTO [dbo].[Sdelka]
([N sdelki]
,[N skidki]
,[N uslugi]
,[N klienta]
,[Data]
,[Summa sdelki]
,[Komissionie])
VALUES
('3'
,'2'
,'4'
,'2'
,'2012-11-14'
,'600'
,'100')
GO
USE [Notarius]
GO
INSERT INTO [dbo].[Klient]
([N klienta]
,[FIO]
,[Vid deytelnosti]
,[Adres]
,[Telefon])
VALUES
('5'
,'Egorova Anna Dmitrievna'
,'Vrach'
,'Omsk, 1 Poselkovaiy, 62-109'
,'8-904-987-01-23')
GO
При заполнении таблиц была допущена ошибка и было необходимо удалить одну запись из таблицы:
USE [Notarius]
GO
DELETE FROM [dbo].[Sdelka]
WHERE [N sdelki]='1';
GO
ORACLE
Данный скрипт также был сгенерирован автоматически. Фактически же заполнение происходило в графическом режиме в SQLDeveloper.
INSERTINTO"SYSTEM"."KLIENT" (N_KLIENTA,FIO,VID_DEYTELNOSTI,ADRES,TELEFON)VALUES('1', 'Иванов Пётр Михайлович', 'Пенсионер', 'Омск, Лукашевича, 15-103', '22-84-56')
INSERT INTO "SYSTEM"."KLIENT" (N_KLIENTA, FIO, VID_DEYTELNOSTI, ADRES, TELEFON) VALUES ('2', 'Кубатов Игорь Владимирович', 'Студент', 'Омск, Мира проспект, 105-75', '8-904-587-69-25')
INSERT INTO "SYSTEM"."KLIENT" (N_KLIENTA, FIO, VID_DEYTELNOSTI, ADRES, TELEFON) VALUES ('3', 'Петрова Юлия Викторовна', 'Домохозяйка', 'Омск, Нефтезаводская, 13-84', '8-913-845-75-02')
INSERT INTO "SYSTEM"."KLIENT" (N_KLIENTA, FIO, VID_DEYTELNOSTI, ADRES, TELEFON) VALUES ('4', 'Лаптев Андрей Юрьевич', 'Преподаватель', 'Омск, Магистральная, 47-2', '64-25-86')
INSERT INTO "SYSTEM"."KLIENT" (N_KLIENTA, FIO, VID_DEYTELNOSTI, ADRES, TELEFON) VALUES ('5', 'Лисина Ольга Андреевна', 'Врач', 'Омск, Красный путь, 133-25', '8-923-754-01-68')
INSERT INTO "SYSTEM"."KLIENT" (N_KLIENTA, FIO, VID_DEYTELNOSTI, ADRES, TELEFON) VALUES ('6', 'Сидоров Владимир Анатольевич', 'Охранник', 'Омск, Архитекторов бульвар, 11-74', '8-904-758-61-33')
INSERT INTO "SYSTEM"."SKIDKA" (N_SKIDKI, VID_SKIDKI, RAZMER_SKIDKI) VALUES ('1', 'Студенческая', '100')
INSERT INTO "SYSTEM"."SKIDKA" (N_SKIDKI, VID_SKIDKI, RAZMER_SKIDKI) VALUES ('2', 'Подарочный купон', '2000')
INSERT INTO "SYSTEM"."SKIDKA" (N_SKIDKI, VID_SKIDKI, RAZMER_SKIDKI) VALUES ('3', 'Счастливое время', '350')
INSERT INTO "SYSTEM"."SKIDKA" (N_SKIDKI, VID_SKIDKI, RAZMER_SKIDKI) VALUES ('4', 'Флаер', '150')
INSERT INTO "SYSTEM"."SKIDKA" (N_SKIDKI, VID_SKIDKI, RAZMER_SKIDKI) VALUES ('5', 'Пенсионерам', '250')
INSERT INTO "SYSTEM"."SKIDKA" (N_SKIDKI, VID_SKIDKI, RAZMER_SKIDKI) VALUES ('6', 'Новогодняя', '200')
Лабораторная работа №4
Создание простых запросов на выборку
Создадим несколько простых запросов на выборку данных.
Для выполнения запросов (извлечения строк из одной или нескольких таблиц БД) используется оператор SELECT. Результатом запроса всегда является таблица. Результаты запроса могут быть использованы для создания новой таблицы.
MSSQL
После выполнения следующего запроса, можно извлечь данные из таблицы Клиент, где № Клиента лежит в интервале между 2 и 5:
USE [Notarius]
GO
SELECT *
FROM [dbo].[Klient] WHERE [N klienta] BETWEEN '2' and '5'
GO
Этим запросом узнаем максимальный размер скидки из таблицы Скидка:
USE [Notarius]
GO
SELECT max([Razmer skidki]) as max
FROM [dbo].[Skidka]
GO
ORACLE
Выбрать ФИО и Адрес из таблицы Клиент
SELECTfio,adresFROMklient
Выбрать Максимальный размер скидки из таблицы Скидка
SELECT MAX(razmer_skidki) FROM skidka
Лабораторная работа №5
Создание сложных запросов на выборку
В реальных приложениях часто требуется использовать сразу несколько таблиц БД. Запросы, которые обращаются одновременно к нескольким таблицам, называются многотабличными или сложными запросами.
Хорошо спроектированная реляционная БД эффективна из-за связей между таблицами. При выборе информации из нескольких таблиц такие связи называют объединениями.
Создадим несколько сложных запросов, используя объединения и вложенные запросы.
MS
Данным запросом можно узнать Описание услуги из таблицы Услуга и ФИО клиентов из таблицы Клиент. Полученный результат будет упорядочен по ФИО клиентов:
USE[Notarius]
GO
SELECT[Opisanieuslugi], [FIO]
FROM [dbo].[Usluga], [dbo].[Klient]
WHERE [N uslugi]=[N klienta]
ORDERBY[FIO]
GO
Следующий запрос является вложенным. Он показывает ФИО и Телефон клиентов из таблицы Клиент, где № Клиента приравнивается к № Скидки из таблицы Скидка, и Размер скидка должен быть равен 100:
USE [Notarius]
GO
SELECT [FIO], [Telefon]
FROM [dbo].[Klient]
WHERE [N klienta] = (Select [N skidki] FROM [dbo].[Skidka]
WHERE [Razmer skidki]='100')
GO
ORACLE
Выполним аналогичные запросы в другой базе данных.
Выбрать Описание услуги из таблицы Услуга и ФИО клиентов из таблицы Клиент. Полученный результат будет упорядочен по ФИО клиентов:
SELECT usluga.opisanie_uslugi,klient.fio FROM usluga, klient WHERE usluga.n_uslugi = klient.n_klienta ORDER BY klient.fio
Следующий запрос является вложенным. Он показывает ФИО и Телефон клиентов из таблицы Клиент, где № Клиента приравнивается к № Скидки из таблицы Скидка, и Размер скидка должен быть равен 100:
SELECT klient.fio, klient.telefon FROM klient WHERE n_klienta=
(SELECT skidka.n_skidki FROM skidka WHERE skidka.razmer_skidki='100')