====== ДРУГОЕ ИСПОЛЬЗОВАНИЕ КАТАЛОГА =======
Конечно, вы можете выполнять более сложные запросы в системном
каталоге. Обьединения, например, могут быть очень удобны. Эта команда позволит вам увидеть
столбцы таблиц и
базовые индексы установленые для каждого, ( вывод показывается в Рисунке 24.9 ):
SELECT a.tname, a.cname, iname, cposition
FROM SYSTEMCOLUMNS a, SYSTEMINDEXES b
WHERE a.tabowner = b. tabowner AND a.tname = b.tname AND a.cnumber =
b.cnumber ORDER BY 3 DESC, 2;
Она показывает два индекса, один для таблицы Заказчиков и один для таблицы Продавцов.
Последний из них - это одностолбцовый индекс с именем salesno в поле snum; он был помещен
первым из-за сортировки по
убыванию ( в обратном алфавитном порядке ) в столбце iname. Другой индекс, custsale,
используется продавцами чтобы
отыскивать своих заказчиков. Он основывается на комбинации полей snum и cnum внутри таблицы
Заказчиков, с полем
snum приходящим в индексе первым, как это и показано с помощью поля cposition.
tname |
cname |
iname |
cposition |
Salespeople |
sname |
salesno |
1 |
Customers |
cnum |
custsale |
2 |
Customers |
snum |
custsale |
1 |
Рисунок 24.9 Столбцы и их индексы
Подзапросы также
могут быть использованы. Имеется способ увидеть данные столбца только для столбцов из таблиц
каталога:
SELECT * FROM
SYSTEMCOLUMNS WHERE tname IN ( SELECT tname FROM SYSTEMCATALOG);
Для простоты, мы не будем показывать
вывод этой команды, которая состоит из одного входа для каждого столбца каждой таблицы
каталога. Вы могли бы
поместить этот запрос в представление, назвав его, например, SYSTEMTABCOLS, для представления
SYSTEMTABLES.