
- •Введение
- •Часть 1
- •Глава 1 модели данных
- •Уровни моделей данных
- •1 Инфологические модели данных
- •1.1 Диаграмма Бахмана
- •1.2 Модель «сущность-связь»(er)
- •Нотация Мартина
- •Нотация idef1x
- •Нотация Баркера
- •2. Даталогические модели
- •2.1. Документальные модели
- •2.1.1. Ориентированные на формат документа
- •2.1.2. Дескрипторные модели
- •2.1.3. Тезаурусные модели
- •2.2. Фактографические модели
- •2.2.1. Теоретико-графовая модель
- •2.2.1.1. Иерархическая модель
- •2.2.1.2. Сетевая модель
- •2.2.2. Теоретико-множественные модели
- •2.2.2.1. Реляционная модель
- •Правила Теда Кодда
- •2.2.2.2. Бинарных ассоциаций
- •2.2.3. Объектно-ориентированные модели
- •3. Физические модели
- •3.1. Модели, основанные на файловых структурах
- •3.2. Модели, основанные на странично-сегментной организации
- •Известные сетевые субд:
- •Глава 2. Проектирование баз данных
- •1.1. Избыточность данных и аномалии обновления
- •1.2. Функциональные зависимости
- •1.3. Нормальные формы и схемы выполнения нормализации
- •1) 1Нф.
- •2) 2Нф.
- •3) 3Нф.
- •4) Нфбк (нормальная форма Бойса-Кодда).
- •5) 4Нф.
- •6) 5Нф.
- •1.4 Синтез реляционных баз данных
- •1.5 Пример синтеза
- •1.6 Пример декомпозиции
- •Часть 2
- •Реляционная алгебра
- •Введение
- •Стандартные реляционные операции
- •Свойства стандартных операций
- •Специальные операции
- •Язык sql как стандартный язык баз данных
- •Введение в sql
- •2.1.1 Функциональные возможности sql
- •2.2 Создание баз данных
- •2.2.1 Оператор create database
- •2.3 Удаление баз данных
- •2.4.3 Размер поля
- •2.4.4 Тип поля
- •2.5 Удаление таблиц
- •2.5.1 Оператор drop table
- •2.6. Данные и записи данных
- •2.6.1 Оператор select
- •2.6.2 Оператор distinct
- •2.6.3 Оператор from { таблица [ псевдоним ] } [,...]
- •2.6.4 Оператор where (условие)
- •2.6.5 Оператор group by { поле | Integer } [,...]
- •2.6.6 Оператор having( условие)
- •2.6.7 Оператор order by { поле | Integer [ asc|desc ] } [,...]
- •2.6.8 Оператор union [all] select-команда
- •2.6.9 Оператор intersect [all] select-команда
- •2.6.10 Оператор except [all] select-команда
- •2.6.11 Into { temp | scratch } таблица
- •2.6.12 Insert - добавлять данные
- •2.6.13 Values ( константа [,...] )
- •2.6.18 Unload - выгрузить данные в текстовый файл
- •2.7 Операторы
- •2.7.3 Арифметические операторы
- •2.7.4 Приоритеты операторов
- •2.8 Функции
- •2.8.3 Текстовые функции
- •2.8.4 Функции работы с временем и датами
- •2.8.5 Вспомогательные функции
- •2.9 Виды на таблицы данных (Просмотры)
- •2.9.1Create view - создать новый вид на таблицу данных
- •2.9.2 Drop view - удалить вид на таблицу данных
- •2.10 Пользовательские процедуры
- •2.10.1 Create procedure - создать пользовательскую процедуру
- •2.10.2 Dba
- •2.10.3 References { byte | text }
- •2.10.4 Default { Wert | null }
- •2.10.5 Returning { Feldtyp | references { byte | text } }
- •2.10.6 Drop procedure - удалить процедуру
- •2.12.2 Нормальный текст
- •1999 - Sql-99, sql-3 (iso/iec 9075:1999(e) Information technology - Database languages - sql)
- •2003 - Sql-2003
- •4. Виды систем баз данных
- •4.1.Oracle
- •4.1.1 Типы данных
- •4.1.1.1.Символьные типы
- •4.1.1.2.Числовые типы
- •Даты, временные метки и интервалы
- •4.1.1.3.Логические типы
- •Двоичные данные
- •4.1.1.4.Типы данных для сети Интернет
- •4.1.1.5.Типы данных «Any»
- •4.2. Mysql
- •4.2.1 Типы данных.
- •4.2.1.1.Character String (строковый)
- •4.2.1.2.National Character String (национальный строковый)
- •4.2.1.3.Binary Large Object String (двоичный)
- •4.2.1.4.Numeric (числовой)
- •4.2.1.5.Datetime (дата/время)
- •4.2.1.6.Interval (интервальный)
- •4.2.1.7.Типы enum и set
- •4.2.2Использование типов столбцов их других систем управления базами данных
- •4.3. Postgresql
- •4.3.1 Типы данных
- •4.3.1.1Числовые типы
- •4.3.1.1.Целочисленные типы
- •4.3.1.2.Числа с заданной точностью
- •4.3.1.3.Типы с плавающей точкой
- •4.3.1.4.Серийные типы
- •4.3.1.5.Денежные типы
- •4.3.1.6.Символьные типы
- •4.3.1.7.Двоичные типы данных
- •4.3.1.8.Типы дата/времени
- •4.3.1.9.Логический тип
- •4.3.1.10.Перечисления
- •5. Использованные в пример таблицы данных
- •Символьные
- •Числовые типы данных
- •Двоичные типы данных
- •Типы данных времени, даты, интервалы
- •Логические типы данных
- •Список литературы
- •Оглавление
- •Часть 1………………………………………………………….…………………………….………… 4
- •Глава 1 модели данных………………………….………………….……………….…........…. 4
- •Глава 2 проектирование баз данных…………..……………………………………...… 40
- •1.4 Синтез реляционных баз …...………………………………………………………… 44
- •Часть 2……...…...………………………………………………………………………………….… 52
4.1.1.2.Числовые типы
PL/SQL поддерживает все более широкое множество числовых типов данных. Долгие годы рабочей лошадкой числовых типов данных был тип NUMBER, который можно использовать для десятичных значений с фиксированной и плавающей точкой, а также для целых значений. Приведем несколько примеров объявлений типа NUMBER:
DECLARE
salary NUMBER(9,2); фиксированная точка, семь знаков слева и два справа
raise_factor NUMBER; десятичное число с плавающей точкой weeks_to_pay NUMBER(2); целое число
BEGIN
salary := 1234567.89; raise_factor := 0.05; weeks_to_pay := 52;
END;
Десятичная природа типа NUMBER оказывается чрезвычайно полезной при работе с денежными величинами. Вам не придется беспокоиться о возможных ошибках округления при переводе числа в двоичное представление. Например, записывая число 0.95, не стоит бояться, что от него через некоторое время останется только 0.949999968.
До выпуска версии Oracle Database 10i тип NUMBER был единственным числовым типом данных PL/SQL, полностью соответствующим типу данных базы данных. Это одна из причин столь широкого использования типа NUMBER. В Oracle Database 10i появилось еще два двоичных типа с плавающей точкой: BINARYFLOAT и BINARYDOUBLE. Как и NUMBER, оба новых типа поддерживаются как в PL/SQL, так и в базе данных. Правильно применяя их, можно добиться значительного повышения производительности за счет того, что математические операции над новыми типами выполняются аппаратной частью (когда это позволяет аппаратная платформа).
PL/SQL поддерживает ряд числовых типов и подтипов, которые не соответствуют типам базы данных, но, тем не менее, весьма полезны. Упомянем особо PLS_INTEGER, целочисленный тип, для которого арифметические операции выполняются аппаратно. Счетчики циклов FOR реализованы типом PLS_INTEGER.
Даты, временные метки и интервалы
До появления версии Oracle9i Database мир дат Oracle ограничивался типом DATE, который позволял хранить как дату, так и время (с точностью до секунд). В Oracle9i Database появились два набора новых связанных типов данных: INTERVAL и TIMESTAMP. Новые типы значительно расширили возможности разработчиков PL/SQL по созданию программ, обрабатывающих и хранящих значения дат и времени с очень высокой точностью, а также вычисляющих и хранящих интервалы времени.
Приведем в качестве примера функцию, вычисляющую возраст человека:
CREATE OR REPLACE FUNCTION age (dob_in IN DATE)
RETURN INTERVAL YEAR TO MONTH
IS
retval INTERVAL YEAR TO MONTH; BEGIN
RETURN (SYSDATE - dob_in) YEAR TO MONTH;
END;
4.1.1.3.Логические типы
PL/SQL поддерживает настоящий логический (булев) тип данных. Переменная этого типа может иметь лишь одно из трех значений: TRUE, FALSE и NULL.
Логические переменные позволяют сделать код удобочитаемым, даже в том случае, когда он содержит сложные логические выражения. Рассмотрим пример объявления переменной типа Boolean с присваиванием ей значения по умолчанию:
DECLARE
l_eligible_for_discount BOOLEAN :=
customer_in.balance > min_balance AND customer_in.pref_type = 'MOST FAVORED' AND customer_in.disc_eligibility;