Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 24. Как 11оддерживается порядок в базе данных SQL

жимом. Столбец cnumber (column number- номер столбца) определяет порядковый но­ мер столбца (расположение столбца) в таблице. Для простоты опущены столбцы, определяющие длину (length), точность (precision) и масштаб (scale) столбцов. Эти атри­ буты задают размер столбца, что особенно важно не только для символьных столбцов, но

идля числовых.

Втаблице SYSTEMCATALOG имеется строка со ссылкой на эту таблицу:

tname

owner

numcolumns

type СО

SYSTEMCOLUMNS

System

8

В

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

Имеется способ разрешить каждому пользователю увидеть информацию таблицы SYSTEMCOLUМNS, описывающую его собственные таблицы (таблицы, владельцем которых он является):

CREATE VIEW Owncolumns AS SELECT •

FROM SYSTEMCOLUMNS WHERE tabowner = USER;

GRANT SELECT ON Owncolumns ТО PUBLIC;

Комментарии к содержимому каталога

Большинство версий SQL позволяет использовать комментарии в специально отве­

денных для этого столбцах таблиц каталогов SYSTEMCATALOG и SYSTEMCOLUМNS, поскольку их содержимое не всегда понятно. Об этих во~можно­

стях до сих пор не упоминалось для простоты изложения материала.

Команду COMMENT ON можно применять со строкой текста, предназначенного для пометки каждого столбца в одной из таблиц. Ключевое слово TABLE адресует комментарий для SYSTEMCATALOG, а COLUМN - для SYSTEMCOLUМNS. На­

пример:

COMMENT ON TABLE Chris.Orders

IS 'Current Customer Orders·;

Текст будет размещен в столбце примечаний таблицы SYSTEMCATALOG. Максимальная длина примечаний не может превышать 254 символа. Комментарий

относится к отдельной строке, в данном случае к той, в которой tname = Orders, а owner = Chris. Этот комментарий находится в строке для таблицы базы данных Orders

в SYSTEMCATALOG:

SELECT tname, remarks

FROM SYSTEMCATALOG

WHERE tname = 'Orders·

266

Комментарии к содерJ1сu.~10му каmш1Ога

AND owner = 'Chris";

Выходные данные для этого запроса представлены на рис. 24.2. SYSTEMCOLUМNS работает точно так же. Создаем комментарий:

COMMENT ON COLUMN Orders.onum

IS 'Order #';

Выбираем этот столбец из SYSTEMCOLUMNS:

SELECT cnumber, datatype, cname, remarks

FROM SYSTEMCOLUMNS

WHERE tname = 'Orders·

AND tabowner = 'Chris"

AND cname = 'onum';

Выходные данные для этого запроса представлены на рис. 24.3.

Для изменения комментария нужно ввести новую команду COMMENT ON для той

же самой строки. На место старого комментария заносится новый. Для исключения

комментария его следует исключить из формулировки команды. Например:

COMMENT ON COLUMN Orders.onum

IS '';

Этот пустой комментарий исключит предыдущее примечание.

Рис. 24.2. Комментарий к SYSTEMCATALOG

267

Глава 24. Как поддерживается порядок в базе данных SQL

Рис. 24.3. Комментарий к SYSTEMCOLUМNS

Оставшаяся часть ка1палога

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

SYSTEMINDEXES - индексы в базе данных

Имена столбцов в таблице SYSTEMINDEXES и их описание представляют собой

следующее:

Имя столбца

Описание

iname

Имя индекса (используется для его удаления)

iowner

Имя пользователя, создавшего индекс

tname

Имя таблицы, которая содержит индекс

cnumber

Номер столбца в таблице

tabowner

Пользователь, владеющий таблицей, содержащей индекс

numcolumns

Количество столбцов в индексе

cposition

Позиция текущего столбца среди столбцов в индексе

isunique

Является ли индекс уникальным (У или N)

268

Оставшаяся часть каталога

Пример запроса. Предполагается, что есть неуникальный индекс, имеющий на­

звание salesperson, определенный на столбце snum таблицы Customers:

SELECT iname, iowner, tname, cnumber, isunique

FROM SYSTEMINDEXES

WHERE iname = ·salesperson·;

Выходные данные для этого запроса представлены на рис. 24.4.

Рис. 24.4. Строка из таблицы SYSTEMINDEXES

SYSTEMUSERAUTH- пользователи и системные

привилегии в базе данных

Имена столбцов для SYSTEMUSERAUTH и их описание выглядят следующим об­

разом:

Имя столбца

Описание

usemame

Идентификатор (authorization ID) пользователя

password

Пароль пользователя для начала сеанса

resource

Имеет ли пользователь привилегию RESOURCE

dba

Имеет ли пользователь привилегию DBA

Предполагается простая система из трех привилегий, подобная той, которая рас­ сматривалась в главе 22: CONNECT, RESOURCE и DBA. Все пользователи имеют привилегию CONNECT по определению, поэтому она не указана в таблице. Возмож-

269

Глава 24. Как поддерживается порядок в базе данных SQL

Рис. 24.5. Пользователи, имеющие привилегию RESOURCE

ными значениями столбцов resource и dba являются У (если пользователь имеет эту привилеrию) и N (если пользователь не имеет этой привилегии). Пароли доступны только высокопривилегированным пользователям. Следовательно, эта таблица может запрашиваться с целью получения информации пользователями, имеющими систем­

ные привилегии.

Пример запроса. Для того, чтобы найти всех пользователей, имеющих привиле­ гию RESOURCE, и увидеть, кто из них располагает привилегией DBA, можно ввести

следующее предложение:

SELECT username, dba

FROM SYSTEMUSERAUTH

WHERE resource = ·v·;

Выходные данные для этого запроса представлены на рис. 24.5.

SУSТЕМТАВАUТН-привилегии объектов, которые не соответствуют специфике столбцов

Здесь представлены имена столбцов в таблице SYSTEMTABAUTH и их описания:

Имя столбца

Описание

270

Источник: https://studfile.net/preview/16418473/