Программирование >>  Sql: полное руководство 

1 ... 125 126 127 [ 128 ] 129 130 131 ... 264


SELECT TABNAME, OWNER, CREATED FROM SYSTABLES WHERE ТАВТУРЕ = T

Как показывают эти примеры, запросы на получение информации о таблицах имеют похожую структуру в различных СУБД. Тем не менее, конкретные имена системных таблиц или представлений, а также их столбцов, могут существенно отличаться.

Информация о столбцах

Во всех основных реляционных СУБД имеется системная таблица, в которой отслеживается состояние столбцов базы данных. В этой таблице отводится одна строка для каждого столбца каждой таблицы или представления базы данных. Большинство СУБД ограничивают доступ пользователей к этой таблице, вместо этого создавая системное представлешге, описывающее столбцы только тех таблиц, которыми владеет пользователь или к которым он имеет доступ. В OracleS эта информация содержится в двух представлениях - user tab COLUMNS, включающем одну строку для каждого столбца в каждой таблице, принадлежащей текущему пользователю, и all tab COLUMNS, включающем одну строку для каждого столбца каждой таблицы, на которую текущему пользователю предоставлена хотя бы одна привилегия доступа.

Большая часть информации в описываемой системной таблице или представлении относится к определению столбца. Здесь указывается его имя, тип данных, размер, длина ячеек, могут ли его ячейки принимать значения NULL и т.д. Иногда приводится информация о том, как распределены значения данных в каждом столбце. Такая информация помогает СУБД выполнять запросы оптимальным образом.

С помощью запросов, аналогичных приведенному ниже, можно получать информацию о столбцах в СУБД OracleS:

Вывести имена и типы данных столбцов моей таблицы offices.

SELECT COLUMN NAME, DATA TYPE FROM USER TAB COLUMNS WHERE TABLE NAME = OFFICES

Подобно информации о таблицах, информация о столбцах представлена по-разному в различных СУБД. В табл. 16.4 описано содержимое системной таблицы SYSCAT.COLUMNS, В которую помещаются сведения о столбцах базы данных в DB2. Вот несколько запросов, которые можно выполнить в этой СУБД:

Найти в базе данных все столбцы с типом данных date.

SELECT TABSCHEMJl, TABNAME, COLNAME

FROM SYSCAT.COLUMNS

WHERE TYPESCHEMA = SYSIBM

AND TYPENAME = DATE

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

SELECT DEFINER, COLS.TABNAME, COLNAME, TYPENAME, LENGTH FROM SYSCAT. COLUMNS COLS, SYSCAT . T.ABLES TBLS WHERE TBLS.TABSCHEMA = COLS.TABSCHEMA



and tbls.tabname = cols.tabname

and (typename = varchar or typename

and length > 10

and type = v

character)

Таблица 16.4 Таблица SYSCAT. COLVMNS (СУБД DB2}

Имя Тип данных Информация столбца

tabschema char (8) Схема, к которой принадлежит таблица, содержащая столбец

tabname varchar (18) Имя Таблицы, содержащей столбец

c0lname varchar (18) Имя СТОЛбЦП

colno smallint позиция столбца в таблице (первый столбец - 0)

typeschema char (8) Схема, к которой принадлежит домен столбца (по умолча-

нию sysibm)

typename varchar(18) Название типа данных или домена столбца

length integer Максимальная длина ячеек для столбцов, содержащих зна-

чения переменной длины

scale smallint Степень масштабирования для чисел типа decimal

default varchar (254) Значение ПО умолчанию

nulls char(l) Т - разрешены значения null,N- не разрешены

codepage smallint Кодовая страница для текстовых данных, представленных в

расширенной кодировке

logged char (1) Y - разрешено ведение журнала доступа к столбцам, содер-

жащим большие двоичные объекты; N - ведение журнала не разрешено

compact char(i) У - столбец, содержащий большие двоичные объекты,

является сжатым; N - столбец не сжат

colcard integer Число различных значений в столбце (его мощность )

high2key varchar (33) Второе наибольшее значение данных в Столбце

l0w2key varchar (33) Второе наименьшее значение данных в столбце

avgcollen integer Средняя длина ячеек для столбцов, содержащих значения

переменной длины

keyseq smallint позиция столбца в первичном ключе (или 0)

partkeyseq smallint позиция Столбца в ключе сегментирования (или 0)

nquantiles smallint Число квантилей в статистике столбца

nmostfreq smallint Число часто Встречающихся значений в статистике столбца

remarks varchar(254) Пользовательские комментарии к столбцу

Определения столбцов в системных каталогах СУБД различных типов значительно отличаются друг от друга. Для сравнения в табл. 16 5 дается определение таблицы syscolumns из Informix Universal Server. Некоторые различия между таблицами, содержащими описания столбцов, носят лищь стилистический характер: Для идентификации таблицы, содержащей данный столбец, в DB2 используется комбинация имен схемы и таблицы; в Informix для этой цели применяется внутренний идентификатор, который является внещним ключом для таблицы

systables.



в системном каталоге DB2 типы данных задаются в текстовой форме (например character); в системном каталоге Informix используются целочисленные коды типов данных.

Лаблица 16 5 Таблица SYSCOLOmS {СУЩ Informix)

Имя столбца

Тип данных

Информация

COLNAME

ChAR {±S)

Имя столбца

TABID

INTEGER

Внутренний идентификатор таблицы, в которой содержится столбец

COLNO

SMALLINT

Позиция столбца в таблице

COLTYPE

SMALLINT

Код типа данных столбца, а также признак того, разрешены ли значения NULL

COLLENGTH

SMALLINT

Длина ячеек столбца

COLMIN

INTEGER

Второе наименьшее значение данных в столбце

COLMAX

INTEGER

Второе наибольшее значение данных в столбце

MINLEN

INTEGER

Миниматьный размер хранимых данных

NAXLEN

INTEGER

Максимальный размер хранимых данных

EXTENDED ID

INTEGER

Внутренний идентификатор расширенного типа данных

Другие различия отражают разные возможности этих двух СУБД:

DB2 позволяет делать комментарии к каждому столбцу (до 254 символов); в

Informix такой возможности нет.

В Informix отслеживаются минимальный и максимальный размеры данных для столбцов, хранящих значения переменной длины; в DB2 такая информация напрямую недоступна.

Информация о представлениях

Определения представлений, имеющихся в базе данных, хранятся в системном каталоге. Каталог СУБД DB2 содержит две системные таблицы, в которых отслеживается состояние представлений. Таблица syscat.views (табл. 16.6) содержит SQL-определения всех представлений в текстовом виде. Если длина определения превышает 3600 символов, то оно хранится в нескольких строках с последовательными номерами 1, 2, 3 и т.д.

Таблица 16.6. Таблица SYSCAT. VIEWS (СУБД DB2)

Имя столбца

Тип данных

Информация

VIEWSCHEMA

CHAR(8)

Схема, содержашая представление

VIEWNAME

VARCHAR (18)

Имя представления

DEFINER

CHAR (8)

Идентификатор владельца предстааления

SEQNO

SMALLINT

Порядковый номер строки, содержащей часть определе-

ния предстааления

VIEWCHECK

CHAR(1)

Y. если для представления установлен режим контроля;

N, если не установлен



1 ... 125 126 127 [ 128 ] 129 130 131 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика