Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Сибирский государственный аэрокосмический университет
имени академика М. Ф. Решетнева»
(СибГАУ)
Факультет информатики и систем управления (ФИСУ)
Кафедра безопасности информационных технологий (БИТ)
Лабораторная работа №4
«Язык манипулирования данными в Firebird»
По дисциплине
«Безопасность систем баз данных»
Выполнили: студенты гр. КБ-51
Бессмертный Д.О. ______________
Баженов Е.Н. _____________
Проверил:
Жуков В.Г. ____________
Красноярск 2008
Цель: освоение способов манипулирования данными в реляционной СУБД Firebird 1.5, изучение и приобретение начальных навыков использования основных операторов DML.
Ход выполнения работы:
1. Зарегистрируем нашу базу в Interbase&Firebird Development Studio ► Консоль администратора.
В Общих настройкахукажем регистрационную информацию БД.
Протестируем соединение и зарегистрируем БД;
В Консоли администратораперейдем на закладку серверы и импортируем список серверов из списка зарегистрированных баз.
Посмотрим Свойства сервера и Лог сервера.
2. Создадим новый проект и загрузим в него нашу БД через пункт меню
База ► Загрузить структуру базы в проект.
После загрузки БД в проект посмотрим диаграмму нашей БД
3. Сформулируем SQL-запросы к БД. Далее выполним подготовленные запросы в Interbase&Firebird Development Studio ► Редактор базы данных ► Редактор SQLи убедимся в правильности результатов:
Использование вложенных подзапросов:
Получим список ноутбуков Acer, максимум на 10 000 дешевле самого дорого ноутбука из БД:
SELECT
PRODUCER ||' '|| MODELS.MODEL AS NOTEBOOK, PRICE
FROM PRICES JOIN MODELS ON PRICES.MODEL=MODELS.ID
WHERE PRODUCER='Acer'
AND PRICE>=(SELECT MAX (PRICE) FROM PRICES)-10000
Пример внутреннего соединения:
Получим список ноутбуков с ценой не больше 25 500 и процессором Intel:
SELECT
PRODUCER ||' '|| MODELS.MODEL AS NOTEBOOK,
PROCESSOR_TYPE.PROC_TYPE, PRICE
FROM PRICES, MODELS JOIN PROCESSOR_TYPE ON MODELS.PROC=PROCESSOR_TYPE.ID
WHERE PRICE<=25500
AND PROCESSOR_TYPE.PROC_TYPE CONTAINING 'Intel'
AND MODELS.ID=PRICES.MODEL
Получим список всех ноутбуков (производитель и название модели) с ценой в пределах от 20 500 до 30 500, отсортированный по цене:
SELECT
PRODUCER||' '||MODELS.MODEL as NOTEBOOK, PRICE
FROM PRICES JOIN MODELS ON PRICES.MODEL=MODELS.ID
WHERE PRICE BETWEEN 20500 AND 35500
ORDER BY PRICE
SELECT
MODELS.ID, MODEL, "SIZE"
FROM MODELS JOIN SCREEN_TYPE ON MODELS.SCREEN=SCREEN_TYPE.ID
ORDER BY MODELS.ID
Пример внешнего соединения:
Изменим предыдущий запрос
SELECT
MODELS.ID, MODEL, "SIZE"
FROM MODELS RIGHT JOIN SCREEN_TYPE ON MODELS.SCREEN=SCREEN_TYPE.ID
ORDER BY MODELS.ID
Использование функции CASE:
SELECT DISTINCT ID, FREQUENCY,
CASE
WHEN (MEM_TYPE='DDR-II') THEN 'DDR-2'
ELSE MEM_TYPE
END AS NEW_TYPE
FROM MEMORY_TYPE
Создание таблицы с вычисляемым полем:
CREATE TABLE BUYER (
ID BIGINT NOT NULL,
SALE BIGINT,
PRICE INTEGER,
LAST_PRICE COMPUTED BY (PRICE*(1-SALE)),
CONSTRAINT PK_BUYER PRIMARY KEY (ID)
);
Данный пример создает таблицу, где среди других полей имеется вычисляемое поле LAST_PRICE, значение которого вычисляется по значениям двух других полей (PRICE и SALE).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.