|
Программирование >> Sql: полное руководство
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 используются целочисленные коды типов данных.
Другие различия отражают разные возможности этих двух СУБД: DB2 позволяет делать комментарии к каждому столбцу (до 254 символов); в Informix такой возможности нет. В Informix отслеживаются минимальный и максимальный размеры данных для столбцов, хранящих значения переменной длины; в DB2 такая информация напрямую недоступна. Информация о представлениях Определения представлений, имеющихся в базе данных, хранятся в системном каталоге. Каталог СУБД DB2 содержит две системные таблицы, в которых отслеживается состояние представлений. Таблица syscat.views (табл. 16.6) содержит SQL-определения всех представлений в текстовом виде. Если длина определения превышает 3600 символов, то оно хранится в нескольких строках с последовательными номерами 1, 2, 3 и т.д.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |