Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Основы_ SQL.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
163.84 Кб
Скачать

Интервалы

Интервал представляет собой разность между двумя значениями типа дата-время. SQL поддерживает два типа интервалов: год-месяц и день-время. Интервал типа год-месяц — это количество лет и месяцев между двумя датами, а интервал день-время — количество дней, часов, минут и секунд между двумя моментами в пределах одного месяца. Нельзя смешивать вычисления, использующие интервал год-день, с вычислениями, в которых используется интервал день-время. Интервал времени можно задать двумя способами: в виде начального и конечного моментов или в виде начального момента и длительности, например:

  • (TIME '12:25:30', TIME '14:30:00') — интервал, заданный начальным и конечным моментами;

  • (TIME 12:45:00', INTERVAL '5' HOUR) — Интервал, заданный начальным моментом и длительностью в часах.

Чтобы задать значение типа интервал, используется такой синтаксис:

Interval 'длина' year | month | day | hour | minute | second

Здесь длина — длина интервала, после которой указывается единица измерения (возможные значения указаны через вертикальную черту):

  • YEAR — год;

  • MONTH — месяц;

  • DAY — день;

  • HOUR — час;

  • MINUTE — минута;

  • SECOND — секунда.

Например, для задания интервала длиной 15 дней следует использовать выражение INTERVAL ' 5 ' DAY.

Еще один пример использования интервалов (предикат OVERLAPS).

Специальные типы данных

К специальным типам данных относятся следующие типы:

  • ROWзапись;

  • ARRAYмассив;

  • MULTISETмультимножество.

Использование этих типов данных нарушает принцип, согласно которому таблицы реляционной базы данных должны находиться в первой нормальной форме. Любой столбец таблицы в первой нормальной форме не может содержать структурированные данные, например, набор полей: значения столбцов должны быть едиными и неделимыми. Тем не менее, жизнь неоднократно предлагает отступить от теории в пользу эффективности. Если вы не отступаете от первой нормальной формы, то возникающие недоразумения в поддержке реляционных баз данных вы можете объяснить нарушениями законов реляционной теории. В противном случае для получения объяснений требуются более тщательные расследования происшедшего. Рассмотрим специальные типы данных подробнее.

Тип ROW (запись) позволяет объявить набор полей (запись) в качестве значения столбца таблицы. Таким образом, строки таблиц могут содержать записи.

Во многих базах данных имеются таблицы, содержащие сведения об адресах. Адрес, как известно, состоит из нескольких элементов, таких как почтовый индекс, страна, город, улица и т. д. Если в таблице завести один символьный столбец Адрес, в котором поместить все элементы адреса просто как символьную строку, то дальнейшая работа с отдельными элементами адреса будет довольно хлопотным делом (вам придется использовать функции разбора строк). Поэтому на практике для адреса обычно заводят несколько столбцов, по одному на каждый элемент (например, столбцы Город, Улица и т. д.). Если же использовать тип ROW, то можно хранить все элементы адреса как значения одного столбца. В следующем примере сначала на основе типа ROW создается тип addr, а затем он назначается столбцу Адрес при создании таблицы Клиенты:

CREATE ROW TYPE addr

(

Postcode VARCHAR (9),

City VARCHAR (30),

Street VARCHAR (30),

House VARCHAR (10)

);

CREATE TABLE Клиенты

(

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]