- •Основные понятия баз данных. Этапы развития субд. Функции субд. Требования к системам управления базами данных.
- •Архитектура баз данных. Логическая и физическая независимость данных. Схема прохождения запросов к бд.
- •Логическая и физическая независимость данных
- •Классификация моделей данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •Модели «клиент-сервер» в технологи баз данных
- •Модель файлового сервера
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Модель сервера приложений
- •Реляционная модель бд, ее основные достоинства. Таблица, кортеж, атрибут, домен, первичный ключ, внешний ключ. Фундаментальные свойства отношений.
- •Фундаментальные свойства отношений
- •Обеспечение целостности данных.
- •Основы реляционной алгебры. Операторы реляционной алгебры. Операторы реляционной алгебры
- •Понятия полной и транзитивной функциональной зависимости. Нормализация, третья нормальная форма, шаги нормализации.
- •Нормальные формы и нормализация
- •Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных. Инфологическая модель данных «Сущность-связь»
- •Классификация сущностей
- •Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.
- •Типы данных в субд oracle 9.2i
- •Структура языка sql
- •Оператор выбора select
- •Запросы с использованием единственной таблицы Выборка без использования параметра where
- •Выборка с использованием параметра where
- •Использование параметров group by и having
- •Запросы с использованием нескольких таблиц Запросы с использованием соединений
- •Последовательности
- •Создание и удаление последовательностей
- •Изменение последовательностей
- •.Использование последовательностей
- •Оператор ввода новых строк insert Вставка единственной записи в таблицу
- •Вставка множества записей
- •Оператор изменения значений полей update
- •Обновление единственной записи
- •Обновление множества записей
- •Обновление с подзапросом
- •Оператор удаления строк delete
- •Удаление единственной записи
- •Удаление множества записей
- •Удаление с вложенным подзапросом
- •Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления. Оператор create Создание таблицы
- •Создание первичного ключа
- •Создание уникального ключа
- •Создание домена
- •Создание внешнего ключа
- •Удаление ограничений целостности
- •Оператор drop
- •Представления
- •Создание и удаление представлений
- •Операции выборки из представлений
- •Обновляемые представления
- •Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.
- •Объектные и системные привилегии
- •Операторы grant и revoke
- •Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.
- •Операторы управления транзакциями
- •Журналы транзакций
- •Язык pl/sql, его структура, основные операторы.
- •Курсоры, явные и неявные курсоры, операторы работы с курсором, оператор select into.
- •Процедуры, функции, пакеты.
- •Триггеры, их основные свойства и значение.
- •Параллельные архитектуры бд; масштабируемость, надежность, производительность.
- •Распределенные базы данных, фрагментация, тиражирование.
- •Средства защиты данных в субд.
- •Аутентификация/авторизация при помощи паролей.
- •Инкапсуляция передаваемой информации в специальных протоколах обмена.
- •Ограничение информационных потоков.
- •Классы безопасности
- •Шлюзы к базам данных. Архитектура odbc. Www-интерфейс к бд. Промежуточное программное обеспечение (ппо) баз данных
- •Доступ к базам данных
- •Недостатки реляционных субд
- •Манифест систем объектно-ориентированных баз данных Обязательные свойства: золотые правила
- •Необязательные возможности Множественное наследование, проверка и вывод типов, распределенность, проектные транзакции (протяженные транзакции или вложенные транзакции), версии
- •Объектная модель данных
- •Объектно-ориентированные, объектно-реляционные бд, универсальные бд
- •Эволюция технологий и возможностей субд oracle (oracle 8i, oracle 9i, oracle 10g).
- •Роль grid-технологий в организации хранения и обработки данных. Перспективы развития технологий баз данных.
Выборка с использованием параметра where
Параметр WHERE служит для реализации реляционной операции горизонтальной фильтрации, то есть отбора кортежей, или строк, удовлетворяющих определенному условию. Условие может быть составлено с использованием следующих конструкций:
операторы сравнения: =, < , > , <= , >= , <>;
булевы операторы: AND, OR, NOT;
оператор проверки на вхождение в множество: IN;
оператор проверки на вхождение в диапазон: BETWEEN;
оператор проверки на существование: EXISTS;
оператор проверки удовлетворению шаблону (только для символьных полей): LIKE;
операторы сравнения с NULL: IS NULL, IS NOT NULL;
агрегатные функции: COUNT, SUM, AVG, MAX, MIN;
константы и выражения;
подзапросы.
Следует быть осторожными при использовании булевых операторов, поскольку существует приоритет AND над OR (сначала выполняются все операции AND и только после этого операции OR). Для получения желаемого результата WHERE условия должны быть введены в правильном порядке, который можно организовать введением скобок.
При обработке условия числа сравниваются алгебраически – отрицательные числа считаются меньшими, чем положительные, независимо от их абсолютной величины. Строки символов сравниваются в соответствии с их представлением в коде, используемом в конкретной СУБД, например, в коде ASCII. Если сравниваются две строки символов, имеющих разные длины, более короткая строка дополняется справа пробелами для того, чтобы они имели одинаковую длину перед осуществлением сравнения.
Использование операторов сравнения
В параметре WHERE оператора SELECT для отбора нужных строк таблицы можно использовать операторы сравнения = (равно), <> (не равно), < (меньше), <= (меньше или равно), > (больше), > = (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения «не меньше» и «не больше».
-- получения списка менеджеров, процент комиссионных которых
-- не превышает 50
SELECT Name FROM Managers WHERE Procent <=50;
-- то же самое с применением оператора NOT
SELECT Name FROM Managers WHERE NOT Procent >50;
Возможность использования нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, позволяет осуществить более детальный отбор строк. Например, для отбора имен менеджеров, процент комиссионных которых находится в диапазоне между 20 и 40, можно выполнить следующий запрос:
SELECT Name FROM Managers
WHERE (Procent >= 20) AND (Procent <= 40);
Использование BETWEEN
С помощью оператора BETWEEN можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне. Например, приведенных ранее пример отбора имен менеджеров, процент комиссионных которых находится в диапазоне между 20 и 40, можно переписать следующим образом с применением оператора BETWEEN:
SELECT Name FROM MANAGERS WHERE Procent BETWEEN 20 AND 40;
При помощи сочетания операторов NOT и BETWEEN можно отобрать строки, в которых значение какого-либо столбца не находится в заданном диапазоне. Например:
SELECT Name FROM MANAGERS WHERE Procent NOT BETWEEN 20 AND 40;
Использование оператора BETWEEN возможно не только по отношению к полям числового типа, он применим также к полям строкового типа и датам. Например:
-- отбор информации о сделках продажи,
-- прошедших за последнюю неделю
SELECT * FROM Outgoing
WHERE Out_Date BETWEEN sysdate-7 AND sysdate;
Использование IN
Оператор IN используется для проверки вхождения значения какого-либо столбца в множество. Например:
SELECT Name FROM Managers
WHERE Procent IN (5, 10, 15);
Рассмотренная форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно такому:
SELECT Name FROM Managers
WHERE (Procent=5) OR (Procent=10) OR (Procent=15);
В сочетании с оператором IN можно также использовать NOT для отбора строк, в которых значение какого-либо столбца наоборот не входит в множество. Например:
SELECT Name FROM Managers
WHERE Procent NOT IN (5, 10, 15);
Использование LIKE
Оператор LIKE используется для отбора строк, в которых значение какого-либо удовлетворяет определенному шаблону. Данный оператор применяется только к символьным полям. Обычная форма имя_столбца LIKE текстовая_константа для столбца символьного типа позволяет отыскать все значения указанного столбца, соответствующие шаблону, заданному текстовой_константой. Символы этой константы интерпретируются следующим образом:
символ _ (подчеркивание) – заменяет любой одиночный символ;
символ % (процент) – заменяет любую последовательность из любого количества символов, в том числе нулевого;
все другие символы означают просто сами себя.
Примеры:
-- отбор информации о менеджерах,
-- имена которых начинаются с заглавной буквы «И»
-- и заканчивающихся на «ов»
SELECT * FROM Managers
WHERE Name LIKE ‘И%ов’;
-- отбор информации о менеджерах, имена которых
-- начинаются с любой буквы, после которой идут
-- буквы «ва» и далее любое количество любых букв
SELECT * FROM Managers
WHERE Name LIKE ‘_ва%’;
Оператор LIKE также можно сочетать с NOT для получения строк, значения определенных столбцов которых не удовлетворяют указанному шаблону.
SELECT * FROM Managers
Сравнение с неопределенным значением NULL
Для отбора строк таблицы, значения атрибутов которых необходимо сравнивать на равенство или неравенство с NULL-значением, используют операторы IS NULL и IS NOT NULL соответственно. Использование операторов «=» или «<>» не вызовет ошибки, но и не позволит достичь необходимого результата. Например:
-- отбор менеджеров, у которых не указан размер комиссионных
SELECT Name FROM Managers WHERE Procent IS NULL;
В СУБД ORACLE есть некоторые отличия реализации NULL-значений по сравнению со стандартом ANSI SQL. Согласно ANSI все типы данных должны поддерживать неопределенные или NULL-значения. СУБД ORACLE в полной мере поддерживает это правило для всех типов, за исключением символьных. Для любых символьных данных пустая строка интерпретируется как NULL, например два оператора ORACLE SQL полностью идентичны и вставят в поле Comments значения NULL, а не пустые строки:
INSERT INTO Dealers VALUES(1, ‘Иванов А.И.’, 3, NULL);
INSERT INTO Dealers VALUES(1, ‘Иванов А.И.’, 3, ‘’);
В ORACLE вообще нельзя вставить пустую строку – она всегда будет рассматриваться как NULL.