
- •Введение
- •Часть 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.3.1.7.Двоичные типы данных
Тип bytea позволяет хранить двоичные строки; смотрите таблицу
Двоичные типы данных
Имя |
Размер хранения |
Описание |
bytea |
1 или 4 байта плюс сама двоичная строка |
двоичная строка переменной длины |
Двоичная строка — это последовательность байт (или октетов). Есть два отличия двоичных строки от символьных: Во-первых, двоичные строки специально позволяют хранить байтовое представление таких символов как ноль и других "непечатаемых" символов (обычно, это символы представленные кодами в диапазоне до 32 и от 126). Символьные строки не позволяют содержать в себе символ ноль, а также любые другие значения и последовательности байт, которые не допускаются той кодировкой, с которой работает СУБД. Во-вторых, операции с двоичными строками осуществляются с байтами, в то время как операции с символьными строками зависят от установок используемой локали. В общем, двоичные строки подходят для хранения данных, которые программист считает "просто байтами", в то время как символьные строки походят для хранения текста.
При вводе значений типа bytea, байты определённых значений, которые используются как части строчных литералов в каких-либо операторах SQLдолжныбыть экранированы (все байтовые значениямогутбыть экранированы). В общем случае, чтобы экранировать вводимое значение оно преобразуется в трёхциферное восьмеричное значение эквивалентное его десятичному значению и предваряется двумя символами обратная косая черта. Таблица показывает символы которые должны быть экранированы и предоставляет альтернативные escape последовательности там где это возможно.
bytea Экранируемые литеральные значения
Десятичное значение |
Описание |
Как нужно экранировать |
Пример |
Представление на выходе |
0 |
ноль |
E'\\000' |
SELECT E'\\000'::bytea; |
\000 |
39 |
одиночная кавычка |
'''' or E'\\047' |
SELECT E'\''::bytea; |
' |
92 |
обратная косая черта |
E'\\\\' or E'\\134' |
SELECT E'\\\\'::bytea; |
\\ |
от 0 до 31 и от 127 до 255 |
"непечатаемый" символ |
E'\\xxx' (octal value) |
SELECT E'\\001'::bytea; |
\001 |
Требование об экранировании непечатаемыхсимволов варьируется в зависимости от установок локали. В некоторых случаях вы можете оставлять их неэкранированными. Заметим, что результат в каждом примере в таблице составлял точно один байт в длину, даже если предоставление иногда выглядит как более одного символа.
Причина, по которой требуется так много символов обратная косая черта в таблице заключается в том, что вводимый строковый литерал должен пройти на сервере PostgreSQL через две фазы обработки. Первая обратная косая черта каждой пары интерпретируется для обработчика строкового литерала (включая использование синтаксиса экранирования) как символ экранирования и, таким образом, опускается, оставляя второй символ обратная косая черта в паре. (Для того, чтобы избежать этого уровня экранирования можно использовать строки доллар-кавычка.) Оставшийся символ обратная косая черта затем распознаётся функцией ввода типа bytea, как начинающий трёхциферное восьмеричное значение или символ экранирования следующего символа обратная косая черта. Например, строковый литерал, передаваемый на сервер как 'E\\001' принимает вид \001 после обработчика строкового литерала. Далее \001 посылается функции ввода типа bytea, где преобразовывается в одиночный байт с десятичным значением 1. Заметим, что символ одиночной кавычки для bytea не считается специальным, так как он отвечает обычным правилам строковых литералов.
Значения Bytea при выводе иногда экранируются. Обычно, в виде эквивалентного трёхциферного восьмеричного значения, предваряемого символом обратная косая черта. Большинство "печатаемых" байт выводится в их стандартном представлении, согласно кодировке клиента. Символ с десятичным значением 92 (обратная косая черта) выводится дважды. Подробности смотрите в таблице
bytea Экранированные значения на выводе
Десятичное значение |
Описание |
Экранированное представление при выводе |
Пример |
Результат вывода |
92 |
обратная косая черта |
\\ |
SELECT E'\\134'::bytea; |
\\ |
от 0 до 31 и от 127 до 255 |
"непечатаемые" значения |
\xxx (восьмеричное значение) |
SELECT E'\\001'::bytea; |
\001 |
от 32 до 126 |
"печатаемые" значения |
представление по кодировке клиента |
SELECT E'\\176'::bytea; |
~ |
В зависимости от программы, которую вы используете для работы с PostgreSQL, у вас могут быть дополнительные инструменты для работы с экранированными и неэкранированными строками типа bytea. Например, роль экранирующего символа у вас можете также играть символ перевода строки и возврата каретки, если в таковые их автоматически будет преобразовывать ваш интерфейс.
Стандарт SQL определяет другой тип двоичной строки, называемый BLOB или BINARY LARGE OBJECT. Формат ввода для этого типа отличается от bytea, но предоставляемые функции и операторы в большинстве своём такие же.