В основе языка SQL лежат принципы реляционных баз данных. На этом языке нужно лишь сформулировать, что делать, но не то, как делать. В дополнение к обработке традиционных реляционных данных новые основанные на XML расширения языка SQL позволяют управлять XML-документами, полным текстом, мультимедиа и прочими объектами. Oracle Database 11g и 12c интегрирует в себе запросы XML, функциональность хранения и обновления механизма базы данных. Независимо от того, какой инструмент применяется для доступа к базе данных Oracle, в конечном итоге для выполнения всех транзакций используется Oracle SQL. Прикладная программа или применяемый инструмент Oracle могут позволить обращаться к базе данных без явного использования SQL, но все эти инструменты и приложения в конечном итоге для обработки запросов должны применять SQL.
Язык SQL включает команды для моделирования данных, определения данных, доступа к данным, поддержания безопасности данных, а также администрирования данных. Операторы SQL, используемые Oracle, могут быть разделены на несколько групп, в зависимости от того, изменяют они данные таблиц, структуру таблиц или какие-то другие характеристики сеанса или экземпляра. Ниже перечислены типы операторов SQL.
- Операторы управления системой
- Операторы управления сеансом
- Операторы встроенного SQL
- Операторы манипулирования данными
- Операторы управления транзакциями
- Операторы определения данных
Ниже мы детально рассматриваются все указанные типы.
Операторы управления системой
Оператор управления системой ALTER SYSTEM
можно использовать для изменения свойств работающего экземпляра базы данных Oracle Database. Например, с помощью ALTER SYSTEM
легко модифицировать определенные параметры инициализации, такие как компонент разделяемого пула системной глобальной области (SGA). В настоящее время ALTER SYSTEM
в Oracle — единственный оператор SQL для управления системой.
Ниже приведен пример применения команды ALTER SYSTEM
:
SQL> ALTER SYSTEM KILL SESSION '25,9192'; Session killed SQL>
Операторы управления сеансом
Операторы управления сеансом позволяют динамически изменять свойства индивидуального пользовательского сеанса. Например, если вы намерены выполнять трассировку всего, что происходит в сеансе SQL, то можете с помощью команды ALTER SESSION SET SQL TRACE=TRUE
включить трассировку сеанса. Операторы управления сеансом также очень полезны при изменении нескольких инициализационных параметров только в одном сеансе.
На заметку! Процедурное расширение Oracle языка SQL — PL/SQL — не поддерживает операторов управления сеансом.
Общие операторы управления сеансом включают команды ALTER SESSION
и SET ROLE
. Ниже приведен пример использования оператора ALTER SESSION
, в котором команда ALTER SESSION
используется для установки формата данных, действительного на протяжении времени существования сеанса:
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'MM-DD-YYYY HH:MI:SS'; Session altered. SQL>
Встроенные операторы SQL
Встроенные операторы SQL включают операторы языка определения данных ( Data Definition Language — DDL), языка манипуляции данными ( Data Manipulation Language — DML) и операторы управления транзакциями (вроде OPEN, CLOSE, FETCH
и EXECUTE
), применяемые в программе на процедурном языке, например, в операторах,используемых с предварительными компиляторами Oracle.
Операторы языка манипуляции данными
Операторы языка манипуляции данными — это операторы, которые запрашивают (извлекают) или манипулируют (изменяют) данными в таблице. По большей части, операторы DML модифицируют данные в объектах схемы. В большинстве систем оперативной обработки транзакций (online transaction processing — OLTP) большая часть работы Oracle состоит в принятии запросов от пользователей, которые содержат в себе операторы DML, и возврате результатов этих операторов.
Большую часть времени вы будете иметь дело со следующими четырьмя важнейшими операторами DML: SELECT, INSERT, UPDATE
и DELETE
. Обратите внимание, что в дополнение к этим четырем общим операторами DML есть и другие, которые уточняют выполнение этих четырех базовых операторов. Например, оператор MERGE
имеет дело с условными вставками и удалениями, а оператор LOCK TABLE
используется для модификации механизма блокировок Oracle по умолчанию.
Операторы SELECT
Операторы SELECT
— это запросы, извлекающие данные из таблицы или набора таблиц (или представлений). Oracle предлагает набор операторов, таких как UNION
, MINUS
и INTERSECT
, позволяющих комбинировать результаты нескольких запросов для получения финального результирующего набора данных. С помощью команд ORDER BY можно отсортировать результаты, выданные Oracle; в противном случае результаты не будут представлены в каком-то определенном порядке. Когда требуются данные из нескольких таблиц, их необходимо объединять в операторах SELECT
. Ограничить результирующий набор можно, соединяя таблицы с помощью условий соединения.
Можно также использовать подзапросы как часть основного запроса верхнего уровня. Подзапрос в конструкции WHERE
оператора SELECT
называется вложенным подзапросом. Подзапрос, являющийся частью конструкции FROM
оператора SELECT
, называется встроенным представлением (inline view). В приложении представлены примеры подзапросов, вложенных подзапросов и вложенных представлений.
Операторы INSERT, DELETE и UPDATE
Оператор INSERT
вставляет новые строки в существующие таблицы, а оператор DELETE
удаляет их из таблиц. Оператор UPDATE
модифицирует один или более столбцов одиночной строки или же их множества в пределах таблицы. Хотя оптимизация операторов SELECT
, обращенных к крупным таблицам, является важнейшей частью настройки производительности, все же операторы SQL, которые модифицируют, удаляют или добавляют данные, представляют собой источник разочарований администраторов при работе с базой данных OLTP. Правильное проектирование таблиц и индексов в базе данных важно для эффективной обработки больших объемов параллельных операций вставки, удаления и обновления таблиц. Вдобавок администратор базы данных для эффективного выполнения операторов подобного рода нуждается в правильном использовании табличного пространства отмены (undo) и оперативных журналов повторного выполнения.
Операторы управления транзакциями
Операторы управления транзакциями используются для управления изменениями, выполняемыми операторами SQL манипуляции данных вроде INSERT, UPDATE
или DELETE
. Существуют четыре оператора управления транзакциями.
COMMIT
. Когда этот оператор следует за набором операторов DML, проведенные ими изменения становятся постоянными.ROLLBACL
. Когда этот оператор следует за набором из одного или более операторов DML, то изменения, проведенные предшествующими операторами, отменяются.Если не установлено никаких точек сохранения, то отменяются все операторы от начала транзакции.SAVEPOINT
. Этот оператор обеспечивает гибкость транзакций, помогая устанавливать промежуточные точки в транзакции, к которым можно откатить (отменить) транзакции.SET TRANSACTION
. Этот редко используемый оператор явно помечает начало транзакции и применяется в таких операторах, какSET TRANSACTION READ ONLY.
Операторы языка определения данных
Операторы языка определения данных позволяют определять структуру различных объектов схемы в базе данных Oracle Database. Операторы DDL позволяют создавать, изменять и удалять объекты базы данных, такие как таблицы и индексы. Ниже перечислены некоторые из основных применений операторов DDL.
- Создание таблиц, индексов и прочих объектов схемы.
- Создание и модификация процедур, функций и пакетов.
- Удаление и модификация объектов базы данных.
- Создание и управление пользователями базы данных.
- Выдача и отъем привилегий доступа к объектам.
- Создание и изменение табличных пространств.
- Создания и модификация связей с другими базами данных.