Информация о созданных запросах
Информация о связях между таблицами
|
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
Показанные здесь примеры иллюстрируют ничтожно малую долю той информации которую можно извлечь из любого системного каталога По поводу имеющихся в системном каталоге таблиц и их содержимого необходимо обратиться к документации той базы данных, с которой вы работаете
Обновление содержимого системного каталога
Системный каталог позволяет только выборку его данных - даже когда его использует администратор базы данных. Обновление системного каталога осуществляется автоматически сервером базы данных. Например, в базе данных пользователем создается таблица с помощью оператора CREATE TABLE. При этом сервер базы данных помещает соответствующий оператор DDL в определенную таблицу системного каталога. Необходимости обновлять таблицы системного каталога вручную не возникает никогда. Во всех реализациях эту работу выполняет сервер базы данных по схеме, показанной на рис. 21.2
Читать дальше