Главная » Просмотр файлов » Мартин Грубер - Понимание SQL

Мартин Грубер - Понимание SQL (991940), страница 44

Файл №991940 Мартин Грубер - Понимание SQL (Мартин Грубер. Понимание SQL) 44 страницаМартин Грубер - Понимание SQL (991940) страница 442015-08-23СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 44)

Возможные состояния столбцов resource и dba могутбыть — Y (Да, пользователь имеет привилегии) или — No (Нет, пользователь не имеет привилегий).Пароли (password) доступны только высоко привилегированным пользователям,если они существуют. Следовательно, запрос этой таблицы можно вообще делатьтолько для информации относительно привилегий системы и пользователей.ТИПОВОЙ ЗАПРОС Чтобы найти всех пользователей, которые имеют привилегию RESOURCE, и увидеть какие из них — DBA, вы можете ввести следующее условие:SELECT username, dbaFROM SYSTEMUSERAUTHWHERE resource = 'Y';Вывод для этого запроса показывается в Рисунке 24.5.SYSTEMTABAUTH — ПРИВИЛЕГИИ ОБЪЕКТА, КОТОРЫЕ НЕ ОПРЕДЕЛЯЮТСТОЛБЦЫЗдесь показаны имена столбцов в таблице SYSTEMTABAUTH и их описание:COLUMNusernamegrantortnameownerselauthinsauthdelauthОПИСАНИЕПользователь, который имеет привилегииПользователь, который передает привилегии по имени пользователяИмя таблицы, в которой существуют привилегииВладелец tnameИмеет ли пользователь привилегию SELECTИмеет ли пользователь привилегию INSERTИмеет ли пользователь привилегию DELETEВозможные значения для каждой из перечисленных привилегий объекта (именастолбцов которых окончиваются на auth) — Y, N, и G.

G указывает, что пользовательимеет привилегию с возможностью передачи привилегий. В каждой строке, по крайней мере один из этих столбцов должен иметь состояние отличное от N (другими словами, иметь хоть какую-то привилегию).=============== SQL Execution Log ================| SELECT username, dba|| FROM SYSTEMUSERAUTH|| WHERE resource = 'Y'|| ;|| ================================================= ||usernamedba|| ----------- -----|| DianeN|| AdrianY|===================================================Рисунок 24.5: Пользователи которые имеют привилегию RESOURCEПервые четыре столбца этой таблицы составляют первичный ключ.

Это означает что каждая комбинация из tname, владелец-пользователь (не забудьте, что дверазличные таблицы с различными владельцами могут иметь одно и тоже имя), пользователь и пользователь передающий права (гарантор), должна быть уникальной.Каждая строка этой таблицы содержит все привилегии (которые не являются определенным столбцом), предоставляются одним определенным пользователем другомуопределенному пользователю в конкретном объекте.UPDATE и REFERENCES являются привилегиями, которые могут быть определенными столбцами, и находиться в различных таблицах каталога. Если пользователь получает привилегии в таблице от более чем одного пользователя, такиепривилегии могут быть отдельными строками, созданными в этой таблице.

Это необходимо для каскадного отслеживания при вызове привилегий.ТИПОВОЙ ЗАПРОС Чтобы найти все привелегии SELECT, INSERT и DELETE,которые Adrian предоставляет пользователям в таблице Заказчиков, вы можете ввести следующее (вывод показан в Рисунке 24.6):SELECT username, selauth, insauth, delauthFROM SYSTEMTABAUTHWHERE grantor = 'Adrian' AND tname = 'Customers';=============== SQL Execution Log ================| SELECT username, selauth, insauth, delauth|| FROM SYSTEMTABAUTH|| WHERE grantor = 'Adrian'|| AND tname = 'Customers'|| ;|| ================================================= ||usernameselauth insauth delauth|| ----------- ------- -------- -------|| ClaireGYN|| NormanYYY|===================================================Рисунок 24.6: Пользователи получившие привилегии от AdrianВыше показано, что Adrian предоставил Claire привилегии INSERT и SELECT втаблице Заказчиков, позднее предоставив ей права на передачу привилегий.

Пользователю Norman он предоставил привелегии SELECT, INSERT и DELETE, но не далвозможность передачи привилегий ни в одной из них. Если Claire имела привилегиюDELETE в таблице Заказчиков от какого-то другого источника, в этом запросе это показано не будет.SYSTEMCOLAUTHСТОЛБЦЫusernamegrantortnamecnameownerupdauthrefauthОПИСАНИЕПользователь который имеет привилегииПользователь который предоставляет привилегии другому пользователюИмя таблицы в которой существуют привилегииИмя столбца в котором существуют привилегииВладелец tnameИмеет ли пользователь привилегию UPDATE в этом столбцеИмеет ли пользователь привилегию REFERENCES в этом столбцеСтолбцы updauth и refauth могут быть в состоянии Y, N, или G; но не могут бытьодновременно в состоянии N для одной и той же строки.

