Мартин Грубер - Понимание SQL
- Название:Понимание SQL
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Мартин Грубер - Понимание SQL краткое содержание
Данная книга является очень хорошим введением в теорию реляционных БД для пользователей-новичков, а также хорошим началом в освоении SQL, грамотном построение запросов, понимании того как эти запросы работают. Безусловно рекомендуется к прочтению для начинающих пользователей.
Понимание SQL - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Например:
COMMENT ON TABLE Chris.Orders
IS 'Current Customer Orders';
Текст будет помещен в столбец пояснений SYSTEMCATALOG. Обычно, максимальная длина таких пояснений - 254 символов.
Сам комментарий, указывается для конкретной строки, одна с tname=Orders, а другая owner=Chris. Мы увидим этот комментарий в строке для таблицы Порядков в SYSTEMCATALOG:
SELECT tname, remarks
FROM SYSTEMCATALOG
WHERE tname='Orders'
AND owner='Chris';
Вывод для этого запроса показывается в Таблица 24.2.
SYSTEMCOLUMNS работает точно так же. Сначала, мы создаем комментарий
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 ";
и этот пустой комментарий затрет предыдущий.
SELECT tname, remarks FROM SYSTEMCATALOG
WHERE tname='Orders' AND owner='Chris'
tname |
remarks |
Orders |
Current Customers Orders |
Таблица 24.2: Коментарий в SYSTEMCATALOG
SELECT cnumber, datatype, cname, remarks
FROM SYSTEMCOLUMNS WHERE tname='Orders' AND tabowner='Chris'
AND cname='onum'
cnumber |
datatype |
cname |
remarks |
1 |
integer |
onum |
Orders # |
Таблица 24.3: Коментарий в SYSTEMCOLUMNS
Здесь показаны оставшиеся из ващих системных таблиц определения, с типовым запросом для каждого:
SYSTEMINDEXES - ИНДЕКСАЦИЯ В БАЗЕ ДАННЫХ
Имена столбцов в таблице SYSTEMINDEXES и их описания - следующие:
СТОЛБЦЫ |
ОПИСАНИЕ |
iname |
Имя индекса (используемого для его исключения ) |
iowner |
Имя пользователя который создал индекс |
tname |
Имя таблицы которая содержит индекс |
cnumber |
Номер столбца в таблице |
tabowner |
Пользователь который владеет таблицей содержащей индекс |
numcolumns |
Число столбцов в индексе |
cposition |
Позиция текущего столбца среди набора индексов |
isunique |
Уникален ли индекс (Y или N ) |
Индекс считается неуникальным, если он вызывает продавца, в snum столбце таблицы Заказчиков:
SELECT iname, iowner, tname, cnumber, isunique
FROM SYSTEMINDEXES
WHERE iname='salesperson';
Вывод для этого запроса показывается в Таблице 24.4.
SELECT iname, iowner, tname, cnumber, isunique
FROM SYSTEMINDEXES WHERE iname='salespeople';
iname |
iowner |
tname |
cnumber |
isunique |
salesperson |
Stephan |
Customers |
5 |
N |
Таблица 24.4: Строка из таблицы SYSTEMINDEXES
SYSTEMUSERAUTH - ПОЛЬЗОВАТЕЛЬСКИЕ И СИСТЕМНЫЕ ПРИВИЛЕГИИ В БАЗЕ ДАННЫХ
Имена столбцов для SYSTEMUSERAUTH и их описание, следующее:
Столбцы |
Описание |
username |
Идентификатор (ID ) доступа пользователя |
password |
Пароль пользователя вводимый при регистрации |
resource |
Где пользователь имеет права RESOURCE |
dba |
Где пользователь имеет права DBA |
Мы будем использовать простую схему системных привилегий, которая представлена в Главе 22, где были представлены три системных привилегии - CONNECT( ПОДКЛЮЧИТЬ ), RESOURCE( РЕСУРСЫ ) и DBA. Все пользователи получают CONNECT по умолчанию при регистрации, поэтому он не описан в таблице выше. Возможные состояния столбцов resource и dba могут быть - Y (Да, пользователь имеет привилегии) или - No (Нет, пользователь не имеет привилегий).
Пароли (password) доступны только высоко привилегированным пользователям, если они существуют. Следовательно запрос этой таблицы можно вообще делать только для информации относительно привилегий системы и пользователей.
ТИПОВОЙ ЗАПРОС Чтобы найти всех пользователей которые имеют привилегию RESOURCE, и увидеть какие из них - DBA, вы можете ввести следующее условие:
SELECT username, dba
FROM SYSTEMUSERAUTH
WHERE resource='Y';
Вывод для этого запроса показывается в Таблице 24.5.
SYSTEMTABAUTH - ПРИВИЛЕГИИ ОБЪЕКТА ОТОРЫЕ НЕ ОПРЕДЕЛЯЮТ СТОЛБЦЫ
Здесь показаны имена столбцов в таблице SYSTEMTABAUTH и их описание:
COLUMN |
ОПИСАНИЕ |
username Пользователь который имеет привилегии grantor Пользователь который передает привилегии по имени пользователя tname Имя таблицы в которой существуют привилегии owner Владелец tname selauth Имеет ли пользователь привилегию SELECT insauth Имеет ли пользователь привилегию INSERT delauth Имеет ли пользователь привилегию DELETE
Возможные значения для каждой из перечисленных привилегий объекта (имена столбцов которых окончиваются на auth ) - Y, N, и G. G указывает что пользователь имеет привилегию с возможностью передачи привилегий.
В каждой строке, по крайней мере один из этих столбцов должен иметь состояние отличное от N (другими словами, иметь хоть какую-то привилегию).
SELECT username, dba FROM SYSTEMUSERAUTH
WHERE resource='Y' ;
username |
dba |
Diane |
N |
Adrian |
Y |
Таблица 24 .5: Пользователи которые имеют привилегию RESOURCE
Первые четыре столбца этой таблицы составляют первичный ключ. Это означает что каждая комбинация из tname, владелец-пользователь (не забудьте, что две различные таблицы с различными владельцами могут иметь одно и тоже имя ), пользователь и пользователь передающий права(гарантор ), должна быть уникальной. Каждая строка этой таблицы содержит все привилегии (которые не являются определенным столбцом ), предоставляются одним определенным пользователем другому определенному пользователю в конкретном объекте. UPDATE и REFERENCES, являются привилегиями, которые могут быть определенными столбцами, и находиться в различных таблицах каталога. Если пользователь получает привилегии в таблице от более чем одного пользователя, такие привилегии могут быть отдельными строками созданными в этой таблице. Это необходимо для каскадного отслеживания при вызове привилегий.
ТИПОВОЙ ЗАПРОС. Чтобы найти все привелегии SELECT, INSERT, и DELETE, которые Adrian предоставляет пользователям в таблице Заказчиков, вы можете ввести следующее (вывод показан в Таблице 24.6 ):
SELECT username, selauth, insauth, delauth
FROM SYSTEMTABAUTH
WHERE grantor='Adrian'
ANDtname='Customers';
SELECT username, selauth, insauth, delauth
FROM SYSTEMTABAUTH WHERE grantor='Adrian'
AND tname='Customers';
username |
Интервал:
Закладка: