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

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

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

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

Это дает возможность компьютеру размещать иуправлять информацией в которой он нуждается, используя те же самые процедуры,которые он использует, чтобы размещать и управлять данными, которые он хранитдля вас. Хотя это — вопрос конкретной программы, а не часть стандарта ANSI, большинство SQL баз данных используют набор SQL таблиц, хранящих служебную информацию для своих внутренних потребностей. Этот набор называется в различныхпубликациях как системный каталог, словарь данных, или просто системные таблицы (Термин "словарь данных" может также относится к общему архиву данных,включая информацию о физических параметрах базы данных которые хранятся внеSQL.Следовательно, имеются программы баз данных, которые имеют и системныйкаталог и словарь данных.)Таблицы системного каталога — напоминают обычные SQL таблицы: те жестроки и столбцы данных.

Например, одна таблица каталога обычно содержит информацию о таблицах, существующих в базе данных, по одной строке на каждую таблицу базы данных; другая содержит информацию о различных столбцах таблиц, поодной строке на столбец, и так далее. Таблицы каталога создаются и присваиваютсяс помощью самой базы данных и идентифицируются с помощью специальных имен,таких, например, как SYSTEM. База данных создает эти таблицы и модифицирует ихавтоматически; таблицы каталога не могут быть непосредственно подвергнуты действию команды модификации.Если это случится, это значительно запутает всю систему и сделает ее неработоспособной.

Однако, в большинстве систем, каталог может быть запрошен пользователем. Это очень полезно, потому что это дает вам возможность узнать кое-что о базеданных, которую вы используете. Конечно, вся информация не всегда доступна всемпользователям. Подобно другим таблицам, доступ к каталогу ограничен для пользователей без соответствующих привилегий.Так как каталог принадлежит самой системе, имеется некоторая неясность относительно того, кто имеет привилегии и кто может предоставить привилегии в этом каталоге. Обычно, привилегии каталога предоставляет суперпользователь, например,администратор системы, зарегистрированый как SYSTEM или DBA. Кроме того, некоторые привилегии могут предоставляться пользователям автоматически.ТИПИЧНЫЙ СИСТЕМНЫЙ КАТАЛОГДавайте рассмотрим некоторые таблицы, которые мы могли бы найти в типовомкаталоге системы:ТаблицыSYSTEMCATALOGSYSTEMCOLUMNSSYSTEMTABLESSYSTEMINDEXESSYSTEMUSERAUTHSYSTEMTABAUTHSYSTEMCOLAUTHSYSTEMSYNONSСодержаниеТаблицы (базовые и представления)Столбцы таблицыКаталог Представления в SYSTEMCATALOGИндексы в таблицеПользователи базы данныхОбъектные привилегии пользователейСтолбцовые привилегии пользователейСинонимы для таблицТеперь, если наш DBA предоставит пользователю Stephen право просматриватьSYSTEMCATALOG такой командой,GRANT SELECT ON SYSTEMCATALOG TO Stephen;то Stephen сможет увидеть некоторую информацию обо всех таблицах в базе данных(мы имеем здесь пользователя DBA, пользователя Chris, владельца трех наших типовых таблиц, а также Adrian, владельца представления Londoncust).SELECT tname, owner, numcolumns, type, COFROM SYSTEMCATALOG;=============== SQL Execution Log ===============| SELECT tname, owner, numcolumns, type, CO|| FROM SYSTEMCATALOG;|| ================================================ ||tnameownernumcolumns type CO|| ---------------------------- ---- --- || SYSTEMCATALOGSYSTEM4B|| SalespeopleChris4B|| CustomersChris5B|| LondoncustAdrian5VY|| OrdersChris5B|==================================================Рисунок 24.1: Содержание таблицы SYSTEMCATALOGКак вы можете видеть, каждая строка описывает свою таблицу.

Первый столбец— имя; второй — имя пользователя который владеет ею; третий — число столбцовкоторые содержит таблица; и четвертый — код из одного символа, это или B (для базовой таблицы) или V (для представления). Последний столбец имеет пустые (NULL)значения, если его тип не равен V; и этот столбец указывает, определена или нетвозможность проверки.Обратите внимание, что SYSTEMCATALOG (СИСТЕМНЫЙ КАТАЛОГ) представлен как одна из таблиц в вышеуказаном списке. Для простоты, мы исключили остальные каталоги системы из вывода.

