Программирование >>  Понятие sql 

1 ... 68 69 70 [ 71 ] 72 73 74 ... 95


СТОЛБЦЫ ОПИСАНИЕ

username Пользователь который имеет привилегии

grantor Пользователь который предоставляет привилегии другому пользователю

tname Имя таблицы в которой существуют привилегии

cname Имя столбца в котором существуют привилегии

owner Владелец tname

updauth Имеет ли пользователь привилегию UPDATE в этом столбце

refauth Имеет ли пользователь привилегию REFERENCES в этом столбце

Столбцы updauth и refauth могут быть в состоянии Y, N, или G; но не могут быть одновременно в состоянии N для одной и той же строки. Это - первые пять столбцов таблицы, которы не составляют первичный ключ. Он отличается от первичного ключа SYSTEMTABAUTH в котором содержится поле cname, указывающее на определенный столбец обсуждаемой таблицы для которой применяются одна или обе привилегии. Отдельная строка в этой таблице может существовать для каждого столбца в любой данной таблицы в которой одному пользователю передаются превилегии определенного столбца с помощью другого пользователя.

Как и в случае с SYSTEMTABAUTH та же привилегия может быть описана в более чем одной строке этой таблицы если она была передана более чем одним пользователем.

ТИПОВОЙ ЗАПРОС Чтобы выяснить, в каких столбцах какой таблицы вы имеете привилегию REFERENCES, вы можете ввести следующий запрос (вывод показывается в Рисунке 24.7)

SELECT owner, tname, cname

FROM SYSTEMCOLAUTH

WHERE refauth IN (Y, G) AND username = USER ORDER BY 1, 2;

который показывает, чтоэтидветаблицы, которые имеют различных владельцев, но одинаковые имя, в действительности, совершенно разные таблицы (т.е. этонекакдва синонима для одной таблицы).

SQL Execution Log SELECT OWNER, TNAME, CNAME FROM SYSTEMCOLAUTH WHERE refaulth IN (Y , G ) AND username = USER

ORDER BY 1, 2

owner

tname

Customers Salespeople Salespeople Customers

cname

cnum sname sname cnum

Diane Diane Diane Gillan

Рисунок 24.7: Столбцы в пользователь имеет привилегию INSERT

SYSTEMSYNONS - СИНОНИМЫ ДЛЯ ТАБЛИЦ В БАЗЕ ДАННЫХ



Это - имена столбцов в таблице SYSTEMSYNONS и их описание:

СТОЛБЕЦ ОПИСАНИЕ synonym Имя синонима

synowner Пользователь, который является владельцем синонима (может быть

PUBLIC (ОБЩИЙ)) tname Имя таблицы используемой владельцем

tabowner Имя пользователя который является владельцем таблицы

ТИПОВОЙ ЗАПРОС Предположим, что Adrian имеет синоним Clients для таблицы Заказчиков, принадлежащей Diane, и что имеется общий синоним Customers для этой же таблицы. Вы делаете запрос таблицы для всех синонимов в таблице Заказчиков (вывод показывается в Рисунке 24.8):

SELECT *

FROM SYSTEMSYNONS

WHERE tname = Customers

SQL Execution Log

SELECT *

FROM SYSTEMSYNONS

WHERE tname = Customers

synonym

Clients Customers

synowner

Adrian PUBLIC

tname

Customers Customers

tabowner

Diane Diane

Рисунок 24.8: Синонимы для таблицы Заказчиков

ДРУГОЕ ИСПОЛЬЗОВАНИЕ КАТАЛОГА

Конечно, вы можете выполнять более сложные запросы в системном каталоге. Обьединения, например, могут быть очень удобны. Эта команда позволит вам увидеть столбцы таблиц и базовые индексы, установленые для каждого (вывод показывается в Рисунке 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.

РЕЗЮМЕ

Итак, система SQL использует набор таблиц, называемый системным каталогом в структуре базы данных. Эти таблицы могут запрашиваться но модифицироваться. Кроме того, вы можете добавлять комментарии столбцов в (и удалять их из) таблицы SYSTEMCATALOG и SYSTEMCOLUMNS. Создание представлений в этих таблицах - превосходный способ точно определить, какая пользовательская информация может быть доступной.

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

РАБОТА С SQL

1. Сделайте запрос каталога чтобы вывести, для каждой таблицы имеющей более чем четыре столбца, имя таблицы, имя владелеца, а также имя столбцов и тип данныхэтихстолбцов.

2. Сделайте запрос каталога чтобы выяснить, сколько синонимов существует для каждой таблицы в базе данных. Не забудьте, что один и тот же синоним принадлежащий двум различным пользователям - это фактически два разных синонима.

3. Выясните сколько таблиц имеют индексы в более чем пятьдесяти процентов их столбцов.

(См. Приложение A для ответов.)



1 ... 68 69 70 [ 71 ] 72 73 74 ... 95

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