Системный каталог - это набор таблиц, в которых содержится информация, необходимая для правильного функционирования СУБД: о поддерживаемых базах данных и их базовых таблицах, представлениях, курсорах, индексах, пользователях и их правах доступа к информации, правилах модификации данных и т.д. В разных СУБД, поддерживающих SQL, существует от десятка до нескольких десятков системных таблиц, структура которых ничем не отличается от уже знакомой нам структуры пользовательских таблиц.
Так, в каждой строке системной таблицы SYSTABLES хранится описание одной из таблиц пользовательских или системной баз данных. Для каждой из них указывается имя таблицы, имя пользователя, который создал эту таблицу, число столбцов в ней и ряд других элементов информации. В таблице SYSCOLUMNS содержится строка для каждого столбца каждой таблицы, в которой указано имя столбца, имя таблицы, частью которой является данный столбец, тип данных для этого столбца и много другой информации о столбце.
С помощью предложения SELECT пользователь может получить информацию из любой системной таблицы. Например, он может дать запрос на получение имен таблиц, числа их столбцов и строк, владельца и краткого описания (если таковое вводилось в базу данных):
SELRCT Tab_name,N_col,N_row,Tab_owner,Comments FROM SYSTABLES;
и получить результат, показанный на рис. 5.1,а.
Для получения же некоторых данных о столбцах таблицы Блюда можно дать запрос
SELECT Col_name, Type, Length, Comments FROM SYSCOLUMNS WHERE Tab_name = 'Блюда';
и получить результат, показанный на рис. 5.1,б.
а)
Tab_name | N_col | N_row | Tab_owner | Comments |
---|---|---|---|---|
... | ||||
SYS_TABLES | 11 | SYSTEM | ||
SYS_COLUMNS | 14 | SYSTEM | ||
... | ||||
Блюда | 6 | 33 | KIRILLOW | Перечень блюд, известных шеф-повару |
Поставки | 4 | 37 | GROMOW | Данные о поставляемых продуктах |
Вид_блюд | 2 | 5 | KIRILLOW | Перечень видов блюд |
Трапезы | 2 | 3 | GROMOW | Перечень трапез в пансионате |
Состав | 3 | 148 | KIRILLOW | Состав блюд |
Продукты | 11 | 17 | KIRILLOW | Таблица продуктов |
... |
б)
Col_name | Type | Length | Comments |
---|---|---|---|
БЛ | INTEGER | 4 | Код блюда |
Блюдо | TEXT | 16 | Название блюда |
В | TEXT | 1 | Код вида блюда (З, С, ...) |
Основа | TEXT | 6 | Основной продукт в блюде |
Выход | REAL | 4 | Масса порции готового блюда |
Труд | INTEGER | 4 | Стоимость приготовления блюда (коп) |
Рис. 5.1. Результаты запросов по системным таблицам
Пользователь, не знакомый со структурой базы данных, может с помощью подобного рода запросов получить информацию о такой структуре. Для этого ему надо владеть языком SQL и немного подумать.
В заключение следует отметить, что СУБД не позволяет обновлять каталог с помощью предложений DELETE, INSERT и UPDATE. Обновление проводится только при создании, модификации или уничтожении таблиц, индексов, правил и т.п. с помощью предложений, рассматриваемых ниже.