Таблицы системного каталога обычно показываютсяв SYSTEMCATALOG.ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ В ТАБЛИЦАХКАТАЛОГАПоскольку SYSTEMCATALOG — это таблица, вы можете использовать ее впредставлении. Фактически можно считать, что имеется такое представление с именем SYSTEMTABLES.Это представление SYSTEMCATALOG содержит только те таблицы, которыевходят в системный каталог; это обычно таблицы базы данных, типа таблицы Продавцов, которые показаны в SYSTEMCATALOG, но не в SYSTEMTABLES.Давайте предположим, что только таблицы каталога являются собственностьюпользователя SYSTEM. Если вы захотите, вы можете определить другое представление, которое бы специально исключало таблицы каталога из вывода:CREATE VIEW DatatablesAS SELECT *FROM SYSTEMCATALOGWHERE owner <> 'SYSTEM';РАЗРЕШИТЬ ПОЛЬЗОВАТЕЛЯМ ВИДЕТЬ (ТОЛЬКО) ИХСОБСТВЕННЫЕ ОБЪЕКТЫКроме того, имеются другое использование представлений каталога. Предположим вам нужно чтобы каждый пользователь был способен сделать запрос каталога,для получения информации только из таблиц которыми он владеет.

Пока значениеUSER, в команде SQL постоянно для ID доступа пользователя выдающего команду,оно может всегда быть использоваться, чтобы давать доступ пользователям только ких собственным таблицам.Вы можете, для начала создать следующее представление:CREATE VIEW OwntablesAS SELECT *FROM SYSTEMCATALOGWHERE Owner = USER;Теперь вы можете предоставить всем пользователям доступ к этому представлению:GRANT SELECT ON Owntables TO PUBLIC;Каждый пользователь теперь способен выбирать (SELECT) только те строки изSYSTEMCATALOG, владельцем которых он сам является.ПРЕДСТАВЛЕНИЕ SYSTEMCOLUMNS Одно небольшое добавление к этому позволит каждому пользователю просматривать таблицу SYSTEMCOLUMNS для столбцов из его собственных таблиц.

Сначала, давайте рассмотрим ту часть таблицыSYSTEMCOLUMNS, которая описывает наши типовые таблицы (другими словами, исключим сам каталог):tnameSalespeopleSalespeopleSalespeopleSalespeopleCustomerscnamesnumsnamecitycommcnumdatatypeintegercharchardecimalintegercnumber tabowner1Diane2Diane3Diane4Diane1ClaireCustomersCustomersCustomersCustomersOrdersOrdersOrdersOrdersOrderscnamecityratingsnumonumodateamtcnumsnumcharcharintegerintegerintegerdatedecimalintegerinteger234512345ClaireClaireClaireClaireDianeDianeDianeDianeDianeКак вы можете видеть, каждая строка этой таблицы показывает столбец таблицыв базе данных. Все столбцы данной таблицы должны иметь разные имена, также каккаждая таблица должна иметь данного пользователя, и наконец все комбинациипользователей, таблиц, и имен столбцов должны различаться между собой.Следовательно табличные столбцы: tname (имя таблицы), tabowner (владелецтаблицы), и cname (имя столбца), вместе составляют первичный ключ этой таблицы.Столбец datatype (тип данных) говорит сам за себя.

Столбец cnumber (номер столбца)указывает на местоположение этого столбца внутри таблицы. Для упрощения, мыопустили параметры длины столбца, точности, и масштаба.Для справки, показана строка из SYSTFMCATALOG, которая ссылается к этойтаблице:tnameownerSYSTEMCOLUMNS Systemnumcolumns type8BCOНекоторые SQL реализации будут обеспечивать вас большим количеством данных, чем показано в этих столбцах, но показанное являются основой для любой реализации.Для иллюстрации процедуры, предложенной в начале этого раздела, имеетсяспособ, позволяющий каждому пользователю видеть информацию SYSTEMCOLUMNSтолько для принадлежащих ему таблиц:CREATE VIEW OwncolumnsAS SELECT *FROM SYSTEMCOLUMNSWHERE tabowner = USER;GRANT SELECT ON Owncolumns TO PUBLIC;КОММЕНТАРИЙ В СОДЕРЖАНИИ КАТАЛОГАБольшинство версий SQL позволяют вам помещать комментарии (ремарки) вспециальные столбцы пояснений таблиц каталогов SYSTEMCATALOG иSYSTEMCOLUMNS, что удобно, так как эти таблицы не всегда могут объяснить своесодержание.

