- •Глава I «Общие вопросы» Вопросы 1-6
- •История развития бд. Сравнить между собой этапы(файлы и файловые системы, бд на больших эвм, эпоха персональных компьютеров, распределенные базы данных)
- •История развития бд.
- •Файлы и файловые системы.
- •Базы данных на больших эвм.
- •Эпоха персональных компьютеров.
- •Распределенные базы данных.
- •Архитектура базы данных. Физическая и логическая независимость (трехуровневая модель ansi).
- •Описать процесс прохождения пользовательского запроса
- •Пользователи баз данных. Основные функции группы администратора бд
- •Пользователи баз данных.
- •Основные функции группы администратора базы данных.
- •Перечислить классы субд. Какие возможности обеспечивает использование профессиональных субд.
- •Этапы разработки аис.
- •Глава II «Архитектура бд, режимы работы» Вопросы 7-12
- •Режимы работы с базой данных.
- •Архитектура клиент-сервер: структура типового интерактивного приложения.
- •Модель fs.
- •Модель rda
- •Модель сервера баз данных
- •Модель сервера приложений
- •Глава III «Модели данных, язык описания данных, реляционная алгебра» Вопросы 13-19
- •Иерархическая модель данных. Язык описания данных иерархической модели. Внешние модели.
- •Иерархическая модель данных.
- •Язык описания данных иерархической модели.
- •Внешние модели.
- •Пример иерархической базы данных.
- •Язык манипулирования данными в иерархических базах данных. Операторы поиска данных. Операторы поиска данных с возможностью модификации. Операторы модификации данных.
- •Операторы поиска данных.
- •Операторы поиска данных с возможностью модификации.
- •Операторы модификации данных.
- •Обновить
- •Ввести новый экземпляр сегмента.
- •Сетевая модель данных. Язык описания данных в сетевой модели.
- •Сетевая модель данных.
- •15.2. Язык описания данных в сетевой модели.
- •Язык манипулирования данными в сетевой модели.
- •Реляционная алгебра. Теоретико-множественные операции реляционной алгебры. Основные операции (объединение, пересечение, разность, конкатенация кортежей, произведение)
- •18.1. Теоретико-множественные операции реляционной алгебры.
- •Реляционная алгебра. Теоретико-множественные операции реляционной алгебры. Специальные операции (выборка, проекция, соединение, деление).
- •Глава IV
- •Вопросы 20-27
- •Язык sql. История развития sql. Структура sql. Типы данных.
- •Язык sql. История развития sql.
- •Структура sql.
- •Типы данных.
- •Операторы описания данных (ddl).
- •Операторы манипулирования данными (dml)
- •Язык запросов dql. Оператор выбора select.
- •Предикаты раздела where
- •Null-значения. Трехзначная логика
- •Агрегатные функции в операторе выбора
- •Вложенные запросы.
- •Глава V «Проектирование бд» Вопросы 28-33
- •Проектирование реляционных бд на основе принципов нормализации:
- •Этапы жизненного цикла бд. Этапы проектирования бд
- •Системный анализ предметной области (два подхода к выбору состава и структуры предметной области)
- •Инфологическое моделирование. Er - модель (базовые понятия сущность, связь, типы связей: 1:1, 1:n, n:n, обязательная/необязательная).
- •Инфологическое моделирование.
- •Переход к реляционной модели данных (правила преобразования er-модели в реляционную).
- •Даталогическое проектирование. Перечень результирующих документов, корректная схема бд. Два пути проектирование схемы бд.
- •Глава VI «Нормальные формы» Вопросы 34-37
- •Последовательность нормальных форм. Их свойства. Первая нормальная форма (1нф), вторая нормальная форма (2нф),
- •Третья нормальная форма (3нф), нормальная форма Бойса-Кодда (бк нф),
- •Нф Бойса-Кодда.
- •Четвертая нормальная форма (4нф), пятая нормальная форма (5нф)
- •Глава VII «oracle (Теория)» Вопросы 38-42
- •Сурбд Oracle. Конфигурации Oracle. Типы пользователей. Основные обязанности dba.
- •Субд Oracle.
- •Конфигурации Oracle.
- •Типы пользователей.
- •Основные обязанности dba.
- •Архитектура Oracle (физический и логический уровень)
- •Субд Oracle. Табличные пространства. Сегменты, экстенты и блоки данных.
- •Онлайновые и офлайновые табличные пространства
- •Файлы данных
- •Сегменты, экстенты и блоки данных.
- •Сегменты.
- •Экстенты.
- •Блоки данных.
- •Экземпляр Oracle. Sga, pga
- •Процессы. 7 основных фоновых процессов Oracle
- •Пользовательские процессы
- •Процессы Oracle
- •Глава VIII «oracle (Практика)» Вопросы 43-49
- •Объекты бд Oracle. Создание таблиц. Типы данных
- •Объекты Oracle.
- •Создание таблиц.
- •Типы данных.
- •Субд Oracle. Создание индексов.
- •Субд Oracle. Создание представлений
- •Субд Oracle. Создание последовательностей
- •Субд Oracle. Определенные пользователем типы данных. Создание синонимов
- •Субд Oracle. Создание ограничений
- •Субд Oracle. Создание табличных пространств
- •Глава IX
- •Вопросы 50-58
- •Основные понятия и конструкции pl/sql. Архитектура pl/sql
- •Поддерживаемый набор символов pl/sql. Арифметические операторы и операторы отношения
- •Структура программы и переменные pl/sql
- •Pl/sql. Условные операторы if
- •Pl/sql. Циклы
- •Pl/sql. Курсоры. Курсорный цикл for.
- •Курсорный цикл for.
- •Pl/sql. Хранимые процедуры
- •Пример хранимой процедуры.
- •Pl/sql. Функции
- •Pl/sql. Триггеры
- •Пример триггера.
Pl/sql. Условные операторы if
Самым простым оператором ветвления в использовании, в PL/SQL является оператор IF. Его основная логическая форма имеет вид:
IF(некоторое условие справедливо) THEN
-- условие справедливо, выполнять это.
ELSE -- условие не выполняется
-- выполнять оператор в этой части.
END IF; -- конец условного оператора.
Так же для экономии памяти, возможно использовать конструкцию, типа:
IF(некоторое условие справедливо) THEN -- проверка условия
BEGIN
-- условие справедливо, выполнять это.
.
END;
ELSE -- условие не выполняется
DECLARE
x NUMBER;
BEGIN
.
END;
END IF; -- конец условного оператора.
В этом случае переменная x будет создана, если условие предыдущего блока ложно. Хотя использовать, такие конструкции не всегда оправдано. Так же условные операторы в PL/SQL вычисляются с помощью так называемой "сокращенной" оценки. Допустим, есть такое условие:
IF( a AND b ) THEN -- проверка условия
BEGIN
.
END;
END IF; -- конец условного оператора.
Если выражение a равно FALSE, то дальнейшее выражение не вычисляется! Все выражения вычисляются слева направо, а выражения в скобках, имеют наивысший приоритет.
Так же существует конструкция IF - THEN - ELSIF. Работает она следующим образом:
IF ( val = 1 ) THEN -- проверка условия
.
ELSIF ( val = 2 ) THEN
.
ELSIF ( val = 3 ) THEN
.
ELSIF ( val = 9 ) THEN
.
ELSE -- не сработало не одно из условий!
END IF; -- конец условного оператора.
Пример:
SET SERVEROUTPUT ON
DECLARE
A INTEGER := 7;
B INTEGER := 4;
OPER VARCHAR2(2) := '+';
BEGIN
DBMS_OUTPUT.enable;
IF (OPER = '+') THEN
DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'sum = '||TO_CHAR(A+B));
ELSIF (OPER = '-') THEN
DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'res = '||TO_CHAR(A-B));
ELSIF (OPER = '*') THEN
DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'mul = '||TO_CHAR(A*B));
ELSIF (OPER = '/') THEN
DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'div = '||TO_CHAR(A/B));
END IF;
END;
/
Pl/sql. Циклы
Как и во всех языках программирования, в PL/SQL имеются операторы циклов. Их три основных типа:
Безусловные циклы (выполняемые бесконечно)
Интерактивные циклы (FOR)
Условные циклы (WHILE)
Самый простой тип цикла в языке PL/SQL таков:
LOOP
NULL;
END LOOP
/
Но использовать такой цикл нет смысла, да и для экземпляра БД это не безопасно. Для этого необходимо использовать определенные пути выхода из циклов. Их то же три:
EXIT - Безусловный выход из цикла. Используется посредством применения оператора IF.
EXIT WHEN - Выход при выполнении условия.
GOTO - Выход из цикла во внешний контекст.
Пример с LOOP EXIT WHEN:
DECLARE
i NUMBER := 0;
BEGIN
LOOP -- start loop 1
i := i + 1;
IF (i >= 100) THEN
i := 0;
EXIT; -- exit when i >= 0
END IF;
END LOOP; -- end loop 1
LOOP -- start loop 2
i := i + 1;
EXIT WHEN (i >= 100); -- exit when i >= 0
END LOOP; -- end loop 2--------
END;
/
Пример LOOP EXIT WHEN END LOOP:
DECLARE
k NUMBER := 0;
BEGIN
WHILE (k < 10) LOOP
k := k + 1;
END LOOP;
END;
/
Пример с FOR:
BEGIN
FOR i IN 1..100 LOOP
NULL;
END LOOP;
END;
/
Пример с GOTO:
SET SERVEROUTPUT ON
DECLARE
s NUMBER := 0;
BEGIN
DBMS_OUTPUT.enable;
LOOP
IF(MOD(s, 2) = 1) THEN
GOTO LESS;
END IF;
DBMS_OUTPUT.put_line(TO_CHAR(s)||' is even!');
<<LESS>>
EXIT WHEN (s = 20);
s := s + 1;
END LOOP;
END;
/
