- •Для чего нужны базы данных? Основные термины и определения. Компоненты субд.
- •Системы, основанные на файлах. Свойства, недостатки и пути их устранения.
- •Основные типы данных и их классификация. Модели данных и их компоненты. Типы моделей субд.
- •Методы доступа к данным. Поиск по дереву. Хеширование.
- •Назначение модели «сущность-связь». Элементы модели «сущность-связь».
- •Обор нотаций, используемых при построении диаграмм «сущность-связь». Нотация Чена
- •Нотация idef1x
- •Нотация Баркера
- •Иерархическая модель данных. Структура данных. Операции над данными. Ограничения целостности.
- •Сетевая модель данных. Структура данных. Операции над данными. Ограничения целостности.
- •10. Реляционная модель данных. Структура данных. Отношения. Свойство отношений.
- •Целостность реляционных данных. Null – значения. Трехзначная логика. Потенциальные ключи. Целостность сущностей.
- •Целостность реляционных данных. Внешние ключи. Родительские и дочерние отношения. Целостность внешних ключей.
- •Целостность реляционных данных. Операции, влияющие на целостность внешних ключей. Стратегии поддержания ссылочной целостности.
- •Этапы разработки баз данных. Критерии оценки качества логической модели данных.
- •15. Нормальные формы отношений. Первая нормальная форма (1нф). Аномалии обновления 1нф.
- •1Нф (Первая Нормальная Форма)
- •Третья нормальная форма (3нф). Сравнение нормализованных и ненормализованных моделей данных. Oltp и olap-системы.
- •Нормальная форма Бойса-Кодда (нфбк).
- •Многозначная зависимость. Четвертая нормальная форма (4нф).
- •Зависимость соединения. Пятая нормальная форма (5нф).
- •Обзор реляционной алгебры. Замкнутость реляционной алгебры. Отношения, совместимые по типу. Оператор переименования атрибутов.
- •Операции реляционной алгебры: объединение, пересечение, вычитание.
- •Операции реляционной алгебры: декартово произведение, выборка, проекция.
- •Операции реляционной алгебры: соединение, разновидности соединения, общая операция соединения, тэта-соединение.
- •Операции реляционной алгебры: соединение, разновидности соединения, экви-соединение, естественное соединение.
- •Операции реляционной алгебры: деление.
- •27.Язык sql. История развития. Структура языка. Типы данных sql.
- •Язык sql. Операторы создания и модификации схемы базы данных (database, table). Примеры написания операторов.
- •Язык sql. Операторы создания индексов. Операторы управления правами доступа. Примеры написания операторов
- •Язык sql. Команды модификации данных, условия отбора записей. Примеры написания операторов.
- •31.Язык sql. Оператор select. Синтаксис оператора, простые формы оператора, условия отбора записей. Примеры написания операторов.
- •32.Язык sql. Выборка из нескольких таблиц, синтаксис соединения таблиц. Примеры написания операторов.
- •33. ЯзыкSql. Использование алиасов и псевдонимов, вложенные запросы (подзапросы). Примеры написания операторов.
- •34.ЯзыкSql.Вычисления внутри оператора, группировка данных, сортировка данных, операция объединения. Примеры написания операторов
- •Оператор select. Формальный порядок выполнения оператора select. Как на самом деле выполняется оператор select.
- •37.ЯзыкSql. Использование представлений (View). Изменение данных в представлениях. Хранимые процедуры. Триггеры.
- •38.Транзакции, блокировки и многопользовательский доступ к данным.
- •1. Концептуальное проектирование;
- •2. Логическое проектирование;
- •3. Физическое проектирование.
- •41.Концептуальное моделирование. Пример построения модели «сущность-связь».
- •43.Проектирование реляционной базы данных на основе декомпозиции универсального отношения.
- •44.Создание приложений, работающих с базами данных при помощи языка sql. Общие подходы. Специализированные библиотеки доступа. Cli-интерфейс уровня вызова.
- •46.Архитектура "клиент-сервер". Структура сервера базы данных.
34.ЯзыкSql.Вычисления внутри оператора, группировка данных, сортировка данных, операция объединения. Примеры написания операторов
SQL позволяет выполнять различные арифметические операции над столбцами результирующего отношения. В конструкции <список_выбора> можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. Например, чтобы узнать сколько лет прошло с 1992 года (год принятия стандарта SQL-92) до публикации той или иной книги можно выполнить команду:
SELECT title, yearpub-1992
FROM titles
WHERE yearpub> 1992;
В арифметическихвражения допускаются операции сложения (+), вычитания (-), деления (/), умножения (*), а также различные функции (COS, SIN, ABS - абсолютное значение и т.д.). Такжевзапросможнодобавитьстроковуюконстанту:
SELECT 'the title of the book is', title, yearpub-1992
FROM titles
WHERE yearpub> 1992;
Группировка данных в операторе SELECT осуществляется с помощью ключевого слова GROUP BY и ключевого слова HAVING, с помощью которого задаются условия разбиения записей на группы.
GROUP BY неразрывно связано с агрегирующими функциями, без них оно практически не используется. GROUP BY разделяет таблицу на группы, а агрегирующая функция вычисляет для каждой из них итоговое значение. Определим для примера количество книг каждого издательства в нашей базе данных:
SELECT publishers.publisher, count(titles.title)
FROM titles, publishers
WHERE titles.pub_id=publishers.pub_id
GROUP BY publisher;
Kлючевое слово HAVING работает следующим образом: сначала GROUP BY разбивает строки на группы, затем на полученные наборы накладываются условия HAVING. Например, устраним из предыдущего запроса те издательства, которые имеют только одну книгу:
SELECT publishers.publisher, count(titles.title)
FROM titles,publishers
WHERE titles.pub_id=publishers.pub_id
GROUP BY publisher
HAVING COUNT(*)>1;
Другой вариант использования HAVING - включить в результат только те издательства, название которых оканчивается на подстроку "Press":
SELECT publishers.publisher, count(titles.title)
FROM titles,publishers
WHERE titles.pub_id=publishers.pub_id
GROUP BY publisher
HAVING publisher LIKE '%Press';
В чем различие между двумя этими вариантами использования HAVING? Во втором варианте условие отбора записей мы могли поместить в раздел ключевого слова WHERE, в первом же варианте этого сделать не удастся, поскольку WHERE не допускает использования агрегирующих функций.
Для сортировки данных, получаемых при помощи оператора SELECT служит ключевое слово ORDER BY. С его помощью можно сортировать результаты по любому столбцу или выражению, указанному в <списке_выбора>. Данные могут быть упорядочены как по возрастанию, так и по убыванию. Пример: сортировать список авторов по алфавиту:
SELECT author
FROM authors
ORDER BY author;
В SQL предусмотрена возможность выполнения операции реляционной алгебры "ОБЪЕДИНЕНИЕ" (UNION) над отношениями, являющимися результатами оператора SELECT. Естественно, эти отношения должны быть определены по одной схеме. Пример: получить все Интеренет-ссылки, хранимые в базе данных publications. Эти ссылки хранятся в таблицах publishers и wwwsites. Для того, чтобы получить их в одной таблице, мы должны построить следующие запрос:
SELECT publisher, url
FROM publishers
UNION
SELECT site, url
FROM wwwsites;
