Выбрать главу
Таблицы системного каталога

Разные реализации баз данных предлагают свои таблицы и представления системного каталога, часто разделенные на группы по уровням доступа на пользовательские, системные и предназначенные для администратора базы данных. Конкретную информацию о содержимом таблиц системного каталога можно получить из запросов к этим таблицам и из документации к базе данных. Для некоторых из наиболее распространенных реализаций соответствующая информация представлена в табл. 21.1.

Microsoft SQL Server

Имя таблицы

Описание

SYSUSERS

SYSSEGMENTS

SYSINDEXES

SYSCONSTRAINTS

Информация о пользователях базы данных

Информация обо всех сегментах базы данных

Информация обо всех индексах

Информация обо всех условиях ограничения

dBase

Имя таблицы

Описание

SYSVIEWS

SYSTABLS

SYSIDXS

SYSCOLS

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

Информация обо всех таблицах

Информация обо всех индексах

Информация о столбцах таблиц

Microsoft Access

Имя таблицы

Описание

MSysColumns

MSyslndexes

MSysMacros

MSysObjects

MSysQueries

MSysRelationships

Информация о столбцах таблиц

Информация об индексах таблиц

Информация о созданных макросах

Информация обо всех объектах базы данных

Информация о созданных запросах

Информация о связях между таблицами

Sybase

Имя таблицы

Описание

SYSMESSAGES

SYSKEYS

SYSTABLES

SYSVIEWS

SYSCOLUMNS

SYSINDEXES

SYSOBJECTS

SYSDATABASES

SYSPROCEDURES

Список всех сообщений об ошибках сервера

Информация о ключах и внешних ключах

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

Тексты всех представлений

Информация о столбцах таблиц

Информация об индексах

Информация о таблицах, триггерах, представлениях и т. п.

Информация обо всех базах данных на сервере

Информация о представлениях, триггерах и сохраненных процедурах

Oracle

Имя таблицы

Описание

ALLJTABLES

USER_TABLES

DBAJTABLES

DBA_SEGMENTS

DBAJNDEXES

DBA_USERS

DBA_ROLE_PRIVS

DBA_ROLES

DBA_SYS_PRIVS

DBA_FREE_SPACE

V$DATABASE

V$SESSION

Информация о таблицах, доступных пользователю

Информация о таблицах, принадлежащих пользователю

Информация обо всех таблицах в базе данных

Информация о сегментах

Информация о всех индексах

Информация о всех пользователях базы данных

Информация о выданных ролях

Информация обо всех ролях в базе данных

Информация о выданных привилегиях доступа к системе

Информация о доступном базе данных свободном пространстве

Информация о создании базы данных

Информация о текущем сеансе доступа

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

Использование данных системного каталога

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

Запрос SQL на выборку данных из системного каталога по форме не отличается от запроса к любой другой таблице базы данных.

Например, следующий запрос возвратит все строки данных таблицы SYSTABLES в Sybase.

SELECT * FROM SYSTABLES

GO

В следующих разделах представлено несколько примеров запросов к таблицам системного каталога и соответствующая информация, которая может оказаться вам полезной.

Примеры запросов к системному каталогу

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

Следующий запрос возвращает список всех имен пользователей базы данных.

SELECT USERNAME

FROM ALL_USERS;

USERNAME

------------

SYS

SYSTEM

RYAN

SCOTT

DEMO

RON

USER1

USER2

8 строк выбраны. Следующий запрос возвращает список всех таблиц данного пользователя.

SELECT TABLE_NAME

FROM USER_TABLES;

TABLE_NAME

-----------

CANDY_TBL

CUSTOMER_TBL

EMPLOYEE_PAY_TBL

EMPLOYEE_TBL

PRODUCTS_TBL

ORDERS_TBL

6 строк выбраны.

Следующий запрос возвращает список всех привилегий доступа к системе, имеющихся у пользователя с именем BRANDON.

SELECT GRANTEE, PRIVILEGE

FROM SYS.DBA_SYS_PRIVS

WHERE GRANTEE = 'BRANDON';

GRANTEE PRIVILEGE

-------------------------

BRANDON ALTER ANY TABLE

BRANDON ALTER USER

BRANDON CREATE USER

BRANDON DROP ANY TABLE

BRANDON SELECT ANY TABLE

BRANDON UNLIMITED TABLESPACE

6 строк выбраны.

А вот пример из MS Access:

SELECT NAME

FROM MSYSOBJECTS

WHERE NAME = 'MSYSOBJECTS'

NAME

------------

MSYSOBJECTS

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