Язык манипулирования данными в Firebird

Страницы работы

Содержание работы

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Сибирский государственный аэрокосмический университет

имени академика М. Ф. Решетнева»

(СибГАУ)

Факультет информатики и систем управления (ФИСУ)

Кафедра безопасности информационных технологий (БИТ)

Лабораторная работа №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).

Похожие материалы

Информация о работе