Конспект лекций по дисциплине «Сетевые базы данных», страница 8

·  когда в таблице добавляется или обновляется строка, значение столбца типа CHAR имеет фиксированную длину;

·  если задается значение короче, оно добавляется хвостовыми пробелами до указанной длины;

·  если задаются значения длиннее, чем объявленные, с пробелами в конце, эти пробелы удаляются до заданной длины;

·  если значение слишком велико, Oracle возвращает ошибку.

Столбцы типа данных VARCHAR2 хранят символьные значения переменной длины. При создании таблицы со столбцом VARCHAR2 задается максимальная длина столбца (в байтах, а не в символах) от 1 до 4000 байтов. Каждое значение столбца хранится как поле переменной длины. Если значение превышает заданную длину для столбца, Oracle возвращает ошибку. Например, столбец типа VARCHAR2 объявлен с длиной 100 символов. В однобайтовой схеме кодирования, если в заданном значении содержится только 25 символов для конкретной строки, в этом столбце будут храниться только 25 символов (25 байтов), а не 100.

2.3. Тип данных даты-времени

Значения столбцов типа данных DATE хранят значения даты и времени. Тип данных DATE хранит год, включая век, месяц, день, часы, минуты и секунды (после полуночи). Oracle может хранить даты от 1 января 4712 года до н.э. до 31 декабря 4712 года н.э.

Oracle использует свой внутренний формат для хранения значений дат. Значения даты хранятся в полях фиксированной длины, каждое длиной 7 байт. Соответственно – век, год, месяц, день, час, минута и секунда. При вводе и выводе дат стандартный формат Oracle по умолчанию равен DD-MON-YY. Например, 12-NOV-92.

Этот формат по умолчанию можно изменить для всего экземпляра в целом с помощью параметра NLS_DATE_FORMAT. Формат по умолчанию можно изменять и только для конкретного сеанса с помощью команды ALTER SESSION. Для того, чтобы вводить даты в отличном от стандартного формате, используется функция TO_DATE с соответствующей форматной маской. Например:

TO_DATE (‘November 13, 1992’,  ‘MONTH  DD,  YYYY’)

Для вывода даты и времени в заданном строковом формате используется функция TO_CHAR с соответствующей форматной маской. Например функция

TO_CHAR(sysdate,’dd.mm.yyyy hh24:mi’)

вернет системную (текущую) дату и время в виде часов в 24-часовом формате и минут.

Время хранится в 24-х часовом формате  HH:MI:SS. По умолчанию время в столбце типа DATE равно 12:00:00 А.М. (полночь), если значение времени не задано явно. Если задается только время, часть, соответствующая дате, по умолчанию равна первому дню текущего месяца. Для того, чтобы ввести значение времени указанной даты, используется функция TO_DATE с форматной маской, задающей время, как в следующем примере:

INSERT  INTO  birthdays  (bname,  bday)  VALUES

(‘ANDY’,  TO_DATE(’13.08.2009 14:56:00’,  ‘DD.MM.YYYY HH24:MI:SS’));

2.4. Преобразование типов

В Oracle автоматическое преобразование типов весьма ограничено. Возможно автоматическое преобразование чисел в символьные строки и наоборот (и некоторые другие), если не возникает неоднозначного толкования этого процесса. В документации по Oracle рассматриваются варианты и ограничения на автоматическое преобразование типов. Тем не менее, рекомендуется использовать функции явного преобразования для корректного выполнения команд SQL и программ PL/SQL.

2.5. Порядок вычисления выражений

Порядок выполнения операций, входящих в выражения, определяется приоритетом операций. Для изменения порядка вычисления используются круглые скобки.

Приоритет операций:

1)  вычисления в круглых скобках ( )

2)  вычисления значений функций

3)  унарные операции not

4)  операции типа умножение *, /, div, mod, and

5)  операции типа сложение +, -, or, xor

6)  операции сравнения >, <, <=, >=, =, <>

Вопросы для самоконтроля