- •Лабораторная работа №1 Концептуальная модель базы данных для железнодорожного вокзала
- •1.Анализ предметной области:
- •2.Разработка модели “сущность-связь” предметной области.
- •Лабораторная работа №2 Изучение основ реляционной алгебры Цель занятия
- •1.Для отношения b:
- •Лабораторная работа №4
- •Лабораторная работа №5 построение простейших запросов на выборку информации
- •Лабораторная работа №6 использование группировки и упорядочения данных
- •Лабораторная работа №7 запросы по удалению, изменению и добавлению данных
- •Лабораторная работа №8 Построение сложных запросов, запросов на соединение и объединение информации
- •Лабораторная работа №9 эллементы оптимизации запросов
Лабораторная работа №7 запросы по удалению, изменению и добавлению данных
Цель занятия
Изучение средств SQL для проектирования запросов-выборок по нескольким таблицам, построение запросов по удалению, изменению и добавлению данных.
Постановка задачи
В соответствии с индивидуальным вариантом построить на языке SQL не менее шести различных запросов к базе данных, созданной в ходе практического занятия №4. Необходимо обеспечить:
авыборку информации из нескольких таблиц;
будаление информации;
визменение информации;
г)добавление информации.
Ход работы
Запрос , показывающий полные сведения о железнодорожном вокзале для сотрудника с введенной с клавиатуры фамилией:
SELECT [Железнодорожный вокзал].[Полное название вокзала], Адрес, Телефон, Директор
FROM [Железнодорожный вокзал] INNER JOIN Сотрудник ON [Железнодорожный вокзал].[Полное название вокзала]=Сотрудник.[Полное название вокзала]
WHERE Сотрудник.Фамилия=[Введите фамилию сотрудника];
Запрос , удаляющий сотрудника по введенному с клавиатуры коду:
DELETE *
FROM Сотрудник
WHERE [№ ТРУДОВОГО ДОГОВОРА]=[ВВЕДИТЕ № ТРУДОВОГО ДОГОВОРА];
Запрос, изменяющий оклад сотрудника введенного с клавиатуры на оклад введенный с клавиатуры:
UPDATE [Справочник окладов] SET Оклад = [Введите новый оклад]
WHERE Должность=[Введите должность сотрудников];
Запрос, добавляющий в таблицу справочник окладов новую запись с должностью старший машинист и окладом = 25000 тыс.
INSERT INTO [Справочник окладов] ( Должность, Оклад )
VALUES ("Ст машинист", "25000");
Запрос, добавляющий в таблицу сотрудники сотрудника с № трудового договора 666, с фамилией Шац, с должностью старший машинист и работающего на киевском вокзале:
INSERT INTO Сотрудник ([№ трудового договора], фамилия, должность, [полное название вокзала])
VALUES (666, "Шац", "ст машинис", "Киевский");
Запрос , удаляющий пассажира с фамилией введенной с клавиатуры :
DELETE *
FROM Пассажир
WHERE Пассажир.[Фамилия]=[ВВЕДИТЕ ФАМИЛИЮ ПАССАЖИРА];
Лабораторная работа №8 Построение сложных запросов, запросов на соединение и объединение информации
Цель занятия
Изучение средств SQL для построения более сложных универсальных запросов.
Постановка задачи
В соответствии с индивидуальным вариантом построить на языке SQL не менее шести различных запросов к базе данных, созданной в ходе практического занятия №4. Необходимо обеспечить:
а построение информации на основе нескольких независимых запросов;
борганизация соединений необходимой информации;
впостроение запросов на объединение информации.
Ход работы
Запрос, показывающий полную информацию о наиболее молодых сотрудниках по каждой должности:
SELECT MAX([Дата рождения]) AS [макс дата рождения], Должность
FROM Сотрудник
GROUP BY Должность;
SELECT Сотрудник.*
FROM Сотрудник INNER JOIN Запрос1 ON (Сотрудник.Должность=Запрос1.Должность) AND (Сотрудник.[дата рождения]=Запрос1.[макс дата рождения]);
Запрос, показывающий полную информацию о пассажирах по каждому маршруту с наибольшей стоимостью билета не меньше 150 p.:
SELECT max([Стоимость билета]) AS [макс стоимость билета], [Название маршрута]
FROM [Маршрут движения]
GROUP BY [Название маршрута]
HАVING max([Стоимость билета])>=150 р.;
SELECT Пассажир.*
FROM Пассажир INNER JOIN Запрос3 ON Пассажир.[Название маршрута]=Запрос3.[Название маршрута];
Запрос, показывающий всю информацию о вокзале сотрудником которого является человек с введенной с клавиатуры фамилией:
SELECT [Железнодорожный вокзал].*
FROM [Железнодорожный вокзал] LEFT JOIN Сотрудник ON [Железнодорожный вокзал].[Полное название вокзала]=Сотрудник.[Полное название вокзала]
WHERE Сотрудник.Фамилия =[ВВедите фамилиЮ];
Запрос, показывающий фамилии, имена и отчества всех сотрудников и пассажиров имеющихся в базе данных:
SELECT Фамилия, Имя, Отчество
FROM Сотрудник
UNION ALL SELECT Фамилия, Имя, Отчество
FROM Пассажир
ORDER BY Фамилия;
Запрос, показывающий фамилии ПАСАЖИРОВ КУПИВШИХ БИЛЕТ 10/10/2008 ИЛИ 10/15/2008 и СОТРУДНИКИ МУЖЧИНЫ С ИМЕНЕМ НА С:
SELECT Фамилия
FROM [# СОТРУДНИКИ МУЖЧИНЫ С ИМЕНЕМ НА С]
UNION ALL SELECT Фамилия
FROM [# ПАСАЖИРЫ КУПИВШИЕ БИЛЕТ 10/10/2008 ИЛИ 10/15/2008]
ORDER BY Фамилия;
Запрос, показывающий фамилии МАШИНИСТОВ ОТ 25 ДО 40 и ПАССАЖИРЫ С СЕРИЕЙ ПАСПОРТА НА 28 ИЛИ 29:
SELECT Фамилия
FROM [# МАШИНИСТЫ ОТ 25 ДО 40]
UNION ALL SELECT Фамилия
FROM [# ПАССАЖИРЫ С СЕРИЕЙ ПАСПОРТА НА 28 ИЛИ 29]
ORDER BY Фамилия;