Конечно, вы можете выполнять более сложные запросы в системном каталоге. Объединения, например, могут быть очень удобны. Эта команда позволит вам увидеть столбцы таблиц и базовые индексы установленные для каждого, ( вывод показывается в Рисунке 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.
SQL Execution Log
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;
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.
‹ SYSTEMSYNONS — синонимы для таблиц в базе данных
Вверх
Резюме 24 ›