- •4. Дополнительные средства языка sql субд Oracle
- •4.1. Операторы объединения
- •4.2. Подзапросы (вложенные запросы)
- •Однострочные подзапросы
- •Многострочные подзапросы
- •Подзапросы, возвращающие более одного столбца
- •4.3. Перенос данных между таблицами
- •Перенос данных с помощью оператора insert
- •Создание новой таблицы на основе уже существующей
- •4.4. Переименование таблиц
- •4.6. Представления
- •Создание представления
- •Удаление представлений
- •Изменение определения представления
- •Анализ первых n записей
- •4.7. Другие объекты базы данных Последовательности
- •Синонимы
- •Словарь данных Oracle
Синонимы
Синоним (synonym) позволяет ссылаться на объект Oracle по имени, которое отличается от его настоящего имени. Синонимы можно определять для таблиц, представлений, последовательностей, а также других объектов. В этом разделе рассиатриваются синонимы таблиц, но все сказанное ниже применимо и к синонимам других объектов.
Синоним создается главным образом для удобства: если часто приходится ссылаться на таблицу с длинным именем, то можно по достоинству оценить возможность использования короткого имени без переименования таблицы и изменения кода, который на нее ссылается.
Удобство синонимов проявляется и в том, что они могут облегчить доступ к вашим данным для других людей. Таблицы организуются по идентификатору пользователя Oracle, который их создает, поэтому если другой пользователь захочет обращаться к таблице, созданной другим пользователем, то в общем случае ему придется помещать перед именем таблицы имя другого пользователя, как показано ниже:
SELECT * FRОМ имя_пользователя . имя_таблщы;
Это может оказаться утомительным занятием, а если вы передадите свою таблицу кому-то другому, то вдобавок потребуется менять весь код, который на нее ссылается. Синонимы позволяют сделать таблицу "видимой" для всех, даже если не указано имя ее владельца. Благодаря этому можно писать SQL-операторы, которые будут продолжать работать даже при передаче таблицы другому пользователю.
Создание синонима
Команда создания синонима имеет следующий синтаксис:
CREATE [PUBLIC] SYNONYM имя_синонима
FOR имя объекта ;
Чтобы увидеть, как используются синонимы, можно воспользоваться приведенными ниже команды:
SELECT * FROM product;
CREATE SYNONYM prod FOR product;
SELECT * FROM prod;
Если нужно сделать таблицу доступной другим пользователям, достаточно создать синоним с тем же именем, что и у таблицы:
CREATE PUBLIC SYNONYM product FOR product;
Модификация существующего синонима
Ввиду чрезвычайной простоты синонимов Oracle не предоставляет никаких средств для их изменения. При необходимости просто удаляется старый синоним и создается новый. Команда удаления синонима имеет следующий синтаксис:
DROP [PUBLIC] SYNONYM имя_синонима;
Первый из созданных выше синонимов (PROD) удаляется следующей командой:
DROP SYNONYM prod;
Для удаления общего синонима используется команда
DROP PUBLIC SYNONYM product;
Словарь данных Oracle
База данных Oracle состоит из множества различных объектов: таблиц, столбцов, представлений, связей, ограничений, последовательностей и т.д. Чтобы следить за всеми этими объектами, Oracle сохраняет информацию о них в словаре данных (data dictionary). Словарь данных представляет собой набор таблиц и представлений, содержащих самую последнюю информацию о каждом объекте и пользователе базы данных. Он содержит каждую характеристику, указанную вами создании объекта, а также служебную информацию — в частности, размер пространства, выделенного объекту, размер используемого пространства и права пользователей, относящиеся к этому объекту.
Опрос словаря данных для получения информации о пользователях и базе данных
Полный список объектов словаря данных можно получить из представления с именем DICT. Приведенная ниже команда показывает этот список вместе с полезной дополнительной информацией.
SELECT table_name, SUBSTR(comments, 1, 45)
FROM dict
WHERE SUBSTR(comments, 1, 7) <> 'Synonym' ;
В команде использована конструкция WHERE, исключающая сведения о синонимах.
Использование различных представлений словаря данных
В Oracle существует так много различных представлений словаря данных, что об их использовании можно написать отдельное пособие. Наиболее полезны два представления, которые показывают списки собственных таблиц и представлений пользователя. Следующая команда покажет список всех таблиц пользователя:
SELECT table_name FROM user_tables;
Список всех созданных пользователем представлений выводит команда
SELECT view_name FROM user_views;
Эти команды приносят пользу в тех случаях, когда точно не известны имена таблиц или представлений, или необходимо проверить их существование.