Это — первые пять столбцовтаблицы, которы не составляют первичный ключ. Он отличается от первичного ключаSYSTEMTABAUTH в котором содержится поле cname, указывающее на определенныйстолбец обсуждаемой таблицы для которой применяются одна или обе привилегии.Отдельная строка в этой таблице может существовать для каждого столбца в любойданной таблицы в которой одному пользователю передаются превилегии определенного столбца с помощью другого пользователя.Как и в случае с SYSTEMTABAUTH та же привилегия может быть описана в более чем одной строке этой таблицы если она была передана более чем одним пользователем.ТИПОВОЙ ЗАПРОС Чтобы выяснить, в каких столбцах какой таблицы вы имеетепривилегию REFERENCES, вы можете ввести следующий запрос (вывод показывается в Рисунке 24.7)SELECT owner, tname, cnameFROM SYSTEMCOLAUTHWHERE refauth IN ('Y', 'G') AND username = USERORDER BY 1, 2;который показывает, что эти две таблицы, которые имеют различных владельцев, ноодинаковые имя, в действительности, совершенно разные таблицы (т.е.

это не как двасинонима для одной таблицы).=============== SQL Execution Log ================| SELECT OWNER, TNAME, CNAME|| FROM SYSTEMCOLAUTH|| WHERE refaulth IN ('Y' , 'G' )|| AND username = USER|| ORDER BY 1, 2|| ;|| ================================================= ||ownertnamecname|| ----------- ----------- ------|| DianeCustomerscnum|| DianeSalespeoplesname|| DianeSalespeoplesname|| GillanCustomerscnum|===================================================Рисунок 24.7: Столбцы в пользователь имеет привилегию INSERTSYSTEMSYNONS — СИНОНИМЫ ДЛЯ ТАБЛИЦ В БАЗЕ ДАННЫХЭто — имена столбцов в таблице SYSTEMSYNONS и их описание:СТОЛБЕЦsynonymsynownertnametabownerОПИСАНИЕИмя синонимаПользователь, который является владельцем синонима (может бытьPUBLIC (ОБЩИЙ))Имя таблицы используемой владельцемИмя пользователя который является владельцем таблицыТИПОВОЙ ЗАПРОС Предположим, что Adrian имеет синоним Clients для таблицы Заказчиков, принадлежащей Diane, и что имеется общий синоним Customers дляэтой же таблицы.

Вы делаете запрос таблицы для всех синонимов в таблице Заказчиков (вывод показывается в Рисунке 24.8):SELECT *FROM SYSTEMSYNONSWHERE tname = 'Customers'=============== SQL Execution Log ================| SELECT *|| FROM SYSTEMSYNONS|| WHERE tname = 'Customers'|| ;|| ================================================= || synonymsynownertnametabowner|| ----------- ----------- ---------- ---------- || ClientsAdrianCustomersDiane|| CustomersPUBLICCustomersDiane|===================================================Рисунок 24.8: Синонимы для таблицы ЗаказчиковДРУГОЕ ИСПОЛЬЗОВАНИЕ КАТАЛОГАКонечно, вы можете выполнять более сложные запросы в системном каталоге.Обьединения, например, могут быть очень удобны.

Эта команда позволит вам увидеть столбцы таблиц и базовые индексы, установленые для каждого (вывод показывается в Рисунке 24.9):SELECT a.tname, a.cname, iname, cpositionFROM SYSTEMCOLUMNS a, SYSTEMINDEXES bWHERE a.tabowner = b.tabowner AND a.tname = b.tname ANDa.cnumber = b.cnumberORDER BY 3 DESC, 2;Она показывает два индекса, один для таблицы Заказчиков и один для таблицыПродавцов. Последний из них — это одностолбцовый индекс с именем salesno в полеsnum; он был помещен первым из-за сортировки по убыванию (в обратном алфавитном порядке) в столбце iname. Другой индекс, custsale, используется продавцами,чтобы отыскивать своих заказчиков.

Он основывается на комбинации полей snum иcnum внутри таблицы Заказчиков, с полем snum приходящим в индексе первым, какэто и показано с помощью поля cposition.=============== SQL Execution Log ================| SELECT a.tname, a.cname, iname, cposition|| FROM SYSTEMCOLUMNS a, SYSTEMINDEXES b|| WHERE a.tabowner = b.tabowner|| AND a.tname = b.tname|| AND a.cnumber = b.cnumber|| ORDER BY 3 DESC, 2;|| ================================================= ||tnamecnameinamecposition||----------- ------- -------- -----------||Salespeoplesnamesalesno1||Customerscnumcustsale2||Customerssnumcustsale1|===================================================Рисунок 24.9: Столбцы и их индексыПодзапросы также могут быть использованы. Имеется способ увидеть данныестолбца только для столбцов из таблиц каталога:SELECT *FROM SYSTEMCOLUMNSWHERE tname IN (SELECT tnameFROM SYSTEMCATALOG);Для простоты, мы не будем показывать вывод этой команды, которая состоит изодного входа для каждого столбца каждой таблицы каталога.

Вы могли бы поместитьэтот запрос в представление, назвав его, например, SYSTEMTABCOLS, для представления SYSTEMTABLES.РЕЗЮМЕИтак, система SQL использует набор таблиц, называемый системным каталогомв структуре базы данных. Эти таблицы могут запрашиваться но модифицироваться.Кроме того, вы можете добавлять комментарии столбцов в (и удалять их из) таблицыSYSTEMCATALOG и SYSTEMCOLUMNS. Создание представлений в этих таблицах —превосходный способ точно определить, какая пользовательская информация можетбыть доступной.Теперь, когда вы узнали о каталоге, вы завершили ваше обучение SQL в диалоговом режиме. Следующая глава этой книги расскажет вам, как SQL используется впрограммах, которые написаны прежде всего на других языках, но которые способныизвлечь пользу из возможностей SQL, взаимодействуя с его таблицами базы данных.РАБОТА С SQL1. Сделайте запрос каталога чтобы вывести, для каждой таблицы имеющей болеечем четыре столбца, имя таблицы, имя владелеца, а также имя столбцов и типданных этих столбцов.2.

Характеристики

Тип файла
PDF-файл
Размер
1,41 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6479
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее