Разные реализации баз данных предлагают свои таблицы и представления системного каталога, часто разделенные на группы по уровням доступа на пользовательские, системные и предназначенные для администратора базы данных. Конкретную информацию о содержимом таблиц системного каталога можно получить из запросов к этим таблицам и из документации к базе данных. Для некоторых из наиболее распространенных реализаций соответствующая информация представлена в табл. 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
Показанные здесь примеры иллюстрируют ничтожно малую долю той информации которую можно извлечь из любого системного каталога По поводу имеющихся в системном каталоге таблиц и их содержимого необходимо обратиться к документации той базы данных, с которой вы работаете