Для простоты, мы пока исключали этот столбец из наших иллюстраций.Можно использовать команду COMMENT ON со строкой текста, чтобы пояснитьлюбую строку в одной из этих таблиц. Состояние — TABLE, для комментирования вSYSTEMCATALOG, и текст — COLUMN, для SYSTEMCOLUMNS.Например:COMMENT ON TABLE Chris.OrdersIS 'Current Customer Orders';Текст будет помещен в столбец пояснений SYSTEMCATALOG. Обычно, максимальная длина таких пояснений — 254 символа.Сам комментарий, указывается для конкретной строки, одна с tname=Orders, адругая owner=Chris. Мы увидим этот комментарий в строке для таблицы Порядков вSYSTEMCATALOG:SELECT tname, remarksFROM SYSTEMCATALOGWHERE tname = 'Orders' AND owner = 'Chris';Вывод для этого запроса показывается в Рисунке 24.2.=============== SQL Execution Log ===============| SELECT tname, remarks|| FROM SYSTEMCATALOG|| WHERE tname = 'Orders'|| AND owner = 'Chris'|| ;|| ================================================ ||tnameremarks|| ----------------------------------|| OrdersCurrent Customers Orders|==================================================Рисунок 24.2:Коментарий в SYSTEMCATALOGSYSTEMCOLUMNS работает точно так же.

Сначала, мы создаем комментарий:COMMENT ON COLUMN Orders.onumIS 'Order #';затем выбираем эту строку из SYSTEMCOLUMNS:SELECT cnumber, datatype, cname, remarksFROM SYSTEMCOLUMNSWHERE tname = 'Orders' AND tabowner = 'Chris' AND cname = onum;Вывод для этого запроса показывается в Рисунке 24.3.Чтобы изменить комментарий, вы можете просто ввести новую командуCOMMENT ON для той же строки. Новый комментарий будет записан поверх старого.Если вы хотите удалить комментарий, напишите поверх него пустой комментарий, подобно следующему:COMMENT ON COLUMN Orders.onumIS ";и этот пустой комментарий затрет предыдущий.=============== SQL Execution Log ===============| SELECT cnumber, datatype, cname, remarks|| FROM SYSTEMCOLUMNS|| WHERE tname = 'Orders'|| AND tabowner = 'Chris'|| AND cname = 'onum'|| ;|| ================================================ ||cnumberdatatypecnameremarks|| ----------------------- ------------ ||1integeronumOrders #|==================================================Рисунок 24.3: Коментарий в SYSTEMCOLUMNSОСТАЛЬНОЕ ИЗ КАТАЛОГАЗдесь показаны оставшиеся из ваших системных таблиц определения, с типовым запросом для каждого:SYSTEMINDEXES — ИНДЕКСАЦИЯ В БАЗЕ ДАННЫХИмена столбцов в таблице SYSTEMINDEXES и их описания — следующие:СТОЛБЦЫinameiownertnamecnumbertabownernumcolumnscpositionisuniqueОПИСАНИЕИмя индекса (используемого для его исключения)Имя пользователя который создал индексИмя таблицы которая содержит индексНомер столбца в таблицеПользователь который владеет таблицей содержащей индексЧисло столбцов в индексеПозиция текущего столбца среди набора индексовУникален ли индекс (Y или N)ТИПОВОЙ ЗАПРОС Индекс считается неуникальным, если он вызывает продавца, в snum столбце таблицы Заказчиков:SELECT iname, iowner, tname, cnumber, isuniqueFROM SYSTEMINDEXESWHERE iname = 'salesperson';Вывод для этого запроса показывается в Рисунке 24.4.=============== SQL Execution Log ================| SELECT iname, iowner, tname, cnumber, isunique|| FROM SYSTEMINDEXES|| WHERE iname = 'salespeople'|| ;|| ================================================= ||inameiownertnamecnumber isunique || ----------- ------ ---------- ------- -------- || salesperson Stephan Customers5N|===================================================Рисунок 24.4: Строка из таблицы SYSTEMINDEXESSYSTEMUSERAUTH — ПОЛЬЗОВАТЕЛЬСКИЕ И СИСТЕМНЫЕ ПРИВИЛЕГИИВ БАЗЕ ДАННЫХИмена столбцов для SYSTEMUSERAUTH и их описание, следующее:СТОЛБЦЫusernamepasswordresourcedbaОПИСАНИЕИдентификатор (ID) доступа пользователяПароль пользователя вводимый при регистрацииГде пользователь имеет права RESOURCEГде пользователь имеет права DBAМы будем использовать простую схему системных привилегий, которая представлена в Главе 22, где были представлены три системных привилегии — CONNECT(ПОДКЛЮЧИТЬ), RESOURCE (РЕСУРСЫ) и DBA.Все пользователи получают CONNECT по умолчанию при регистрации, поэтомуон не описан в таблице выше.

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

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

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

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