WWW.BOOK.LIB-I.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные ресурсы
 
s

Pages:   || 2 |

«Базы данных и клиент-серверные системы Интернет-издание 27.01.2001 SQL PL/SQL, SQL*Plus Справочник Свободное интернет-издание ...»

-- [ Страница 1 ] --

Базы данных и клиент-серверные системы

Интернет-издание www.deltacom.co.il/rus 27.01.2001

SQL

PL/SQL, SQL*Plus

Справочник

Свободное интернет-издание

WWW.DELTACOM.CO.IL

27.01.2001

© Владимир Новик 1995-2001. Israel

Владимир Новик webmaster@deltacom.co.il

Справочник. SQL,PL/SQL,SQL*Plus

Интернет-издание www.deltacom.co.il/rus

Справочник

SQL, PL/SQL, SQL*Plus

Эта книга предназначена для всех кто интересуется базами данных.

В книге описан язык запросов к базам данных SQL и его процедурное расширение PL/SQL По мере сил и возможностей, на основании многолетнего опыта практического применением базы данных Oracle, автор постарался собрать справочный материал для практического применения при разработке клиент-серверных систем.

Для тех, кто не знаком с данным понятием можно сказать, что в настоящее время ни одну из промышленных систем обработки информации нельзя представить без хранения информации, а сервер базы данных предназначен для обработки поступающих запросов от различных программ на получение информации..

Знание языка запросов к базам данных актуально, поскольку развитие вычислительной техники привело к практически повсеместному распространению систем распределённой обработки и хранения информации.

Здесь учтены команды Oracle 8 и Oracle-7 и Oracle-6. Пособие может быть использовано как при работе на Personal Oracle-7, 8, Oracle-7,8 Server, так и при работе на VAX station.

Автор не претендует на полноту охвата всех возможностей Oracle server, поскольку это не мыслимо в книге такого маленького объёма.

Лист 2 из 126 Владимир Новик webmaster@deltacom.co.il Справочник. SQL,PL/SQL,SQL*Plus Интернет-издание www.deltacom.co.il/rus Терминологический словарь Раздел содержит описание терминов используемых при работе с базой данных. При описании какойлибо темы неизбежно применение специальных терминов.

Институт ANSI - American National Standard Institute (Американский Стандартизации) Центральный институт стандартизации США. Стандарт, принятый данным институтом, является рекомендуемым для других стран и обязательным для применения на территории США.

Изделия, не удовлетворяющие условиям стандарта не могут быть использованы на территории США privileges access ( Привилегии доступа) Возможности выполнения определённых действий, устанавливаемые при соединении с базой данных. ( Привилегии Доступа предоставляются через счета пользователя.).

account ( Счет ) Счет - специально организованные данные, предназначенные для обеспечения управления возможностями пользователя. Счета обычно создаются и управляются системным администратором. Счет состоит из имени пользователя и пароля.

active database connection ( Активное соединение c базой данных) Текущее соединение с базой данных..-Это соединение, которое установлено при издании директивы CONNECT. Текущее соединение определяет, какие данные пользователь может просмотреть и изменить и его возможности по обработке информации в базе данных.

advanced distribution features ( Расширенные распределительные особенности ) Дополнительные возможности программного обеспечения,. используемые в компьютерных сетях В

ORACLE-7это:

• Связи Базы данных,

• Распределенные Запросы,

• Распределенные Модификации,

• Кадры только для чтения

• SQL*Net- сетевая поддержка распределённых систем.





• SQL*Net 2 - дополнительное изменение сетевой поддержки, используемого Oracle Developer-2000 alias ( Псевдоним ) Альтернативное имя для существующего сетевого объекта, типа главной станции или набора параметров.

В SQL - временное имя, назначенное для таблицы, представления, столбца, или значения внутри утверждения SQL.

Алиас используется, чтобы обеспечить ссылку на другой объект через новое имя.

( API) ( Интерфейс Программирования Application Programming Interface Прикладной программы ) Набор функций, используемых для обеспечения возможности подготовки приложения на языках программирования. Используется программистами.

ASCII data file ( ASCII файл данных ) Простой текстовый файл. ASCII - Американский Стандартный Код Обмена Информацией.

backup ( Копия ) Процесс создание копии данных. Используется чтобы обеспечить возможность восстановить данные при аварийных ситуациях.

При проведении операций копирования проводится автоматическая архивизация ( сжатие ) информации для более компактного хранения информации.

client ( Пользователь ) Пользователь, прикладная программа или компьютер, который запрашивает данные или обработку информации у другой программы или компьютера.

Задача клиентной программы - оформление запроса пользователя, визуализация информации и

–  –  –

посылка запроса на сервер.

cluster ( Кластер ) Структура базы данных, которая содержит один или несколько таблиц.

Таблицы физически сохранены вместе внутри базы данных для более быстрого доступа к ним.

column ( Столбец ) Вертикальное пространство в таблице. Столбец имеет имя и специфический тип данных..

column name ( Имя столбца ) Алфавитно-цифровой указатель столбца. Имя столбца - 30 символов без пробелов и первый символ обязательно алфавитный символ.

Национальные символы в большинстве систем не допустимы. Даже если это допустимо то при использовании национальных символов в качестве имён полей возникают проблеммы переноса данных па различные платформы ( Пример – Microsoft Access ). В Oracle это категорически запрещено.

communications protocol ( Протокол связи ) Набор стандартных правил для управления передачей данных в компьютерной сети.

complex query ( Сложный запрос ) Также называемый сложным утверждением. Утверждение INSERT, UPDATE, DELETE, или SELECT, содержащие подзапрос.

connect ( Соединить )

• Возможность доступа к базе данных.

• Директива, c помощью которой осуществляется подключение к базе данных

• Процесс установки взаимосвязи с сервером.

connect descriptor ( Соединитель - описатель ) Специально форматируемое описание сетевого соединения.

Указывает характеристики сети и метод доступа к сети на низком уровне доступа connect string ( Соединитель - строка ) Набор параметров, включая протокол, ( SQL*NET ) которые используются, чтобы присоединить сервер специфическим образцом.

database ( База данных ) Совокупность данных, которая обрабатывается как модуль.

Состоит из логических и физических структур. Разрабатываются, чтобы сохранять и восстановить связанную информацию.

database administrator ( Администратор базы данных) Человек, ответственный за проводимые операции сопровождения и настройки базы данных.

database application ( Прикладная программа базы данных ) Набор форм, меню, отчетов, клиентных программ и других компонентов, которые обеспечивают ввод, обработку и получение информации.

database connection ( Соединение базы данных) Доступ к базе данных, выполненный при подсоединении к ней.

database link ( Связь базы данных) Связь базы данных - объект в базе данных, который позволяет Вам обращаться к объектам на удаленной базе данных.

database object ( Объект базы данных) Объекты баз данных состоят из таблиц, представлений, индексов, синонимов, связей базы данных, ролей, кадров, и пользователей.

Каждый из этих объектов определяет некоторые характеристики проекта базы данных.

database owner ( Владелец базы данных) Обычно человек, создавший базу данных, - тот кто может предоставлять привилегии доступа к базе данных другим пользователям.

–  –  –

database role ( Роль базы данных) Роль базы данных - метод предоставления привилегий доступа.

Вы создаете объект базы данных называемый ролью, затем предоставляете привилегии созданной роли, затем предоставляете эту роль индивидуальным пользователям. ( В роли указывается совокупность различных прав работы с объектами базы данных database server ( Сервер базы данных ) Центральная программа, принимающая запросы других программ на выполнение некоторых действий и отвечающая на них по имеющейся информации.

datatype ( Тип данных ) Вид хранимой информации в сервере и вид переменных в PL/SQL процедурах.

В типе данных указывается какую информацию можно сохранить в поле базы данных distributed database ( Распределенная база данных ) Одиночная, логическая база данных, которая физически размещена на двух или больше компьютерах, объединенных через некоторую систему коммуникаций.

Существенная особенность распределенной базы данных - то, что пользователь и/или программа работает так, как будто он имеет доступ к целой базе данных в конкретном месте.

Распределённая база данных всегда состоит из тесно взаимосвязанных различных серверов.

distributed option ( Распределенная опция ) Разрешает Вам обращаться к данным, постоянно находящимся на различных компьютерах в различных местах сети.

Распределенная опция включает:

• Связи Базы данных

• Распределенные Запросы

• Распределенные Модификации

• Кадры только для чтения,.

distributed query ( Распределенный запрос ) Запрос, который выбирает данные из баз данных на различных серверах базы данных сети.

Распределенный запрос может ссылаться на данные в других серверах сети через текущий локальный узел.

При соединении используются объединения, вложенные запросы, или представления.

distributed update ( Распределенная модификация ) Модификация, которая изменяет данные в локальной или удаленной базе данных в конкретной текущей транзакции.

domain name ( Имя области ) Идентификатор области имен, который гарантирует, что имя уникальное. Области связаны иерархией вызовов.

DOMAIN структура имен распространяется как на сетевую организации, так и на внутренние имена в сервере и имена глобальных областей.

DNS Domain Name System (Система наименования доменов ) Специальная база данных, позволяющая осуществлять преобразование имён в визические характеристики.

Export Utility ( Экспортная Утилита ) Вспомогательные программы, предназначенные для записи информации во внешние файлы операционной системы.

Файлы могут быть сохранены и переданы на другой сервер с целью их последующей загрузки в базу данных.

foreign key ( Внешний ключ ) Один или большее количество столбцов таблицы, которые используются для обращения в другую таблицу.

foreign data source ( Внешний источник данных ) Базы другого типа и прочии источники информации, используемые для загрузки базы данных.

–  –  –

host ( Главный компьютер ) Компьютер, который обеспечивает общедоступнный ресурс на сети.

host string ( Главная строка ) Ссылка на особенно форматируемое описание адресата сетевого соединения.

Import Utility ( Утилита Импорта ) Вспомогательные программы Oracle для загрузки информации в базу данных из внешних файлов операционной системы.

index ( Индекс ) Объект базы данных, созданный, чтобы увеличить эффективность поиска данных.

Индекс обеспечивает быстрый доступ к базе данных. Oracle автоматически использует индексы для уменьшения времени поиска.

INIT.ORA Системный файл базы данных Oracle. Содержащий список параметров, которые устанавливают параметры загрузки базы данных. Файл текстовый. Может быть отредактирован в ручную.

instance ( Отдельный случай, требование) Требование старта системы. Для Oracle7 - база данных старта системы.

Personal Oracle7 поддерживает один образец базы данных начального запуска. В других случаях под instance понимается конкретная реализация объектного класса.

ISO/IES - International National Standard Institute / International Electro-technical Commission Международный институт стандартизации / международная электро -техническая комиссия. Стандарты, принятые международным институтом стандартизации носят рекомендательный характер.

local database ( Локальная база данных ) База данных, установленная на вашем компьютере. Это запущенная база данных при старте или вновь созданная база данных.

logon ( Регистрация ) Обращение к базе данных, использующей назначенное имя пользователя и пароль.

Процесс установления идентичности пользователя по имени и паролю.

master table ( Главная таблица ) Таблица, которая используется как основная при создании кадра в запросе.

migration ( Перемещение ) Дополнительные действия, осуществляемые при установке Oracle7, обеспечивающие изменение версии системы, исправление ошибок и введение дополнительных возможностей.

network connection ( Сетевое соединение ) Электронное соединение, обеспечивающее возможность обращения к ресурсам других компьютеров из локального компьютера.

Open Database Connectivity (ODBC) открытое соединение с базами данных Специальный драйвер, предназначенный для обеспечения соединения клиентных приложений с базами данных, размещенных как на локальном компьютере, так и в распределённой вычислительной среде.

Применяется в Windows. Внутрь ODBC загружаются драйвера для различных баз данных.

object ( Объект ) Объединение данных, алгоритмов их обработки ( методов обработки) и событий в единый блок, имеющий собственное имя.

В Oracle - это именованная структура в базе данных типа таблицы, индекса, формы или любого другого компонента, имеющее собственное имя ( за исключением синонима).

Вы можете копировать, перемещать, или удалять в объект по его имени.

Oracle Call Interface ( Интерфейс Обращения к Oracle ) ( OCI) - интерфейс программирования прикладных программ ( API) Oracle Developer/2000 ( Разработкик/2000 ) Лист 6 из 126 Владимир Новик webmaster@deltacom.co.il Справочник. SQL,PL/SQL,SQL*Plus Интернет-издание www.deltacom.co.il/rus Инструмент разработки, который дает возможность организациям формировать системы от рабочих групп до уровня предприятия.

Oracle Named Pipes Protocol Adapter ( Oracle именованный Адаптер Протокола Канального доступа ) Система взаимодействия между серверами по имени компьютера в доменной структуре сети.

Oracle SPX Protocol Adapter ( Oracle SPX Адаптер Протокола ) SQL*NET интерфейс прикладной программы, который позволяет SQL * NET связываться с удаленной базой данных через SPX протокол.

Oracle TCP/IP Protocol Adapter ( Oracle TCP/IP Адаптер Протокола ) SQL * интерфейс прикладной программы Сети, который позволяет SQL*Net связываться с удаленной базой данных через TCP/IP Протокол.

Oracle7 DBMS ( Oracle7 система управления базой данных ) Система управления базой данных, разработанная Корпорацией Oracle.

Компоненты системы управления базой данных включают ядро системы и различные вспомогательные утилиты для использования администраторами базы данных и пользователями базы данных.

package ( Пакет ) Пакет - скрытая совокупность связанных процедур, функций, и других объектов программы, сохраненных вместе в базе данных.

parallel database ( Параллельная база данных ) База данных, в которой, одновременно с основной, осуществляется сохранение информации всё время работы системы.

Создание параллельной базы данных осуществляется с целью обеспечения повышенной надёжности сохранения информации.

Параллельную базу данных и основную базу данных необходимо создавать на физически различных носителях информации.

При разрушении основной базы данных, параллельная база данных может бать запущена в тот -же момент.

password ( Пароль ) Пароль пользователя -. секретное слово или фраза ( 30 символов; пробелы и запятые запрещены), связанная с именем пользователя.

Пароль используется для защиты данных и должен быть известен только владельцу.

Personal Oracle7 Navigator ( Персональный Oracle7 Навигатор ) Программа, обеспечиваюшая экранное взаимодействие администратора базы данных с сервером базы данных.

Обеспечивает упрощение работы пользователя по созданию главных объектов приложения.

PL/SQL database language ( PL/SQL язык баз данных ) Процедурное расширение языка SQL. PL/SQL объединяет легкость и гибкость SQL с процедурными функциональными возможностями языка структурного программирования primary key ( Первичный ключ ) Набор столбцов, используемых, чтобы установить уникальность строк.

Комбинация значений столбца уникальна для каждой строки в таблице.

Первичный ключ - наиболее часто используемые средства вызова к строкам. Так - же применяется чтобы отсортировать таблицу и защитить данные от дублированых значений.

privilege ( Привилегия )

Право выполнять специфический тип утверждения SQL. Имеются два типа привилегий:

Привилегии Системы выполнять специальное действие на конкретном типе объекта; например, привилегия удаления строки любой таблицы.

Объектные привилегии позволяют пользователю выполнять действие на конкретном объекте; например, привилегия удаления строки в специфической таблице.

private synonym ( Частный синоним )

–  –  –

Синоним для объекта базы, установленный с целью обеспечения возможности обращения только конкретных пользователей к конкретному объекту базы данных.

procedure ( Процедура ) Утверждения SQL и PL/SQL, которые сгруппированы вместе как модуль ( Связанная совокупность действий над данными ).

Предназначены для обеспечения решения конкретной задачи обработки данных.

Процедура выполняется на сервере и результаты её выполнения передаются клиентной программе.

С помощью процедур уменьшается поток передачи информации от сервера клиенту.

project ( Проект ) Связанная совокупность хранимой информации и методов её обработки.

Проект используется с целью обеспечения совместного хранения всей информации о разработанной системе.

public synonym ( Общий синоним ) Синоним для объекта базы данных, определенного администратором базы данных. Определяется для того, чтобы все пользователи базы данных могли иметь доступ к конкретному объекту.

publish-and-subscribe replication ( Изданный-и-Присоединённый ответ ) ( кадр только для чтения ) Возможность, которая гарантирует, что никакие действия других пользователей не повлияют на информацию, находящуюся в процессе обработки.

Отмена кадра только на чтения осуществляется изданием директивы COMMIT raw ( Сырое ) Специфический тип данных, используемый в базе данных, указывающий что в данной колонке могут быть любые данные, о которых база не делает никаких предположений о типе хранимой информации read-only snapshot ( Кадр только для чтения ) Точная копия главной таблицы.

Возможно создавать неограниченное число кадров только для чтения.

Только при обновлении в кадр только для чтения попадает новая информация.

relational database ( Реляционная база данных ) База данных, составленная из таблиц взаимосвязанной информации.

Данные могут быть реорганизованы и представляться различными способами. Основные принципы реляционных баз данных Простая структура хранения информации -таблицы

• Сложная, развитая система обработки информации remote database ( Удаленная база данных ) База данных, являющаяся доступной через сетевое соединение..

replica ( Точная копия ) Копия главной таблицы. В реплике не отображаются данные, которые изменились после создания реплики.

Реплика используется с целью обеспечения целостности данных при работе различных пользователей над одними и теми же данными.

replication ( Репродукция ) Специфическое действие базы данных, которое гарантирует, что модификация данных любым пользователем будет произведена без разрушения информации.

replication master site ( копия владеющая местом ) Установленные главные копии информации, подлежащей модификации.

Репликационное главное место требуются для кадров, в которых производится изменение информации.

role ( Роль ) Поименованная группа связанных привилегий. Роль используется для установки полномочий пользоватею или других ролей.

–  –  –

row ( Строка ) Одиночная запись в базе данных. Строка таблицы.

select ( Выбор ) Выбор строки данных из одной или нескольких таблиц.

sequence ( Последовательность ) Создаёт последовательный список уникальных чисел. Не гарантируется непрерывность.

server ( Станция ) Предназначен для распределённой обработки информации. Клиент посылает запрос на сервер, а сервер производит выполнение работы в соответствии с запросом и передаёт ответ клиенту.

Сервер обслуживает совокупность клиентов. При этом в качестве клиента может выступать другой сервер.

Серверы и клиенты могут работать на различных компьютерах сети. В многозадачных операционных системах сервер и клиент может находится на одном и том-же компьютере.

Такое деление обработки информации и называется архитектурой Client/Server.

Архитектура клиент-сервер не означает использование в качестве сервера - сервера SQL.

Сервер может размещаться как на выделенном компьютере так и на рабочей станции.

Сервер может обеспечивать связь с другими серверами для обеспечения перенаправления запроса на выборку информации. Подобная обработка называется распределённой обработкой информацией.

service name ( Сервисное имя ) Имя, используемое, чтобы идентифицировать SQL*NET процесс Файл описания SQL*Net содержит соответствие по сервисному имени всех параметров сетевой коммуникации.

shut down ( закрытие ) Процесс остановки текущей базы данных.

snapshot ( Кадр, быстрый выстрел ) Локальная копия удаленной главной таблицы. Кадры могут также быть updatable (доступные для изменения) или доступные только для чтения. Кадр только для чтения может регенерироваться периодически.

snapshot refresh ( Регенерация кадра ) Процесс отражения новой информации в кадре. Информация в кадре зафиксирована.

Любые изменения производимые другими пользователями в текущем кадре не отображаются.

Для отображения новой информации и предназначена регенерация кадра.

SQL ( Structured Query Language) ( Структурированный Язык Запросов) ) Язык манипулирований для реляционных баз данных.

Всемирно принятый стандарт для реляционных систем.

ANSI X3.135-1992 “Database Langiage SQL” ISO/IEC 9075:1992 “Database Langiage SQL” Язык SQL является непроцедурным языком системы управления реляционной базой данных, который может обрабатывать записи группами и обеспечивает автоматический поиск нужных данных.

Непроцедурный язык - язык у которого отсуствует возможность управления последовательностью действий.

Язык SQL дает возможность указывать, какие данные необходимо получить или изменить, не заботясь о том, как найти эти данные.

Язык PL/SQL, в свою очередь, является процедурным языком, способным управлять ходом вычислений.

В языке PL/SQL есть условные операторы, циклы, средства для работы с курсорами ORACLE и обработки особых ситуаций.

SQL*DBA Utility ( SQL * DBA Вспомогательные программы ( Утилита) ) Утилиты позволяют управлять Oracle7 Server в упрощённом для DBA режиме SQL*Loader Utility ( SQL * Утилиты Загрузчика ) Применяются для загрузки данных, обычно ASCII файлы данных из файлов операционной системы в Лист 9 из 126 Владимир Новик webmaster@deltacom.co.il Справочник. SQL,PL/SQL,SQL*Plus Интернет-издание www.deltacom.co.il/rus таблицы базы данных.

SQL*Net ( SQL * Сеть ) Вспомогательные программы Oracle предназначенныe для организации обмена данных через сеть.

SQL*Net поддерживает распределенную обработку и хранение информации через различные виды серверов.

SQL*Plus ( SQL * Плюс ) Основанный на SQL язык, обеспечивающий конфигурирование системы и работу с сервером в командном режиме.

Иногда используется как инструмент для работы конечного пользователя.

При работе администратора используется как средство автоматизации его работы.

starter database ( База данных стартеров ) Заданная по умолчанию база данных, запускаемая автоматически при загрузке сервера stored function ( Сохраненная функция ) Набор утверждений PL/SQL сохранённых на сервере под единым именем. Вызов процедуры осуществляется по её имени SPX/IPX - Sequenced Packed Exchange / Internet Packet Exchange Упорядоченный Обмен Пакетами / Межсетевой Обмен Пакетами - протокол передачи информации локальных одноранговых сетях и сетях с выделенным сервером.

symmetric replication ( симметричные изменения ) Поддержка многократных копий данных в различных местах распределенной системы.

synonym ( Синоним ) Псевдоним для таблицы, представления, последовательности, или модуля программы.

Используется для ссылки на объект по другому имени. Применяется так же для назначения прав доступа к объекту.

system change number (SCN) ( Системный номер выбора ) Приоритетность выполнения транзакции. Данная опция позволяет назначать порядок выполнения транзакции в распределённых системах.

По умолчанию все транзакции имеют одинаковый уровень. Однако при издании директив, можно устанавливать приоритет команды с помощью ключа FORCE table ( Таблица ) Базисный модуль хранения информации в реляционных системах управления базой данных. Таблица состоит из одного или нескольких информационных модулей (строк), каждая из которых содержит одинаковые значения (столбцы).

table security ( Защита таблицы ) Способность ограничивать доступ к информации через предопределенный набор строк и столбцов таблицы.

text editor ( Текстовый редактор ) Программа, выполненная операционной системой компьютера, используемой, чтобы создавать и редактировать текстовые файлы.

trigger ( Вызовите ) Сохраненная процедура, которая автоматически выполняется при изменении данных в таблице (утверждения INSERT, UPDATE, или DELETE ) Transparent Network Substrate (TNS) -( прозрачная сеть обмена ) Программное обеспечение, устанавливающее технологию одиночной работы в сетях промышленного стандарта. Под одиночной работой понимается система прямого взаимодействия 2-х программ, установленных на различных узлах сети.

Ttansaction (Дело, Сделка) Совокупность действий с базой данных, которые логически необходимо рассматривать совместно с целью поддержки целостности базы данных.

–  –  –

TCP/IP - Transmission Control Protocol / Internet Protocol Протокол Управления Передачи / Межсетевой Протокол - Установленный алгоритм взаимодействия компьютеров в сетях промышленного стандарта для распределённых сетей и сетей с Dial-Up соединением компьютеров.

two-phase commit (Утвердить с двумя фазами ) Метод, используемый распределенной системой управления базой данных для обеспечения гарантии проведения транзакции.

updatable snapshot ( допустимый для изменения кадр ) Локальная копия удаленной главной таблицы для данных, которые могут изменяться user ( Пользователь ) Любой человек или группа людей с определёнными правами обращения к базе данных.

user account ( Счет пользователя ) Информация о пользователе, включая: имя пользователя, пароль, и роль. Счет пользователя используется, чтобы предоставить ему привилегии доступа к объектам.

user name ( Имя пользователя ) Имя, под которым пользователь известен серверу. Каждое имя пользователя связано с паролем и должно быть введено, чтобы соединиться с базой данных.

user password ( Пароль пользователя ) Секретное слово или фраза ( 30 символов, пробелы и запятые запрещены) связанные с именем пользователя. Пароль используется для защиты данных и должен быть известен только владельцу.

view ( Представление, вид) ) Настроенное представление данных из одного или нескольких таблиц. Представление есть виртуальная таблица не существующая реально но с которой можно обращаться как с обычной таблицей. В представлении объединены средства выборки данных и обработки информации.

В некоторой литературе при описании представления он описывается как курсор, Это не совсем верно, поскольку под курсором понимается логический вид представления в программном блоке PL/SQL.

System Identification ( SID ) ( Системный указатель ) Имя, присвоенное серверу с целью обеспечения нахождения сервера в таблице связи задач. По указанному имени система определяет к какой именно задаче необходимо перенаправить запрос системы.

В Windows-95/ Windows-NT SID указывется в регистре системы. Для редактирования регистра системы используется системная программа REGEDIT. Для ORACLE по умолчанию устанавливается имя ORCL National Language Support (NLS),-( поддержка национальных языков ) Специальная функция, установленная в серверах для обеспечения хранения информации на национальных языках и обеспечения перекодирования информации при передаче информации на клиентные компьютеры, имеющие различные операционные системы.

–  –  –

Обзор Язык SQL является непроцедурным языком работы с базой данных. При этом это означает что пользователь может только выполнить каждую команду отдельно и нельзя одновременно задать 2 и более оператора в командной строке.

Язык PL/SQL – процедурное расширение языка, позволяющее описать алгоритмические действия с данными.

Основные понятия Команда - Указываемое Вами действие, которое должен выполнить SQL*Plus или RDBMS ORACLE.

Блок - Группа команд SQL и PL/SQL, логически связанные между собой по логике алгоритма.

Таблица - Основная единица хранения информации в RDBMS ORACLE.

Запрос - Оператор SELECT, предназначенный для извлечения данных из одной или из нескольких таблиц.

Результаты запроса - Данные, извлеченные из базы данных при выполнении запроса.

–  –  –

Отчет - Результаты запроса, отформатированные Вами с помощью команд SQL*Plus.

Таблицы, столбцы и строки Данные хранятся в БД в виде таблиц, состоящих из столбцов и строк. В таблице с одним столбцом можно хранить одномерный список. Таблица с несколькими столбцами хранит информацию, для которой имеет значение сочетание строк и столбцов.

Каждый столбец представляет собой один атрибут строки. Каждая строка таблицы содержит одну запись и однозначно идентифицируется значением псевдостолбца ROWID. Один или несколько столбцов таблицы могут быть первичными, внешними или уникальными ключами. На таблицы и столбцы ссылаются, используя их имена (например, emp.sal).

Транзакции (Неделимая последовательность) Транзакцией в SQL называется логически неделимая последовательность операторов, рассматриваемая как единое целое.

Результаты выполнения операторов, входящих в транзакцию, могут быть либо сохранены в БД при помощи оператора COMMIT, либо полностью аннулированы оператором RKLLBACK (или ROLLBACK до точки сохранения).

Транзакция начинается с 1-го выполняемого оператора, либо с 1-го оператора после COMMIT или ROLLBACK. Транзакция заканчивается при выполнении операторов COMMIT или ROLLBACK.

Чтобы оградить данные от модифицирования другими пользователями, в начале транзакции следует выполнить оператор SET TRANSACTION READ ONLY. При этом не допускается и изменение данным самим пользователем, издавшим директиву.

Форма описания синтаксиса Синтаксис - это порядок описания некоторых действий выраженный условными словами или символами.

При описании выражений любого языка программирования требуется описать как выражения соединены в единое целое.

(НФБ - нормальная форма Бэкуса.) Обязательные элементы заключены в фигурные скобки {}. Вы ДОЛЖНЫ вводить один из разделенных вертикальной чертой элементов.

Необязательные элементы заключены в квадратные скобки []. Вы можете ввести один элемент из списка элементов, разделенных вертикальной чертой. Три точки после элемента означают, что предыдущий элемент может быть введен более одного раза.

Фигурные, квадратные скобки и вертикальные черточки вводить НЕ НАДО.

Списки параметров заключены в круглые скобки. Элементы списка параметров разделяются запятыми.

Слова, написанные ПРОПИСНЫМИ БУКВАМИ обозначают ключевые слова.

Слова, написанные строчными буквами, обозначают имена и выражения, которые могут быть различными.

Весь синтаксис описан с использованием данных правил.

Под синтаксисом понимается порядок и правила описания использования ключевых слов

–  –  –

Идентификация пользователя Пользователь, имеющий доступ к базе данных, идентифицируется в ней по имени и паролю.

Пользователь может владеть таблицами, представлениями данных и последовательностями. Также пользователю могут быть пожалованы права SELECT, INSERT, DELETE и UPDATE на аналогичные объекты других пользователей. Новый пользователь создается при помощи оператора GRANT, выполняемого польз., имеющим права DBA.

Ввод и выполнение команд:

Курсор на экране вашего дисплея (как правило курсор выглядит либо как подчеркивание, либо как светящийся прямоугольник, либо как вертикальная мигающая черта) находится в конце строки приглашения.

Курсор указывает на место, в котором появится следующий введенный Вами символ.

Команды можно вводить как строчными, так и прописными буквами.

При вводе команд SQL*Plus, SQL или PL/SQL вводите между словами хотя бы один пробел (или символ табуляции, а можно и [Ввод]).

Лишние пробелы, табуляция и переходы на новые строки можно использовать для облегчения последующего чтения команд.

В ответ на приглашение можно вводить :

• команды языка SQL, предназначенные для работы с информацией в БД;

• блоки команд PL/SQL, предназначенные для работы с информацией в БД;

• процедуры, функции и пакеты для обеспечения хранения порядка некоторых действий на сервере и вызов этих десйствий с помощью одного оператора.

• хранимые процедуры выступают так-же как источник данных для клиентных приложений.

• команды SQL*Plus, предназначенные для форматирования результатов запроса, или для установки параметров, редактирования и сохранения команд SQL и PL/SQL.

Команды SQL, PL/SQL и SQL*Plus следует вводить в ответ на приглашение SQL SQL*Plus сохраняет введенные Вами команды SQL и блоки PL/SQL в своем буфере (т.н. буфере SQL).

Вы можете, если хотите, создать дополнительные буферы для хранения команд.

Команды SQL нужно заканчивать:

• символом ; (точка с запятой) в конце команды

• символом / (наклонная черта) на отдельной строке

• пустой строкой.

Точка с запятой (;) вызовет выполнение команды. В конце последней строки введите ;, затем нажмите [Enter] и команда выполнится. Если Вы нажмете [Enter]не введя предварительно ;, то SQL*Plus откроет новую строку и выведет на экран ее номер.

Косая черта (/), стоящая на отдельной строке, также вызывает выполнение команды (последней, которая находится в буфере SQL ). После последней строки команды нажмите [Enter], затем на открывшейся строке введите / и снова нажмите [Enter].

Терминатор косая черта имеет более сильное действие, чем терминатор точка с запятой. Поэтому при редактировании буфера SQL c помощью текстового редактора следите за отсуствием двух терминаторов одновременно.

Ввод в буфер SQL нескольких команд SQL не оформленных в непоименнованный блок не разрешается Команды SQL*Plus служат для управлениея командами SQL и PL/SQL, а также для форматирования и печати результатов запросов.

Для экономии времени многие команды SQL*Plus можно сокращать до одной или нескольких букв.

Фактически данные команды есть средство настройки сервера для работы.

–  –  –

Из SQL*Plus Вы можете записывать команды в командный файл.

Кроме этого, Вы можете записывать в файл результаты отчетов (в т.н. спул-файлы).

Физическая структура командных и спул-файлов зависит от операционной системы вашего компьютера.

Модифицировать их можно при помощи соответствующих команд операционной системы.

Выполнение команд операционной системы Из SQL*Plus можно выполнять команды операционной системы. Это может понадобиться, например, чтобы посмотреть содержимое файла.

Чтобы выполнить команду ОС наберите HOST и собственно команду.

Например, чтобы выполнить команду ОС DIRECTORY *.SQL следует ввести:

SQL HOST DIR *.SQL Программа SQL*PLUS Программа является клиентной частью системы Клиент/Сервер и обеспечивает обращение к серверу на низком уровне командного интерфейса. Альтернативным вариантом является программа SQL*DBA, с помощью которой возможно обращение в серверу ORACLE на низком уровне командного интерфейса.

В SQL*Plus можно работать на языке SQL и на его расширенном процедурном варианте PL/SQL. С помощью языка SQL можно хранить и извлекать данные из реляционной базы данных ORACLE. SQL*Plus позволяет выполнять команды языка SQL, блоки команд на языке PL/SQL и многое другое.

В частности, работая в SQL*Plus Вы можете:

• вводить, редактировать, сохранять, читать и выполнять команды SQL и блоки PL/SQL;

• использовать в вычислениях результаты выполнения запросов, а также форматировать и сохранять эти результаты;

• увидеть описание структуры любой таблицы;

• обрабатывать информацию в других БД и копировать данные из одной БД в другую;

• обмениваться сообщениями с пользователями.

–  –  –

Альтернативное имя таблицы можно использовать при соединении таблицы с самой собой в соотносящемся запросе.

При создании курсора альтернативное имя создается другим способом - заданием после имени курсора перечисления новых имён полей ( указывать в скобках через запятую ) При использовании таблиц с одинаковыми именами полей требуется указание имени таблицы перед именем колонки таблицы.

SQLSELECT wkr.ename, wkr.sal, sup.enam e, sup.sal FROM emp wkr, emp sup WHERE wkr.mgr = sup.empno AND wkr.sal sup.sal;

–  –  –

Текстовый оператор || выполняет конкатенацию (объединение) данных типа CHAR (строк символов).

Пробелы учитываются, только если они стоят внутри одинарных кавычек (‘ ‘).

–  –  –

Все вышеперечисленные операторы вырабатывают значения TRUE (истина), FALSE (ложь) или NULL (пустое значение).

Условия Условием в языке SQL называется сочетание одного или нескольких выражений и логических операторов, вырабатывающих значение TRUE (истина) или FALSE (ложь).

Условия могут использоваться:

• в предложении WHERE операторов SELECT, INSERT, UPDATE, и DELETE, например:

• SELECT ename, sal FROM emp WHERE job = ‘ANALYST’...

• в предложениях CONNECT BY, START WITH, и HAVING оператора SELECT, например:

• SELECT ename, mgr FROM emp

• CONNECT BY PRIOR empno = mgr START WITH ename = ‘KING’;

В языке PL/SQL условия употребляются в операторах IF и WHILE.

Ограничение FOREIGN KEY/REFERENCES:

• не дает выполниться операторам INSERT и UPDATE, если соответствующих значений нет в таблице, содержащей первичный ключ.

• не позволяет выполниться оператору DELETE, если его результат приводит к нарушению ограничения REFERENCES.

• должно ссылаться на столбец первичной таблицы (т.е. содержащей первичный ключ), определенный как PRIMARY KEY или UNIQUE.

• если не указан столбец (столбцы), то ограничение будет использовать тот столбец первичной ключа, который определен как PRIMARY KEY.

• может ссылаться только на таблицу. На представление данных или кластер ссылаться нельзя.

• требует, чтобы таблица, хранящая первичный ключ, принадлежала Вам и чтобы Вы имели к доступ с правом REFERENCE либо к таблице, либо только к столбцам, на которые Вы ссылаетесь при описании ограничения.

• никак не ограничивает использование тех же таблиц в описании других ограничений.

• требует совпадения типов данных в столбце (столбцах) внешнего ключа и в столбце (столбцах), к которым описывается ограничение.

• может ссылаться на ту же таблицу, что и в операторе CREATE TABLE.

• в одном ограничении не может ссылаться на столбец более одного раза.

DBA( Администратор базы данных ) Пользователь с именем SYSTEM является DBA (АБД—администратором БД). Он владеет таблицей PRODUCT_USER_PROFILE и имеет все права доступа к ней.

Все остальные пользователи могут иметь на эту таблицу только право SELECT (только выборка).

Командный файл PUPBLD, при выполнении, предоставляет всем пользователям (PUBLIC) право SELECT на таблицу PRODUCT_USER_PROFILE.

Если DBA захочет запретить какому-то пользователю выполнять определенную команду SQL или SQL*Plus, то он может (если он пользователь DBA) внести в таблицу PRODUCT_USER_PROFILE запись со следующей информацией:

столбец USERID = имя пользователя ATTRIBUTE = команда CHAR_VALUE = слово DISABLED столбцы SCOPE, NUMERIC_VALUE и DATE_VALUE должны быть пустыми.

Чтобы снова разрешить пользователю выполнять запрещенную команду, DBA должен стереть строку, описывающую запрет.

–  –  –

Столбцы в таблице PRODUCT_USER_PROFILE имеют след. назначение:

PRODUCT содержит название продукта (в нашем случае SQL*Plus). Шаблоны (% и _) использовать нельзя.

USERID содержит имя_пользователя (написанное прописными буквами), к которому относится запрет.

Чтобы распространить область действия запрета на более чем одного пользователя, можно использовать шаблонный символ % или делать несколько записей.

ATTRIBUTE содержит запрещаемую для выполнения команду (прописными буквами). Нельзя использовать шаблоны.

SCOPEне имеет значения для SQL*Plus. Рекомендуется заносить NULL.

NUMERIC_VALUE не имеет значения для SQL*Plus. Рекомендуется заносить NULL.

CHAR_VALUE должно содержать слово “DISABLED”. Шаблоны использовать нельзя.

DATE_VALUE не имеет значения для SQL*Plus. Рекомендуется заносить NULL.

–  –  –

Ключи Первичным ключом (PRIMARY KEY) называется один или несколько столбцов, предназначенных для однозначной идентификации строк в таблице. Значения первичных ключей не должно изменяться и не должно быть пустым.

Внешним ключом (FOREIGN KEY) называется столбец, содержащий значения первичного ключа другой таблицы. Внешний ключ может принимать пустое значение. К примеру, если столбец DEPTNO является первичным ключом в таблице DEPT, то столбец DEPTNO в таблице EMP будет внешним ключом, т.к. он содержит ссылки на DEPTNO таблицы EMP.

Уникальный ключ (UNIQUE KEY) во всем аналогичен первичному, за исключением того, что он предназначается для обеспечения уникальности каждой записи, например, номера телефона или номера водительских прав.

Первичный ключ может и не содержать никакой полезной информации, а служить только для идентификации строк. В таблице может быть несколько первичных ключей.

Обработка ошибок Определенные заранее (внутренние) или определенные пользователем условия, возникновение которых считается ошибкой, называются особыми состояниями. В PL/SQL можно определить действия, выполняемые в случае возникновения ошибки.

Особые состояния можно описывать в секции DECLARE, а затем проверять их наличие в теле блока.

Если особая ситуация существует, то можно выполнить оператор RAISE, который остановит нормальное выполнение блока и передаст управление обработчику особых ситуаций, описанному в секции EXCEPTION данного блока.

Функции диагностирования ошибок SQLCODE Возвращает код внутреннего состояния, вызвавшего передачу управления обработчику особых состояний.

Если состояние, вызвавшее обработчик, не является внутренним для ORACLE, а описано пользователем в текущем (или объемлющем) блоке, то SQLCODE возвращает +1. Вне обработчика особых состояний SQLCODE возвращает 0.

Функция SQLCODE позволяет распознавать особые ситуации в обработчике состояний OTHERS.

SQLERRM(код_ошибки) возвращает сообщение, соответствующее заданному коду ошибки. Чтобы получить сообщение, соответствующее текущему коду ошибки в SQLCODE, нужно опустить код ошибки.

Вне обработчика особых ситуаций SQLERRM выдает сообщение “normal, successful completion” (успешное завершение).

Чтобы использовать SQLCODE или SQLERRM в операторе SQL, нужно присвоить их значение переменной, например:

sql_code_num := SQLCODE Выражения Выражениями в языке SQL называются совокупность литералов, переменных и констант, соединенных операторами, выполняющими над ними какие-либо действия. Значение, получающееся в результате вычисления выражения, будет иметь тот же тип данных, что и элементы выражения.

Выражения можно использовать:

• в списке оператора SELECT

• в условиях после предложений WHERE и HAVING

• в предложениях CONNECT BY, START WITH и ORDER BY

• в предложении VALUE оператора INSERT

• в предложении SET оператора UPDATE Порядок вычисления (старшинство операций)

–  –  –

• 1: эл-ты, заключенные в скобки • 2: возведение в степень • 3: одноместные операторы • 4: умножение и деление • 5: сложение, вычитание и конкатенация

–  –  –

Неявные преобразования PL/SQL в некоторых случаях преобразует тип данных переменной в требуемый путем неявного вызова функций TO_NUMBER, TO_CHAR или TO_DATE.

Например:

Присваивания (CHAR в NUMBER или DATE, NUMBER или DATE в CHAR) переменная := выражение INSERT INTO таблица VALUES...

UPDATE таблица SET столбец = выражение...

SELECT выражение INTO переменная FROM...

Вычисление выражений (CHAR в NUMBER, CHAR в DATE) Простые выражения : bal + ‘44’ Булевы выражения : bonus salary / ‘20’ Функции и вызовы процедур : MOD(counter, ‘3’) Условия в предложении WHERE: WHERE hiredate = ‘15-MAR-89’ Для преобразования из CHAR в DATE требуется строка в виде ДД-МЕС-ГГ.

–  –  –

Связи Связь с базой данных делает возможной работу с данными в удаленной базой данных.

Чтобы пользоваться связью,нужно знать имя пользователя в удаленной базе. При этом между системами (местной и удаленной) должно быть установлено соединение и SQL*Net должен быть активным и на местной, и на удаленной.

Для связи с БД, отличающимися от ORACLE, нужен активный SQL*Connect. При ссылке на таблицу, находящуюся в удаленной БД, в предложении FROM запроса или подзапроса необходимо указать имя связи. Например, запрос SELECT * FROM powers.dept@PACIFIC через связь с именем PACIFIC извлекает данные из таблицы DEPT, принадлежащей пользователю POWERS.

Связь с БД используется в распределенных запросах. Кол-во связей в простом операторе как правило ограничено четырьмя. Через связь нельзя извлекать данные типа LONG.

Литералы Литералами в языке SQL называются числа или строки символов.

Числовые литеры:

могут быть целыми числами (типа 3, 1444, 23) или вещественными (типа 3.14159,.25, -12, 2.e, 7E). В списках числовые литералы отделяются друг от друга запятыми. Для облегчения читаемости неплохо после каждой запятой добавлять пробел.

Строковые литеры:

один или несколько символов, заключенные в апострофы (‘одинарные кавычки’). Апостроф в самом литерале записывается в виде двух смежных апострофов. Например, ‘You’’re a strong, happy person, aren’’t you?’. Заметьте, что используется именно два апострофа, а не кавычки (“). В кавычки иногда заключают идентификаторы.

Литеры дат:

строковые литералы в формате дат (‘09-ЯНВ-42’).

Булевы литеры:

предопределенные константы TRUE (истина), FALSE (ложь) и NULL (пусто).

Логические операторы.

Логические операторы в SQL позволяют обрабатывать результаты вычисления условий.

Пустые значения Пустое значение означает, что данные не известны, отсутствуют или бессмысленны в данном контексте. Пустое значение могут иметь столбцы с любым типом данных, если они не были определены как NOT NULL.

Пустые значения применяются в случаях, когда конкретные значения неизвестны или бессмысленны.

Пустое значение и значение=ноль представляют собой совершенно разные вещи. Все выражения, содержащие хотя бы одно пустое значение, равны также пустому значению.

–  –  –

Для оперативной подстановки непустых значений вместо пустых следует использовать функцию NVL.

Например, NVL(comm, 0) вернет значение comm, если оно не пустое, или 0, если оно пустое.

При проверке на пустое значение надо использовать только операторы IS или IS NOT. Любой другой оператор при сравнении с пустым значением всегда вернет пустое значение.

Групповые функции при вычислениях игнорируют пустые значения.

–  –  –

Оператор избыточного соединения (+) вызывает извлечение из соединенных таблиц не только строк, удовлетворяющих условию соединения, но еще и строк, не отвечающих условию, из таблицы.столбца, помеченных оператором (+).

Избыточное соединение в операторе SELECT можно производить только с одной таблицей.

–  –  –

WHERE JOB=’&1’ /*текстовые данные*/ AND SAL=&2; /*число*/ Теперь, при выполнении командного файла, в команде START нужно вводить значения для этих параметров. Значения следует писать после имени самого запускаемого файла. 1-значение получит параметр &1, 2-е—параметр &2 и т.д. Например, приведенная ниже команда запускает командный файл MYFILE и присваивает параметру &1 знач. ‘СЕКРЕТАРЬ’, а пар. &2 -- 7900.

SQL START MYFILE CLERK 7900 Каждый параметр, получивший значение из аргументов команды START, автоматически описывается командой SQL*Plus DEFINE.

–  –  –

QUIT (покинуть) {QUIT | EXIT} [SUCCESS | FAILURE | WARNING | n | переменная] Команда QUIT подтверждает все неподтвержденные изменения в БД и завершает работу SQL*Plus, возвращая управление операционной системе.

QUIT или EXIT полностью взаимозаменяемы нормальное завершение SUCCESS завершение с возвратом соотв. кода ошибки FAILURE завершение с возвратом кода, означающего предупреждение.

WARNING Команда QUIT без каких либо параметров вызывает такое же завершение, как и QUIT SUCCESS n n = возвращаемый при завершении код (целое число) переменная определенная польз. или системная переменная (например, SQL.SQLCODE). Команда QUIT переменная заканчивает работу, возвращая значение переменной в качестве кода завершения.

Благодаря команде QUIT можно использовать коды возврата, принятые в конкретной ОС и, следовательно, распознавать неожиданные ситуации при выполнении командных файлов SQL*Plus в пакетном режиме. Способ распознавания возвращаемых кодов зависит от ОС. Слова SUCCESS, WARNING и FAILURE представляют значения, свойственные ОС, с которой работает ваша ЭВМ. В некоторых системах коды WARNING и FAILURE однозначны. Чтобы выполнить QUIT по возникновению какого-то условия, используйте оператор WHENEVER SQLERROR.

Пример: В данном примере программа возвращает код результата последнего выполненного оператора в блоке.

SQL QUIT SQL.SQLCODE

Способ получения возвращенного кода зависит от ОС.

–  –  –

• соединения.

Преподносить данные с разных точек зрения; Столбцам представления. можно присваивать любые имена, не изменяя при этом имена столбцов базовой таблицы. Индекс, в свою очередь, обеспечивает быстрый доступ к строкам таблицы.

Если команда SQL обрабатывает меньше 25% строк, то использование индекса существенно увеличивает скорость выполнения команды.

Уникальный индекс гарантирует, что в таблице не будет строк с совпадающими значениями некоторого столбца (являющегося первичным ключом).

Запрос(требование извлечь данные) Запросом называется изложенное на языке SQL требование извлечь данные, хранящиеся в одной или в нескольких таблицах. Подзапросом называется запрос, находящийся в теле другого оператора.

Запросы используются:

• Для определения набора строк обрабатываемой таблицы в операторах COPY, INSERT и CREATE TABLE.

• Для получения значений при сравнении в предложениях WHERE, HAVING и START WITH, употребленных в операторах SELECT, UPDATE или DELETE.

• SELECT...WHERE выражение оператор запрос...HAVING выражение оператор запрос...START WITH выражение оператор запрос UPDATE...SET(столбец, столбец,..) оператор запрос...WHERE выражение оператор запрос DELETE...WHERE выражение оператор запрос INSERT...запрос Удаленные базы данных RDBMS ORACLE используется на нескольких разных КОМПЬЮТЕРАХ, объединенных в сеть.

Использование в сети называется распределённым хранением и обработкой информации Эти КОМПЬЮТЕРЫ могут находиться на любом расстоянии друг от друга. Например, два КОМПЬЮТЕРА могут стоять в соседних комнатах, а третья находится в другом городе.

Удаленной базой данных называется любая БД, находящаяся на другом или на вашем копьютере, но не являющаяся для Вас рабочей. Работать с информацией в удаленной БД можно, если на ней есть SQL*Net и совместимый с местной БД сетевой драйвер. Получить доступ к удаленной БД можно прямо из SQL*Plus (с помощью команды CONNECT), или при запуске SQL*Plus Доступ к удаленной БД из SQL*Plus Чтобы подсоединиться к удаленной БД из SQL*Plus надо в оператор CONNECT включить описание этой БД в форме, пригодной для SQL*Net.

Например:

CONNECT SCOTT@описание_БД CONNECT SCOTT/TIGER@описание_БД

После подсоединения эта база станет вашей рабочей БД до тех пор, пока Вы не сделаете одно из трех:

1. соединитесь с другой БД

2. отсоединитесь от данной БД (оператор DISCONNECT)

3. закончите работу в SQL*Plus Форма описания БД в операторе CONNECT зависит от эксплуатируемого на вашем компьютере протокола SQL*Net.

Соединение с удаленной БД при запуске SQL*PLus Чтобы подсоединиться к удаленной БД при запуске SQL*Plus, надо включить в команду SQLPLUS описание этой БД.

SQLPLUS SCOTT@описание_БД SQLPLUS SCOTT/TIGER@описание_БД

–  –  –

случае SQL*Plus после запуска соединит Вас с указанной БД и она будет вашей рабочей до тех пор, пока

Вы не сделаете одно из трех:

1. соединитесь с другой БД

2. отсоединитесь от данной БД (оператор DISCONNECT)

3. закончите работу в SQL*Plus

–  –  –

*Для 1-й цели* GRANT право_в_БД, право_в_БД,...

TO имя_пользователя, имя_пользователя,...

IDENTIFIED BY пароль, пароль,...

Такая форма оператора GRANT позволяет предоставить пользователю (пользователям) возможность получать доступ к БД. При помощи данного оператора любой польз. может изменить свой пароль. Для других операций при помощи GRANT нужно иметь права DBA.

право_в_БД предоставляемое право: CONNECT, RESOURCE и/или DBA.

пароль пароль для соотв. имени польз. Если GRANT используется для предоставления дополнительных прав уже существующему польз., то пароль можно опустить. Если используется несколько имен польз. и паролей то 1-й пароль должен относиться к 1-му имени, 2-й—ко 2-му и т.д.

Предоставление права CONNECT регистрирует в БД новое имя польз. и позволяет этому пользователю подсоединяться к БД, манипулировать с объектами на которые он имеет соотв. права и создавать представления данных, синонимы и связи с удаленными БД.

Право RESOURCE разрешает пользователю создавать в БД различные объекты, включая таблицы, индексы, кластеры и последовательности.

Право DBA дает пользователю возможность обойтись без многих прав, которые обычно требуются для использования объектов БД. Пользователи с правом DBA также могут выполнять различные административные действия, типа CREATE TABLESPACE (создать область хранения) и CREATE ROLLBACK SEGMENT (создать сегмент отката).

*Для 2-й цели* GRANT RESOURCE квота K | M ON область_хранения TO PUBLIC | польз., польз.,...

Такая форма оператора GRANT делает область хранения доступной для пользователей. Можно также указать предельное кол-во пространства, которое может использовать конкретный пользователь.

RESOURCE дает пользователям право создавать объекты в указанной области хранения квота K или M кол-во байтов в области хранения, которое может использовать пользователь. Если его ограничивать не нужно, то указание квоты следует опустить.

Чтобы отобрать право RESOURCE, укажите квоту = 0. K означает, что квота задается в килобайтах

–  –  –

(квота x 1024), M -- -- что в мегабайтах (квота x 1 048 576).

TO PUBLIC или польз., польз.,...

дает право RESOURCE всем (PUBLIC) или только перечисленным пользователям.

*Для 3-й цели* GRANT право_на_объект, право_на_объект,... | ALL ON польз.объект TO PUBLIC | польз, польз,...

WITH GRANT OPTION

Такой оператор GRANT делает возможным доступ к объектам БД типа таблиц, представлений данных и последовательностей). Чтобы выполнить такой оператор, Вы должны либо быть владельцем указанного объекта, либо иметь на него право GRANT OPTION, либо иметь право DBA.

право_на_объект, право_на_объект,...

для таблиц, ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE для предст. Данных, DELETE, INSERT, SELECT, UPDATE для последовательностей ALTER или SELECT Право UPDATE позволяет ограничить возможность обновления определенных столбцов. Синтаксис в этом случае следующий:

GRANT UPDATE столбец, столбец,...

ALL PRIVILEGES

предоставляет все возможные права на этот объект.

WITH GRANT OPTION

позволяет польз., получившему (получившим) указанные права, предоставлять их другим польз.

REVOKE (отобрать)

Оператор REVOKE может использоваться для достижения одной из 3-х целей:

1. чтобы отобрать у одного или сразу у нескольких пользователей какие-то права на базу данных;

2. чтобы лишить одного или нескольких польз. возможности создавать объекты в указанной области хранения (и, след., предотвратить увеличение объема пространства, занимаемое их объектами);

3. чтобы сделать какие-то таблицы, предст. данных или последовательности недоступными для одного или нескольких пользователей..

*1-й случай*

REVOKE CONNECT, RESOURCE, DBA

FROM польз, польз,...

Такой оператор REVOKE лишает перечисленных пользователей всех прав в базе данных. Перед тем как лишить пользователя права CONNECT рекомендуется предварительно уничтожить все принадлежащие ему объекты. Чтобы выполнить оператор REVOKE,нужно иметь права DBA.

*2-й случай* REVOKE RESOURCE ON область_хранения FROM польз, польз,...

Такой оператор REVOKE лишит указанных пользователей возможности создавать объекты в указанной области хранения и предупредит увеличение занимаемого ими объема.

*3-й случай* REVOKE право_на_объект, право_на_объект,... | ALL ON польз.объект FROM PUBLIC | польз, польз,...

Такой оператор REVOKE лишает перечисленных пользователей прав доступа к таблицам, предст.

данных и последовательностям. Чтобы выполнить этот оператор, Вы должны быть владельцем объектов, либо иметь на таблицу право WITH GRANT OPTION.

Если польз. получил право доступа к таблице от более чем одного человека, то он может пользоваться им до тех пор, пока все давшие ему это право не лишат его такового.

Право_на_объект ;

–  –  –

имя_польз[/пароль] Задает имя и пароль пользователя, с которыми вы хотите подключиться к ORACLE. Если вы опустили username и пароль, SQL*PLUS выдаст подсказку для их ввода. Если вы ввели наклонную черту (/) или просто ввели [Return] в ответ на подсказку для ввода username, SQL*PLUS зарегистрируется, используя значения по умолчанию (см “/” ниже).

Если вы опустили только пароль, SQL*PLUS выдаст подсказку для ввода пароля. Во время ввода пароля после подсказки, SQL*PLUS не выводит его на экран.

Представляет умалчиваемый (ops$) вход в систему. Вы не можете вводить database_specification, если вы используете вход в систему по умолчанию. При входе в систему по умолчанию, SQL*PLUS пытается зарегистрируется, используя имя пользователя OPS$name, где name- это ваше имя( пользователя )в операционной системе.

описание_БД состоит из SQL*NET-строки подключения. Ее синтаксис зависит от вашего SQL*NET протокола. За информацией смотрите соответствующее руководство по SQL*NET или обратитесь к АБД (администратор БД).

SQL*PLUS не выдает подсказки для ввода спецификации БД, но он использует вашу БД по умолчанию, если вы не задали данный параметр.

CONNECT записывает произведенные изменения в базу данных (завершает текущую транзакцию), заканчивает сеанс вашей работы с ORACLE и вновь выполняет регистрацию с указанным именем пользователя.

Примеры: Чтобы зарегистрироваться с именем SCOTT с паролем TIGER к БД по умолчанию к DECnet-узлу “corp”, введите:

SQL CONNECT SCOTT/TIGER@d:corp

Чтобы зарегистрироваться с именем SCOTT с последующим запросом пароля, введите:

SQL CONNECT SCOTT

DISCONNECT (отсоединиться) Команда DISCONNECT Вносит текущие изменения в базу данных и заканчивает ваш сеанс работы с ORACLE, но не завершает работы с SQL*PLUS.

Используйте DISCONNECT в командном файле, чтобы закрыть пользователю доступ к БД, когда вы хотите отключить пользователя от ORACLE, но чтобы пользователь не покидал SQL*PLUS. Используйте EXIT или QUIT для отключения от ORACLE и передаче управления операционной системе.

Примеры: Ваш командный файл может начинаться командой CONNECT и заканчиваться командой

DISCONNECT, как показано ниже:

–  –  –

Любой, кто работает с базой данных должен быть зарегистрированным. Для создания пользователя используется директива следующего формата.

CREATE USER my_user IDENTIFIED BY my_password DEFAULT TABLESPACE my_tablespace TEMPORARY TABLESPACE temp_ts;

При создании имени пользователя с табличной областью по умолчанию любой объект будет создаваться с области по умолчанию.

CREATE CLUSTER (создать кластер) CREATE CLUSTER польз.кластер столбец тип_данных, столбец тип_данных,...

PCTUSED целое PCTFREE целое SIZE целое INITRANS целое MAXTRANS целое TABLESPACE область_хранения STORAGE хранение Оператор CREATE CLUSTER создает кластер для одной или нескольких таблиц.

Кластеризация вынуждает базу данных хранить таблицы с одинаковыми кластерными ключами вместе, что сокращает время доступа к ним. Как правило, имеет смысл объединять в кластер таблицы, над которыми часто производится операция соединения.

‘Столбец’ -- это имя или имена столбца (столбцов), которые являются кластерными ключами.

Тип_данных’ не может быть NULL или NOT NULL. Параметр SIZE задает средний размер области, необходимой для хранения всех строк с одинаковыми значениями ключей.

Остальные параметры—PCTUSED, PCTFREE, INITRANS, и MAXTRANS—имеют такое же значение, как и в операторе CREATE TABLE.

CREATE DATABASE (создать базу данных) Данная команда доступна только в SQL*DBA ( Файл ORAWIN95\BIN\SQLDBA.EXE для PERSONAL ORACLE-7 В меню Windows-95 его нет ) CREATE DATABASE база_данных CONTROLFILE REUSE -LOGFILE файл, файл,.

MAXLOGFILES целое DATAFILE файл, файл,...

MAXDATAFILES целое MAXINSTANCES целое

ARCHIVELOG|NOARCHIVELOG

• подразумевается NOARCHIVELOG SHARED | EXCLUSIVE

• подразумевается SHARED При указании REUSE Если в момент выполнения оператора база данных с таким же именем уже существует, то все данные в ней будут уничтожены.

–  –  –

Оператор CREATE DATABASE выполняет начальную подготовку базы данных для ее дальнейшего использования.

База_данных - это имя базы данных. Максимальная длина имени базы -- 8 символов. Если имя не указано, то подразумевается имя, заданное параметром DB_NAME в файле INIT.ORA.

CONTROLFILE REUSE

вынуждает повторно использовать файлы, описанные параметром CONTROL_FILES в файле INIT.ORA. При этом стирается вся информация, находящаяся в них в данный момент. Этот параметр,как правило, не используется при первичном создании базы данных. LOGFILE файл указывает на файлы, используемые для повтора работы. Если параметр опущен, то ORACLE создаст два таких файла. Их имена и размеры зависят от операционной системы.

MAXLOGFILES целое устанавливает максимально возможное число файлов повтора работы. Это число должно находиться в диапазоне от 2 до 256. Увеличить это число можно только создав базу заново. Указание большего числа не повлияет на работу базы.

Файл -описывает файл. Писать следует так:

‘имя_файла’ SIZE размер K | M REUSE.

Целое после SIZE определяет размер файла в байтах; Если после размера стоит K, то в килобайтах (размер 1024 байт); если M, то в мегабайтах (размер x 1 048 576 байт). Если размер не указан, то подразумевается 10М для файлов данных и 500К для файлов повтора работы.

DATAFILE файл определяет один или несколько файлов как файлы для хранения базы данных. Если имена опущены, то ORACLE сам создаст один файл. Его имя зависит от операционной системы.

MAXDATAFILES целое устанавливает максимально возможное число файлов данных, которое может иметь база. Как правило, это число лежит в пределах от 1 до 255. Это число может быть увеличено только путем повторного создания базы. Излишки, вызванные указанием большого числа, не повлияют на работу базы.

MAXINSTANCES целое устанавливает максимальное число инстанций, имеющих возможность одновременно открыть базу.

Диапазон значений -- 1 - 255.

ARCHIVELOG или NOARCHIVELOG определяет начальный режим использования файлов повтора работы. Параметр ARCHIVELOG сделает необходимым архивирование файлов перед их повторным использованием. NOARCHIVELOG сделает архивирование необязательным. Изменить режим использования файлов повтора работы у существующей базы можно при помощи оператора ALTER DATABASE.

SHARED или EXCLUSIVE определяет доступность базы после ее создания. Если использовать слово SHARED, то к базе смогут подключаться несколько инстанций. Если использовать слово EXCLUSIVE, то только одна инстанция сможет получать доступ к базе. Для установки доступности базы при дальнейшей ее эксплуатации используйте команду SQL*DBA STARTUP.

CREATE DB LINK (создать связь с БД) CREATE PUBLIC DATABASE LINK имя_связи CONNECT TO имя_пользователя IDENTIFIED BY пароль USING ‘строка_sql*net’ Оператор CREATE DATABASE LINK открывает связь между местной базой и пользователем в удаленной базе данных. Чтобы извлечь данные из таблицы в удаленной базе, следует после имени таблицы (в предложении FROM оператора SELECT) добавить @имя_связи.

PUBLIC делает связь доступной для всех пользователей, кроме тех, кто имеет частную связь с таким же именем. Если в операторе нет слова PUBLIC, то данная связь будет частной—т.е. доступной только создавшему ее пользователю.

имя_пользователя, пароль имя и пароль существующего пользователя в удаленной базе. Если эти параметры опущены, то

–  –  –

подразумеваются имя и пароль пользователя, выполняющего оператор.

‘строка_sql*net’ описывает доступную через SQL*Net удаленную базу данных.

CREATE INDEX (Создать индекс) Oracle-7 Автоматически использует индексы,Однако только из тех,которые есть в наличии.

Автоматически создаются индексы для главного ключа и для уникальных полей таблицы. Для всех остальных требуется издать данную директиву CREATE UNIQUE INDEX индекс ON таблица (столбец ASC|DESC, столбец ASC|DESC,...) | CLUSTER кластер INITRANS целое MAXTRANS целое TABLESPACE область_хранения STORAGE хранение PCTFREE = 10 | n NOSORT Оператор CREATE INDEX создает индекс к таблице или кластеру. Индексирование сокращает время доступа к данным, обеспечивая прямое обращение к строкам таблицы. Индекс также может быть использован для обеспечения уникальности значений. Индексировать данные можно максимум по 16 столбцам. Можно создавать несколько индексов к разным сочетаниям столбцов, однако следует помнить, что каждый индекс увеличивает время, затрачиваемое на обновление данных.

UNIQUE гарантирует, что в таблице никогда не будет строк с одинаковыми значениями во всех индексируемых столбцах. Ключ не обязателен.

индекс, таблица имя создаваемого индекса и имя таблицы, к столбцам которой создается индекс.

• столбец имя столбца таблицы.

ASC или DESC параметр, используемый для обеспечения совместимости с DB2. Индексы создаются в восходящем порядке (ASC).

кластер имя кластера, к которому создается индекс.

область_хранения имя области хранения, в которой будет храниться индекс.

PCTFREE процент пространства в каждом индексном блоке, оставляемого пустым для дальнейших вставок и обновлений. При указании 0 вставка не допустима NOSORT отключает сортировку строк перед созданием индекса (если строки уже отсортированы в восходящем порядке). Употребление этого параметра может значительно ускорить процесс создания индекса.

Параметр NOSORT не может применяться при создании кластерного индекса.

Параметры INITRANS и MAXTRANS имеют такое же значение, как и в операторе CREATE TABLE.

CREATE ROLLBACK SEGMENT (создать сегмент отката) CREATE PUBLIC ROLLBACK SEGMENT имя_сегмента_отката TABLESPACE область_хранения STORAGE хранение Оператор CREATE ROLLBACK SEGMENT создает один сегмент отката (аннулирования транзакции).

Область хранения, к которой добавляется сегмент, должна быть активной (подключенной).

PUBLIC указывает, что сегмент будет доступен для любой инстанции. Если слово PUBLIC опущено, то сегмент отката будет частным.

–  –  –

имя_сегмента_отката - идентификатор сегмента отката (макс. длина -- 30 символов).

область_хранения -область хранения, в которой создается сегмент. Если область хранения не указана, то будет использована область SYSTEM.

–  –  –

Последовательностью называется объект ORACLE, генерирующий неповторяющиеся целые числа.

Полученные из последовательности числа очень часто используются в качестве значений для первичных ключей. Чтобы пользоваться не принадлежащей Вам последовательности., нужно иметь на нее право выборки (SELECT).

Доступные последовательности перечисленных в представлениях словаря данных

USER_SEQUENCES и ALL_SEQUENCES. При создании последовательности устанавливаются:

Рост - Числа, создаваемые послед., могут либо возрастать постоянно, либо только до определенного предела, либо, по достижении предела, начинать возрастание заново, с начального значения.

Приращение - Послед. может создавать цепочки как увеличивающихся чисел, так и уменьшающихся.

Можно задавать также и приращение значений.

Псевдостолбец последовательность.NEXTVAL содержит новое созданное число, а псевдостолбец последовательность.CURRVAL содержит последнее созданное число.

CREATE SEQUENCE польз.имя_последовательности INCREMENT BY n START WITH n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE CYCLE | NOCYCLE CACHE 20 | n | NOCACHE ORDER | NOORDER Оператор CREATE SEQUENCE создает в базе данных объект, при помощи которого пользователи могут генерировать неповторяющиеся целые числа. Производимые таким образом значения могут использоваться в качестве первичных ключей.

Польз - владелец объекта ‘последовательность’ (подразумевается пользователь, выполняющий оператор CREATE SEQUENCE).

INCREMENT BY n задает приращение для генерируемых чисел. Если n положительно,то значения будут возрастать;

если n отрицательно -- значения будут уменьшаться. Подразумеваемое значение данного параметра = (+1).

START WITH n задает 1-ое генерируемое число. Подразумеваемыми 1-ми числами являются: для восходящих последовательностей MINVALUE, для нисходящих MAXVALUE.

MAXVALUE n | NOMAXVALUE Самое большое число, которое сгенерирует данная последовательность. Подразумеваемое значение = 10e- для восходящих и = 1 для нисходящих последовательностей.

MINVALUE n | NOMINVALUE Наименьшее число, которое сгенерирует данная последовательность. Подразумеваемое значение: 1 для восходящих последовательностей, 10e2-1 для нисходящих.

CYCLE | NOCYCLE если задать параметр CYCLE, то после выдачи MAXVALUE восходящая последовательность снова начнет генерацию с MINVALUE (а нисходящая после MINVALUE начнет с MAXVALUE). Если задать NOCYCLE (что подразумевается), то генерация чисел данной последовательностью прекратится после выдачи соответствует максимальному (или минимального) числа.

CACHE n | NOCACHE параметр CACHE вызывает опережающее размещение генерируемых чисел в памяти, что приводит к увеличению скорости выполнения. Значение n должно быть меньше разности MAXVALUE и MINVALUE.

Подразумеваемым значением для CACHE является 20.

–  –  –

ORDER | NOORDER параметр ORDER гарантирует, что числа будут генерироваться соответственно порядку обращения к последовательности, что очень важно для некоторых приложений. Но,даже, если задать NOORDER (что подразумевается), числа как правило генерируются в правильном порядке.

При использовании последовательности :

! для выбора следующего номера - использовать вызов типа my_seq.NEXTVAL ! для выбора текущего номера -вызов тип my_seq.CURRVAL ! для выбора в переменную PL/SQL вызов типа SELECT my_seq.CURRVAL INTO my_per FROM DUAL

• из последовательности my_seq выбирается новое значение в переменную my_per CREATE SYNONYM (создать синоним) Синонимами называются дополнительные имена, присваиваемые таблицам, представлениям данных или последовательностям. Синонимы имеет смысл использовать для имен чужих или удаленных таблиц или представлений, что позволяет не указывать каждый раз владельца или БД, в которой расположен данный объект. Синонимы бывают частными или общедоступными.

Это определяется при их создании. Имя нового частного синонима должно отличаться от всех имен объектов, принадлежащих его создателю. Синонимы создаются при помощи оператора CREATE SYNONYM.

CREATE PUBLIC SYNONYM польз.имя_синонима FOR польз.таблица_или_представл_данных @связь_c_БД Оператор CREATE SYNONYM создает синоним для обозначения таблицы или представления данных. Частный синоним должен иметь имя, отличное от имен любых объектов, принадлежащих создающему синоним пользователю.

Только с помощью синонима процедуру или функцию можно сделать доступной для других пользователей и установить для нее параметры PUBLIC ( Общие) PUBLIC сделает созданный синоним доступным для всех пользователей. Если параметр PUBLIC не задан, то синоним будет частным (т.е. доступным только для пользователя, который его создал).

Польз имя пользователя. Если оно не указано, то подразумевается что таблица (или представление данных) принадлежит пользователю, выполняющему оператор.

связь_c_БД указывает на существующую связь с удаленной базой. Если конкретный пользователь не указан, то синоним будет создаваться для объекта, принадлежащего пользователю, описанному в связи с удаленной БД.

CREATE TABLE (создать таблицу) CREATE TABLE польз.имя_таблица ( описание_столбца | эл-т_таблицы, описание_столбца | эл-т_таблицы,...) PCTFREE n PCTUSED n INITRANS n MAXTRANS n TABLESPACE область_хранения STORAGE хранение CLUSTER кластер столбец, столбец,...

AS запрос Оператор CREATE TABLE создает таблицу в базе данных. Таблица может иметь от 1 до 254 столбцов.(В Personal Oracle-7 до 1000) Созданная таблица будет пуста (если не был указан запрос в предложении AS). Строки данных как правило добавляются в таблицу с помощью оператора INSERT.

Польз -владелец создаваемой таблицы ( подразумевается пользователь, выполняющий оператор).

описание_столбца - описание столбцов и возможных ограничений таблицы.

эл-т_таблицы - описание ограничений для таблицы.

–  –  –

PCTFREE n определяет процент пространства (n) в каждом блоке таблицы, резервируемого для дальнейших обновлений и вставок данных. Число n должно быть целым от 0 до 100. Подразумеваемое значение n -- 10.

n = 100 не имеет смысла, т.к. данные не смогут быть вставлены.

Сочетание значений параметров PCTFREE и PCTUSED определяет, будут ли новые данные записываются в существующие блоки или для них будут созданы дополнительные.

PCTUSED n задает процент минимального использования пространства в каждом блоке таблицы. n должно быть целым числом в диапазоне от 0 до 100. Подразумеваемое значение -- 40. Блок будет считаться свободным (т.е. готовым к принятию новых данных) если он заполнен меньше, чем на указанное после PCTUSED число процентов. Блок перестает считаться свободным, когда он заполняется данными до предела PCTFREE. Большие значения PCTUSED позволяют более эффективно использовать пространство таблицы (и соответственно дисковое пространство ), правда, за счет понижения производительности.

INITRANS n устанавливает начальное число транзакционных записей в каждом блоке. n должно быть целым числом в диапазоне от 1 до 255 (если опущено, то подразумевается n = 1). При первом использовании блока ORACLE резервирует в его свободной части 23 байта для каждой транзакции. Когда число одновременных транзакций превысит INITTRANS, новые транзакционные записи будут размещаться динамически до тех пор, пока их число не достигнет MAXTRANS или пока не заполнится блок.

MAXTRANS n устанавливает максимальное число транзакций, имеющих возможность конкурентно модифицировать данные в блоке. n—целое, от 1 до 255. Подразумеваемое значение n = 255.

область_храненияобласть хранения, в которой будет существовать таблица. Если параметр TABLESPACE опущен, то подразумевается область хранения STORAGE.

STORAGE устанавливает схему распределения пространства для хранения таблицы.

CLUSTER кластер столбец, столбец,...

включает таблицу в указанный кластер. Кластер должен принадлежать пользователю, выполняющему оператор.

Указывайте один столбец таблицы для каждого кластерного ключа.

Первый столбец таблицы должен соответствовать первому кластерному столбцу, и т.д. Имена таблицы и кластерного столбца могут быть разными. Кластеризуемые столбцы как правило являются первичным ключом (или частью первичного ключа) таблицы.

Запрос есть предложение SELECT.

Столбцы, извлекаемые запросом, должны соответствовать столбцам, перечисленным в операторе CREATE TABLE.

Тип данных и ширина столбцов создаваемой таблицы при этом получаются такими же, как у столбцов, извлекаемых запросом.

Если столбцы в запросе имеют полностью определенные уникальные имена, то имена столбцов после CREATE TABLE можно опустить - они будут унаследованы от запроса.

После создания таблицы в нее загружаются данные, извлеченные запросом.

В запросе нельзя употреблять предложения ORDER BY и FOR UPDATE OF.

Параметры элементы_таблицы, в случае использования запроса, могут содержать только имена столбцов.

Чтобы добавить столбец или ограничение, следует использовать оператор ALTER TABLE...ADD.

Чтобы модифицировать ограничение его нужно сначала удалить (ALTER TABLE.. DROP CONSTRAINT), а затем вновь добавит (ADD).

Пример: Чтобы описать таблицу staff (предполагается, что Вы польз. scott), следует ввести:

CREATE TABLE staff ( empno NUMBER NOT NULL PRIMARY KEY, ename CHAR(20) NOT NULL CHECK (ename = UPPER), job CHAR(10), mgr NUMBER REFERENCES scott.staff(empno), Лист 36 из 126 Владимир Новик webmaster@deltacom.co.il Справочник. SQL,PL/SQL,SQL*Plus Интернет-издание www.deltacom.co.il/rus

–  –  –

CREATE TABLESPACE (создать область хранения) CREATE TABLESPACE область_хранения DATAFILE (файл, файл,...) DEFAULT STORAGE хранение ONLINE | OFFLINE Оператор CREATE TABLESPACE создает область хранения, состоящую из указанных файлов, имеющую определенные параметры хранения и состояние ONLINE (подключенное) или OFFLINE (отключенная).

Для выполнения этого оператора необходимо иметь право DBA.

Файл-файл базы данных, описаний след. образом:

‘имя_файла SIZE целое K | M REUSE Параметр REUSE вынудит систему использовать заново файл с таким же именем, предварительно стерев хранящуюся в нем информацию.

Областью хранения (TABLESPACE) в базе данных называется логическая единица, содержащая таблицы, индексы, временные сегменты и сегменты отката. Фактически это аналогия виртуального диска Также она является логической единицей для процедур создания резервной копии и восстановления.

При создании базы данных автоматически создается одна область хранения с именем SYSTEM.

Системные файлы можно добавлять потом по мере надобности. Перед уничтожением (DROP) области хранения ее необходимо перевести в отключенное состояние.

CREATE TABLESPACE tabspace_2 DATAFILE ’C:\User\table_sp.dat’ SIZE 20M DEFAULT STORAGE (INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 999 PCTINCREASE 10) ONLINE ;

Рекомендуется создать в области хранения хотя бы один сегмент отката.

CREATE VIEW (создать представление данных) Представление есть виртуальная таблица, доступ к которой осуществляется так же как к реально существующей таблице.

CREATE VIEW польз.имя_предст альт_имя, альт_имя,...

AS запрос WITH CHECK OPTION CONSTRAINT ограничение Оператор CREATE VIEW создает “логическое окно” (виртуальную таблицу, представление данных) для одной или нескольких таблиц или таких представлений.

Запрос есть оператор SELECT (без предложений ORDER BY и FOR UPDATE OF),который определяет, из каких столбцов и строк будет состоять создаваемое представление данных.

WITH CHECK OPTION

указывает, что следу/*ет не допускать вставки и обновления данных через данное представление данных, если они не будут “видны” через него. Это бывает полезно, когда представление данных основывается на других представлениях.

Представление данных можно использовать вместо настоящей в операторах SELECT, INSERT,

UPDATE и DELETE, но при этом в операторе SELECT должны присутствовать:

объединение предложения GROUP BY, CONNECT BY или START WITH предложение DISTINCT, псевдо-столбцы (например, ROWNUM) или выра-жения в списке столбцов.

Можно также обновлять вирт. таблицы, содержащие псевдо столбцы (с помощью оператора UPDATE), если

–  –  –

не пытаться изменить их значения.

CREATE VIEW ed AS SELECT e.empno, e.ename, d.deptno, d.loc FROM emp e, dept d WHERE e.deptno = d.deptno;

View created.

SELECT column_name, updatable FROM user_updatable_columns WHERE table_name = ’ED’;

COLUMN_NAME UPD;

–  –  –

CREATE OR REPLACE PROCEDURE (Создать хранимую процедуру) Директива создаёт или изменяет процедуру, которая будет хранится на сервере для её последующего использования с помощью директивы EXECUTE имя процедуры В отличии от блоков процедура подвергается компиляции один раз при её создании.

В хранимых процедурах нельзя применять макроподстановки ( символы &, &&) для постоянной работы внутри процедуры. Макроподстановка может быть использована для оптимизации процесса генерации различных процедур из одного текста SQL файла генерации процедуры CREATE OR REPLACE PROCEDURE имя_процедуры (имя_параметра Вид_параметра Тип_переменной,.......) AS BEGIN тело процедуры END;

имя_процедуры - имя, определяющее как возможно сослаться (вызвать ) данную процедуру. Имя процедуры не должно содержать пробелы (до 30 алфавитно-цифровых символов). При создании процедуры в файлах SQL не рекомендуется указывать имя_владельца.

Вид параметра - IN - входной, OUT - выходной, IN OUT - входной и выходной.

Тело_процедуры - описание полностью соответствует непоименованному блоку.

–  –  –

CREATE ROLE teller IDENTIFIED BY cashflow CREATE PROFILE ( Создать профиль) Профиль - набор ограничений ресурсов базы данных. Если Вы назначаете профиль пользователю, тот пользователь не может превышать эти ограничения.

Вы должны иметь, привилегию CREATE PROFILE CREATE PROFILE профиль LIMIT Параметр значение

–  –  –

Изменения обьектов ALTER CLUSTER (изменить кластер) кластер - это определённая область данных, используемая RDBMS чтобы организовать специфическое хранение данных. Используется чтобы ускорить процесс поиска и обработки данных.

SQL ALTER CLUSTER польз.кластер

• польз. и фразы ниже необязательны PCTUSED целое—мин. используемое пространство в блоке (40) PCTFREE целое --% пространства в блоке для изменений (10) SIZE целое --число ключей, хранимых в кластере;

INITRANS целое --начальное число элементов транзакций;

MAXTRANS целое --макс. число одновременных транзакций;

STORAGE предложение --управляет распределением памяти;

–  –  –

• изменить какие-либо параметры, относящиеся к уже существующему блоку;

• удалить таблицы из кластера (для этого надо использовать операторы DROP CLUSTER и DROP TABLE);

• изменить область размещения кластера;

ALTER DATABASE (модифицировать базу данных)

SQL ALTER DATABASE

база_данных ADD LOGFILE ‘имя_файла’ SIZE целое K | M REUSE,...

DROP LOGFILE ‘имя_файла’, ‘имя_файла’,...

RENAME FILE ‘имя_файла’, ‘имя_файла’,...

TO ‘имя_файла’, ‘имя_файла’,... ARCHIVELOG |

NOARCHIVELOG MOUNT SHARED | EXCLUSIVE

DISMOUNT OPEN | CLOSE NORMAL | IMMEDIATE

Оператор ALTER DATABASE используется для того, чтобы:

• Смонтировать базу данных в разделенном или исключительном режиме;

• Открыть или закрыть базу данных;

• Добавить, удалить или переименовать файл повтора работы.

Также можно сделать файл повтора работы архивируемым (полезно для восстановления носителя информации) или не архивируемым (пригодно только для восстановления инстанции). Если имя базы данных опущено, то подразумевается имя базы данных, указанное в текущем файле INIT.ORA (параметр DB_NAME).

–  –  –

Оператор ALTER INDEX переопределяет порядок последующего хранения индекса. Параметры INITRANS, MAXTRANS, и STORAGE имеют то же значение, что и в операторе CREATE TABLE (создать таблицу).

ALTER ROLLBACK SEGMENT (модифицировать сегмент отката) SQL ALTER PUBLIC ROLLBACK SEGMENT сегмент STORAGE предложение Оператор ALTER ROLLBACK SEGMENT позволяет сделать сегмент отката (сегмент аннулирования транзакции) доступным всем пользователям (PUBLIC), а также изменить параметры, управляющие схемой его хранения. Чтобы cделать сегмент общедоступным, используйте слово PUBLIC. Чтобы сделать сегмент частным, надо уничтожить его (DROP) и создать заново (CREATE).

Предложение STORAGE влияет на дальнейшее распределение пространства в сегменте. При изменении существующего сегмента нельзя использовать параметры INITIAL и MINEXTENTS.

–  –  –

Оператор ALTER SEQUENCE предназначен для:

• изменения приращения при генерации последовательности чисел;

• переустановки или удаления параметров MINVALUE или MAXVALUE;

• включения или выключения характеристик CACHE и ORDER.

• Значение CACHE должно быть меньше разности между MINVALUE и MAXVALUE.

–  –  –

Если Вы используете параметр CYCLE, то восходящая последовательность после достижения MAXVALUE выдаст MINVALUE, а нисходящая—после достижения MINVALUE выдаст MAXVALUE.

Чтобы начать генерацию последовательности с нового числа надо удалить (DROP), а затем заново создать (CREATE) последовательность.

ALTER TABLE (модифицировать таблицу) ALTER TABLE польз.таблица ADDописание_столбца | ограничение_таблицы, описание_столбца | ограничение_для_таблицы,...

MODIFY описание_столбца, описание_столбца,...

DROP CONSTRAINT ограничение, ограничение,...

PCTFREE целое PCTUSED целое INITRANS целое MAXTRANS целое STORAGE предложение BACKUP Оператор ALTER TABLE позволяет добавлять в таблицу столбцы и ограничения, изменять размер и тип данных существующих столбцов, изменять установки NULL/NOT NULL, удалять ограничения, изменять схему хранения таблицы и заносить в словарь данных информацию о том, что была создана резервная копия таблицы (т.е. был выполнен выполнен BACKUP).

ALTER TABLESPACE (модифицировать область хранения) ALTER TABLESPACE область_хранения ADD DATAFILE ‘имя_файла’ SIZE целое K | M REUSE,...

RENAME DATAFILE ‘имя_файла’, ‘имя_файла’,...

TO ‘имя_файла’, ‘имя_файла’,...

DEFAULT STORAGE предложение

ONLINE | OFFLINE NORMAL | IMMEDIATE

BEGIN BACKUP | END BACKUP

Оператор ALTER TABLESPACE позволяет добавлять и переименовывать файлы базы данных, изменять подразумеваемые характеристики области хранения, подключать и отключать области хранения и запускать или останавливать запись резервной копии (BACKUP).

Для того, чтобы переименовать один или более файлов данных, нужно проделать следующее:

• Отключить область хранения;

• Переименовать файлы при помощи средств операционной системы;

• Переименовать файлы базы данных оператором ALTER TABLESPACE;

• Подключить область хранения.

–  –  –

Оператор DROP CLUSTER удаляет указанный кластер из базы данных. Уничтожение кластера вызывает также уничтожение индекса кластера и освобождение занимаемого пространства в области хранения. Чтобы уничтожить кластер, созданный другим пользователем, Вы должны иметь права DBA.

INCLUDING TABLES

вызывает уничтожение всех таблиц, входящих в кластер. Если эта фраза опущена, то таблицы должны быть удалены до уничтожения кластера.

Удаление кластеризованной таблицы исключает ее из кластера. Таблицу нельзя просто “раскластеризовать”. Для этого нужно создать такую же таблицу, только без использования параметра

CLUSTER. Например:

–  –  –

Оператор DROP DATABASE LINK уничтожает указанную связь с БД.

Слово PUBLIC нужно использовать, если связь доступна для всех пользователей.

Чтобы уничтожить общедоступную связь или связь, принадлежащую другому пользователю, необходимо иметь права DBA.

DROP INDEX (уничтожить индекс) DROP INDEX польз.индекс Оператор DROP INDEX удаляет указанный индекс из базы данных. Чтобы сделать это, Вы должны либо быть владельцем индекса, либо иметь права DBA.

Если имя польз. опущено, то подразумевается пользователь, выполняющий оператор. После уничтожения индекса освобождается все пространство, занимаемое им в области хранения.

DROP ROLLBACK SEGMENT (уничтожить сегмент отката) DROP PUBLIC ROLLBACK SEGMENT сегмент Оператор DROP ROLLBACK SEGMENT уничтожает указанный сегмент отката. Слово PUBLIC нужно использовать, если сегмент создан как PUBLIC (общедоступный).

Уничтожить сегмент отката может только пользователь с правами DBA. Уничтожать можно только неиспользуемые сегменты.

После уничтожения сегмента освобождается все занимаемое им пространство в области хранения.

DROP SEQUENCE (уничтожить последовательность) DROP SEQUENCE польз.последовательность Оператор DROP SEQUENCE удаляет из базы данных указанную последовательность.

Чтобы удалить последовательность, Вы должны либо быть ее владельцем, либо иметь права DBA.

Если имя польз. опущено, то подразумевается имя пользователя, выполняющего оператор.

Единственный способ “перезапустить” последовательность - это уничтожить и заново создать ее. К примеру: предположим, что принадлежащая Вам последовательность POWERS находится на числе 288, а

Вы хотите заново начать генерацию чисел с 12. Тогда нужно выполнить следующее:

DROP SEQUENCE powers CREATE SEQUENCE powers..

START WITH 12

–  –  –

DROP SYNONYM (уничтожить синоним) DROP PUBLIC SYNONYM польз.синоним Оператор DROP SYNONYM удаляет из базы данных указанный синоним.

Слово PUBLIC нужно употреблять, если синоним доступен всем пользователям. Чтобы уничтожить общедоступный или чужой синоним, необходимо иметь права DBA.

Для модификации синонима его следует уничтожить и создать заново.

DROP TABLE (уничтожить таблицу) DROP TABLE польз.таблица Оператор DROP TABLE удаляет из базы данных указанную таблицу и всю хранящуюся в ней информацию.

Чтобы уничтожить,таблицу Вы должны быть либо ее владельцем, либо иметь права DBA.

Все соответствующие индексы уничтожаются вместе с таблицей.

Представления данных и синонимы, ссылающиеся на уничтоженную таблицу, остаются, но становятся ошибочными. Их нужно или тоже уничтожить, или откорректировать 0 так, чтобы они стали действительными.

Блоки в соответствующей области хранения, которые занимали данные и индексы таблицы, освобождаются (если таблица не была кластеризована).

Оператор DROP CLUSTER INCLUDING TABLES уничтожает все таблицы, входящие в кластер.

Небесполезно перед уничтожением таблицы просмотреть представление. данных USER_CROSS_REFS в словаре данных, чтобы найти все ссылки на подлежащую уничтожению таблицу.

DROP TABLESPACE (уничтожить область хранения) DROP TABLESPACE область_хранения INCLUDING CONTENTS Оператор DROP TABLESPACE удаляет из базы данных указанную область хранения. Область хранения по имени SYSTEM не может быть удалена. Удалить область хранения может только пользователь с правами DBA.

INCLUDING CONTENTS

уничтожает все объекты, находящиеся в указанной области, включая таблицы, кластеры, сегменты отката и временные сегменты.

Если фраза INCLUDING CONTENTS опущена, то все объекты в области должны быть предварительно уничтожены.

Перед удалением области хранения ее нужно перевести в отключенное состояние.

Область хранения не может быть уничтожена, когда пользователи работают с находящимися в ней данными, индексами, сегментами отката или временными сегментами.

DROP VIEW (уничтожить представление данных) DROP VIEW польз.предст_данных Оператор DROP VIEW удаляет из базы данных указанное представление данных (виртуальную таблицу). Чтобы уничтожить представление данных нужно быть либо его владельцем, либо иметь права DBA.

После уничтожения представления данных все ссылающиеся на него представления и синонимы остаются, но становятся недействительными. Их нужно либо удалить, либо откорректировать так, чтобы они стали действительными.

Чтобы изменить представление данных, его следует уничтожить и создать заново. Альтернативный вариант - использование слов CREATE OR REPLACE Перед уничтожением представления необходимо просмотреть представлении данных USER_CROSS_REFS в словаре данных, чтобы найти все ссылки на подлежащее уничтожению представление.

–  –  –

FROM польз.таблица, таблица alias,...

WHERE условие CONNECT BY условие START WITH условие GROUP BY выражение, выражение... HAVING условие UNION | INTERSECT | MINUS SELECT...

ORDER BY выражение | ASC | DESC,...

FOR UPDATE OF столбец, столбец... NOWAIT;

Оператор SELECT извлекает данные из столбцов одной или нескольких таблиц. Оператор SELECT сам по себе является запросом. Если он используется как предложение внутри другого оператора, то он называется подзапросом.

В операторе SELECT обязательно должно присутствовать предложение FROM.

Остальные предложения не являются необходимыми. При совместном использовании нескольких предложений они должны быть записаны в указанном выше порядке.

SELECT INTO( выбрать и поместить в переменную) SELECT_перечень INTO список_переменных FROM таблица, таблица,...

остальная_часть_оператора;

Оператор SELECT...INTO извлекает из таблицы (таблиц) значения указанных столбцов и помещает их в соотв. переменные, перечисленные в списке_переменных. Типы данных переменных и соотв. столбцов должны либо совпадать, либо быть совместимыми.

Извлеченную строку данных можно хранить в переменной, объявленной с помощью атрибута %ROWTYPE.

Список SELECT(выбор по полям ) SELECT list FROM...

Список оператора SELECT состоит из одной или нескольких единиц информации, расположенных между словами SELECT и FROM и отделенных друг от друга запятыми. Порядок элементов в этом списке определяет порядок расположения столбцов в результате.

Элементами списка SELECT могут быть:

• Имена столбцов и их альтернативные имена (ename “Фамилия”, deptno)

• выражения со столбцами и ограничениями, или переменные включающего языка

• Групповые функции (MAX(sal), MIN(comm))

• Негрупповые функции (SYSDATE, INITCAP(ename)) Если в оператор SELECT используется предложение GROUP BY, то элементами списка SELECT могут быть только групповые функции, выражения, стоящие после предложения GROUP BY, константы и функции без параметров (типа SYSDATE).

Соотносящийся подзапрос Соотносящийся подзапрос вычисляет запрос для КАЖДОЙ СТРОКИ запроса-родителя. Для ясности рекомендуется использовать альтернативные имена таблиц или столбцов.

SELECT список_столбцов FROM таблица1 алиас1 WHERE выраж оператор (SELECT список_столбцов FROM таблица2 алиас2 WHERE алиас1.столбец оператор алиас2.столбец);

UPDATE список_столбцов SET столбец = (SELECT выражение FROM таблица2 алиас2 WHERE алиас1.столбец = алиас2.столбец);

DELETE FROM таблица1 алиас1 WHERE столбец оператор (SELECT выражение FROM таблица2 alias2 WHERE алиас1.столбец = алиас2.столбец);

–  –  –

FROM таблица1, таблица2,...

WHERE таблица1.столбец1 = таблица2.столбец1

• предложение WHERE необязательно Операция соединения позволяет извлекать данные и комбинировать строки из двух или более таблиц одновременно. В результате каждая извлеченная строка может содержать данные из разных таблиц.

Предложение WHERE задает порядок составления строк.

Если извлекаемый столбец существует в нескольких соединяемых таблицах, то перед ним необходимо указывать имя таблицы. Например, столбец sal таблицы emp: emp.sal Простое соединение позволяет извлечь строки из двух таблиц. Извлекаться будут только те строки, у которых значения столбцов отвечают условию в предложении WHERE. Если предложения WHERE нет, то будут извлечены все строки. К примеру, соединив без WHERE 2 таблицы по 300 строк каждая, мы получим 90 000 строк—вряд ли это то, что нам нужно.

INSERT (добавить) INSERT INTO имя_таблицы/представления (столбец, столбец,...) VALUES(значение, значение,...); --список столбцов необязателен INSERT INTO имя_таблицы/представления (столбец, столбец,...) SELECT...;

Оператор INSERT предназначен для добавления строк в таблицу или представление данных. Имена в списке столбцов могут быть перечислены в любом порядке. В столбцы, не указанные в списке, заносится пустое значение.

Все столбцы с признаком NOT NULL должны быть указаны и иметь предназначающиеся для них значения.

В предложении VALUES перечисляются конкретные значения столбцов в добавляемой строке.

Каждый указанный столбец должен иметь соответствующего. ему значение в предложении VALUES.

Типы данных значения и столбца должен быть совместимы или преобразуемы.

Значения типа CHAR и DATE надо заключать в одинарные кавычки (‘абв’).

Чтобы добавить строки из другой таблицы,следует использовать подзапрос. Оператор SELECT в этом подзапросе должен извлекать значения для каждого перечисленного столбца.

UPDATE (обновить) UPDATE таблица/имя_предст_данных SET столбец_имя = выражение столбец_имя = (SELECT_с_одним_результатом) --допускается в SQL (столбец_имя, столбец_имя,...) = оператор_SELECT—допускается в SQL WHERE_предложение;

WHERE CURRENT OF имя_курсора; --допускается в PL/SQL Оператор UPDATE заменяет значения одного или нескольких указанных столбцов на значения выражений или результат запроса.

Оператор SELECT в этом запросе должен возвращать как минимум одну строку и обеспечивать значения для каждого столбца, стоящего слева от знака =. Этот оператор SELECT не может содержать фразы INTO. Для определения набора строк, подлежащих обновлению, используется предложение WHERE. В нем указываются условия, которым должна отвечать обновляемая строка. Если предложение WHERE опустить, то будут обновлены все строки.

В PL/SQL, предложение WHERE CURRENT OF вызывает обновление текущей строки курсора. (Данное выражение допускается только в PL/SQL)

–  –  –

Оператор SQL LIKE сравнивает строку ‘симв’ с образцом. В образце можно использовать метасимволы % и _. % (знак процента) соотв. любым символам или пустой строке _ (подчеркивание) соотв. любому одиночному символу.

Символьные литералы должны заключаться в апострофы (‘ABC’). При сравнении учитывается регистр букв (прописные/строчные).

Выражение..вызовет извлечение но не...

lname LIKE ‘S_ile%’ Smile, Stiles, Skilerson smile, Samiler title LIKE ‘%ager’ Manager, dowager, pager MANAGER, agent Распределенный запрос Для выполнения распределенного запроса необходимо наличие связи между RDBMS, расположенными на разных компьютерах, через SQL*Net.

Синтаксис распределенного запроса такой же, как и у обычного, только после имени таблицы надо указывать имя связи с удаленной БД (или его синоним).

SELECT столбец2, столбец3,...

FROM удаленная_таблица@связь_с_БД, местная_таблица WHERE удаленная_таблица.столбец1 = местная_таблица.столбец_1;

Ссылки на удаленные таблицы возможны в предложении FROM операторов SELECT и INSERT INTO...SELECT. Также, они допустимы в префиксах для ссылки на столбцы таблиц в этих операторах.

–  –  –

Предложение FROM определяет, из какой таблицы или таблиц надо извлекать записи (оператор SELECT), или в какой таблице надо стирать строки (оператор DELETE).

Если таблица принадлежит не Вам, то следует указать имя ее владельца. связь_с_БД используется для обращения к таблицам, находящимся в удаленных БД.

–  –  –

DESC указывают порядок сортировки:

• ASC—восходящий,

• DESC—нисходящий.

Подразумеваемый порядок—восходящий.

Предложение ORDER BY нельзя использовать в подзапросах операторов

INSERT, UPDATE, CREATE TABLE и CREATE VIEW.

Предложение ORDER BY отменяет действие предложения CONNECT BY, если они используются в одном операторе.

–  –  –

Предложение CONNECT BY связывает строки в древовидную структуру, определенную предложением PRIOR. Предложение PRIOR ставится перед порождающим выражением.

–  –  –

Подзапрос Подзапросом называется оператор SELECT, стоящий в правой части выражения после слова WHERE.

Такой запрос является вложенным в другой. Подзапросы можно помещать в другие подзапросы.

SELECT...WHERE выражение оператор (SELECT...);

UPDATE...WHERE выражение оператор (SELECT...);

DELETE...WHERE выражение оператор (SELECT...);

–  –  –

SELECT enam e FROM emp WHERE cityname IN (SELECT id FROM city WHERE stateabbr IN (SELECT stateabbr FROM state WHERE name = ‘NEW YORK’));

В SQL можно использовать операторы сравнения с результатом. запроса, извлекающего более чем одно значение. Для этого надо после оператора сравнения использовать слова ANY, ALL или SOME.

SELECT enam e FROM emp WHERE job ‘MANAGER’ AND sal ANY (SELECT sal FROM emp WHERE job=’MANAGER’);NEXTVAL (следующее значение) Псевдостолбец последовательность.NEXTVAL предназначен для получения следующего числа из последовательности, в то время как псевдостолбец последовательность.CURRVAL служит для получения последнего числа, сгенерированного последовательностью. Если Вы используете NEXTVAL и CURRVAL в одном операторе SELECT, то вы все равно получите число NEXTVAL. Для выбора номера из последовательности в PL/SQL блоке необходимо использовать оператор SELECT последовательность.NEXTVAL INTO ИмяВременнойПеременной FROM DUAL;

Древовидный запрос(предложение CONNECT BY) Древовидным запросом называется запрос, в котором присутствует предложение CONNECT BY, предназначенное для отображения строк результата в определенном иерархическом порядке. Начиная с корня, описанного предложением START WITH, запрос просматривает каждую соединенную с корнем ветвь.

Например: список зав. отделами (из таблицы EMP) и их подчиненных (директор—KING).

WHERE ( где, условие отбора ) SELECT... UPDATE... DELETE...

WHERE условие WHERE условие WHERE условие На основе указанных условий, предложение WHERE решает, какие строки в таблице будут обработаны оператором (SELECT, UPDATE или DELETE), в котором это предложение записано.

Каждое условие состоит из имени столбца, оператора сравнения и некоторого критерия оценки, имеющего тот же тип данных, что и оцениваемый столбец. В условиях можно использовать и логические операторы. Оператор NOT превратит результат оценки в обратный; AND позволяет указывать несколько обязательных условий; OR требует выполнения одного из двух условий. Например, если нужно найти клиентов, имеющих задолженность больше $100, просроченную на 90 или более дней, то можно выполнить след.

запрос:

SELECT * FROM clients WHERE bal 100 AND SYSDATE - duedate = 90;

–  –  –

В SQL (и в PL/SQL тоже) можно начать комментарий символами /* и продолжить его на сколько угодно строк. Такой комментарий заканчивается символами */. Эти цепочки (/* и */) можно использовать для временного исключения частей текста программы.

SELECT enam e, sal, mgr /* Извлечь имена, оклады $2000 или больше. */ FROM emp WHERE sal = 2000;

–  –  –

SQL в PL/SQL Язык SQL является непроцедурным языком системы управления реляционной базой данных, который может обрабатывать записи группами и обеспечивает автоматический поиск нужных данных. Язык SQL дает возможность указывать, какие данные необходимо получить, не заботясь о том, как найти эти данные.

Язык PL/SQL, в свою очередь, является процедурным языком, способным управлять ходом вычислений.

В языке PL/SQL есть условные операторы, циклы, средства для работы с курсорами ORACLE и обработки особых ситуаций.

Операторы - В блоках PL/SQL, вдобавок к установкам переменных PL/SQL (var := var + 1), операторам управления ходом выполнения программы (IF, GOTO, EXIT) и циклам (LOOP, FOR...LOOP, WHILE...LOOP), можно использовать любые операторы SQL, относящиеся к категориям обработки данных и управления транзакциями.

Функции - Внутри блока PL/SQL оператор SQL может обращаться к любой функции языка SQL.

Операторы PL/SQL внутри блока могут использовать любые функции языка SQL, кроме групповых.

Предикаты - В PL/SQL можно использовать все условия, пригодные для применения в предложение WHERE и любые операторы сравнения.

Переменные Переменные могут использоваться для хранения результатов запроса, либо для вычисления значений, заносимых в таблицы.

Переменные могут иметь любой допустимый в SQL или PL/SQL тип данных:

NUMBER, CHAR, DATE или BOOLEAN. Например: balance NUMBER(5,2); wkphone CHAR(12); sex BOOLEAN

Существует два способа присвоения значений переменным. Это:

1) оператор присваивания := например, discount := price * 0.15)

2) Выполнение SELECT INTO или FETCH INTO:

например:

SELECT price * 0.15 INTO discount FROM pricelist WHERE stockdate = SYSDATE - 60 Чтобы определить константу, следует после имени написать CONSTANT и сразу присвоить значение.

Например:

discount CONSTANT NUMBER(2,2) := 0.15;

При объявлении переменных как параметры процедур и функций нельзя указывать размер данных.

WHENEVER SQLERROR (в случае ошибки SQL) WHENEVER SQLERROR {EXIT [SUCCESS|FAILURE|WARNING|n|переменная]|CONTINUE} Оператор WHENEVER SQLERROR указывает, что в случае возникновения ошибки при выполнении команды SQL или PL/SQL, следует завершить работу SQL*Plus.

EXIT [SUCCESS | FAILURE | WARNING | n | переменная] вынудит SQL*Plus, в случае возникновения ошибки SQL, завершить работу, предварительно подтвердив все неподтвержденные изменения в БД. Ошибки команд SQL*Plus не будут вызывать завершение работы.

Правила видимости Идентификаторы (переменные, константы, записи, курсоры и особые ситуации) являются локальными для блока, в котором они объявлены, и глобальными для всех блоков, находящихся внутри такового.

Если глобальный идентификатор заново объявить в одном из вложенных блоков, то это новое объявление заменит глобальное и станет действительным для этого блока и для вложенных в него других блоков.

В блоке нельзя ссылаться на идентификаторы, объявленные в других блоках,расположенных на том же уровне вложенности.

Если идентификатор переобъявлен в блоке и нужно использовать его описание из внешнего блока, то во внешнем блоке следует перед объявлением идентификатора. написать имя_метки, и затем перед именем идентификатора. писать имя метки с точкой.

–  –  –

Выполнение блоков PL/SQL Блок на языке PL/SQL начинается либо с операторов DECLARE или BEGIN, либо с имени блока.

Операторы блока вводятся так же, как и команды SQL, за исключением того, что точка с запятой (;) и пустые строки не завершают ввод блока.

Ввод блока PL/SQL нужно заканчивать точкой (.), стоящей на отдельной строке. Чтобы выполнить блок, хранящийся в активном буфере, надо ввести команду RUN или / (наклонная черта).

Например, Вы можете ввести и выполнить следующий блок PL/SQL:

SQL DECLARE 2 x NUMBER := 100;

3 BEGIN 4 FOR i IN 1..10 LOOP IF TRUNC(i,2) = i / 2 THEN --i = четное число.INSERT INTO temp VALUES (i, x, ‘i—четное число’);

6...

7.... ELSE INSERT INTO temp VALUES (i, x, ‘i—нечетное число’);

8....

9.... END IF;

10... x := x + 100;

11....END LOOP;

12....END;

13.....

SQL Процедура PL/SQL успешно завершена.

При исполнении блока команды SQL могут вести себя чуть-чуть иначе, чем если бы они исполнялись не в блоке.

–  –  –

переменная1 таблица.столбец%TYPE переменная2 переменная_или_константа%TYPE Атрибут %TYPE используется для того, чтобы сделать тип данных какой-либо переменной таким же, как у другой переменной, константы или столбца таблицы. Выигрыш от этого такой: не нужно точно знать тип данных или параметры столбца на который Вы ссылаетесь, а если определение столбца изменится, то тип данных переменной изменится так же.

Атрибут %ROWTYPE позволяет объявить переменную для хранения данных одной строки таблицы или представления данных, либо для хранения строки, выбранной оператором FETCH. Ссылаться на поля переменной, объявленной при помощи %ROWTYPE, следует так: имя_записи.имя_столбца.

DECLARE CURSOR nextclient IS SELECT fname, lname, phone FROM clients;

callrecord nextclient%ROWTYPE;...

BEGIN OPEN nextclient;

FETCH nextclient INTO callrecord;

...............

END;

BEGIN (начать) метка BEGIN блок END метка;

Оператором BEGIN заканчивается секция объявления данных DECLARE (если она есть) и начинается выполняемая часть блока. Каждый блок должен иметь хотя - бы один выполняемый оператор. Вместо выполняемого оператора можно использовать пустой оператор NULL; Каждый оператор BEGIN должен иметь парный ему оператор END, который заканчивает блок.

метка не обязательна. Однако, если Вы использовали ее, то к оператору END, заканчивающему этот блок, должна быть добавлена метка.

END (конец блока) Оператор END заканчивает парный ему оператор начала блока.

Если перед блоком была поставлена метка - то обязательно необходимо указать после ЕND имя метки Оператор END должен быть последним в каждом блоке PL/SQL. Имя_метки позволяет ссылаться на переменные объемлющего блока, или на индекс внешнего цикла.

В блоке может использоваться пустой оператор NULL;

–  –  –

FETCH (извлечь запись) FETCH имя_курсора INTO имя_переменной1, имя_переменной2,...;

FETCH имя_курсора INTO имя_записи;

Оператор FETCH извлекает очередную строку данных из явно описанного и открытого в данный момент курсора и помещает данные в: INTO имя_переменной: список простых (скалярных) переменных.

Каждому извлеченному столбцу должна соответствовать одна переменная с аналогичным ему типом данных (или с совместимым, автоматически преобразуемым типом).

Данный оператор есть единственно возможный метод выборки данных из курсора. При этом следует учитывать,что после извлечения данных производится сдвижка курсора на следующую запись в таблице.

INTO имя_записи: переменная для хранения записи, описанная при помощи %ROWTYPE.

Для извлечения множества строк данных можно использовать цикл FOR с курсором. В таком случае не будет необходимости открывать (OPEN), извлекать данные (FETCH) и закрывать (CLOSE) курсор для каждой строки.

–  –  –

Блокировка FOR UPDATE OF “запирает” извлеченные строки таблицы перед выполнением одного или нескольких операторов UPDATE...WHERE.

Остальные пользователи не смогут заблокировать или изменить эти строки до тех пор, пока они не будут освобождены операторами COMMIT или ROLLBACK.

Предложение FOR UPDATE OF можно использовать также и с операторами INSERT и DELETE.

Оператор FOR UPDATE OF нельзя использовать вместе с операциями над множествами, с функциями от множеств и с фразами DISTINCT, GROUP BY, UNION, INTERSECT или MINUS.

Слово NOWAIT вызовет пропуск оператора, если хотя бы одна из выбранных строк заблокирована другим пользователем (вместо ожидания снятия блокировки).

CLOSE (закрыть) CLOSE имя_курсора;

Оператор CLOSE выполняет отключение триггера, оставляя активный набор неопределенным.

Оператором CLOSE можно закрыть только явно описанный и открытый в данный момент курсор.

Чтобы произвести выборку (FETCH) из закрытого курсора, его необходимо открыть заново.

После этого система сделает следующее:

• Выполнит оператор OPEN

• Вычислит заново все параметры

• Инициализирует активный набор (т.е. строки, извлеченные запросом) DECLARE CURSOR (объявить курсор) При объявлении курсора не следует второй раз писать оператор DECLARE. Курсор объявляется так же как любая переменная PL/SQL.

DECLARE CURSOR имя_курсора (имя_параметра тип_данных),...—необязательно IS SELECT_оператор FOR UPDATE OF имя_столбца;

необходимо, если в данном блоке есть операторы UPDATE или DELETE с FOR UPDATE предложением WHERE CURRENT OF.

Оператор DECLARE CURSOR присваивает курсору имя и запрос.

Если Вы используете параметры ‘имя_параметра’, то необходимо использовать их также и в операторе SELECT_оператор, описывающем запрос для данного курсора.

Во избежание путаницы рекомендуется давать параметрам имена, отличающиеся от имен столбцов.

Курсоры Курсор -- это рабочая область PL/SQL, хранящая обрабатываемую в данный момент строку данных.

Курсор используется в процедурах на PL/SQL.

OPEN курсор ( открыть курсор) OPEN курсор(знач_парам1, знач_парам2...); --не обязательно Оператор OPEN вычисляет запрос, прикрепленный к указанному курсору. Курсор должен быть объявлен до выполнения OPEN.

Если курсор был описан (в DECLARE CURSOR) с параметрами, то в операторе OPEN после имени курсора должны присутствовать значения для каждого параметра.

Если курсор был описан с параметрами по умолчанию то при открытии курсор может открываться как с параметрами так и без них.

–  –  –

Обращение к %FOUND, %NOTFOUND, и %ROWCOUNT возбуждают исключительное состояние INVALID_CURSOR (ORA-01001), если курсор не находится в состоянии OPEN.

Цикл FOR с курсором (PL/SQL) FOR имя_записи IN имя_курсора(параметр, параметр,...) LOOP операторы...

END LOOP;

При выполнении цикла FOR с курсором PL/SQL производит следующие действия:

• порождает и неявно открывает курсор, затем делает неявную выборку (FETCH) в (INTO) область имя_записи,

• извлекая строки, соответствующие прикрепленному к курсором запросу.

• Для каждой извлеченной строки выполняется последовательность операторов ‘операторы...’.

• • После извлечения всех строк PL/SQL неявно закрывает курсор (CLOSE) и выходит из цикла.

Используемый курсор должен быть предварительно объявлен и закрыт к началу выполнения цикла.

Необязательные параметры будут использованы (если они есть) до выполнения 1-го прохода по циклу при неявном открытии курсора.

Типы данных этих параметров должны быть совместимы с типами данных объявленных параметров курсора, или хотя бы преобразуемы.

Область ‘имя_записи’ неявно описывается как переменная типа имя_курсора%ROWTYPE.

Для ссылки на содержащиеся в этой области значения следует использовать следующую форму записи:

имя_записи.имя_столбца

–  –  –

Оператор NULL не имеет никакого отношения к пустым значениям. Операторы IS NULL и IS NOT NULL являются операторами сравнения.

IF (если) IF условие_1 THEN последовательность_операторов;

ELSIF условие_2 THEN последовательность_операторов;

ELSIF условие_3 THEN последовательность_операторов;...

ELSE последовательность_операторов;

ENDIF;

Оператор IF вычисляет условие_1 и, если оно истинно (имеет значение TRUE), то будет выполнена последовательность_операторов.

В противном случае управление передается на оператор ELSIF, который таким же образом обрабатывает условие_2, и т.д. до оператора ELSE, чья последовательность _операторов будет выполнена только если все условия в IF и ELSIF ложны.

EXCEPTION (особая ситуация) Любая системная или программная ошибка возбуждает особую ситуацию. При этом программа может проанализировать данную ситуацию, произвести необходимые действия по её устранению.

Для выхода из режима особой ситуации есть единственный способ - переход по команде GOTO на обработку внутрь программы.

Следует учитывать,что :

• При возникновении особой ситуации выполнение программы останавливается.

• Для работы с особой ситуацией её имя должно быть объявлено так-же как тип в объемлющем блоке EXCEPTION --данная секция необязательна.

WHEN имя_искл_ситуации THEN операторы;

WHEN имя_искл_ситуации OR имя_искл_ситуации THEN операторы;

..WHEN OTHERS –необязательно прочие ситуации THEN последовательность_операторы;

Процедуры обработки особых ситуаций описываются перед оператором END, заканчивающим блок.

В каждом предложении WHEN указывается имя особой ситуации и действия, которые необходимо предпринять, если эта ситуация возникнет.

Определяемые пользователем особые ситуации должны быть описаны в секции DECLARE текущего (или объемлющего) блока. PL/SQL также имеет набор предопределенных особых ситуаций.

Фраза OTHERS описывает порядок обработки всех ситуаций, не перечисленных во фразах WHEN. Эта фраза должна быть последней.

EXCEPTION ситуация - ситуация обработки ошибок при этом следует учитывать незавершённую транзакцию. И для её отмены следует использовать ROLLBACK

EXIT (выход) EXIT имя_метки WHEN условие_plsql;

Оператор EXIT без имени метки и фразы WHEN вызывает выход из текущего цикла. Чтобы выйти во внешний цикл с именем, следует использовать его имя в качестве имени_метки.

При издании директивы в режиме работы SQL*PLUS производится выход из программы.

Если употребить фразу WHEN и условие, то выход будет происходить только если указанное условие истинно.

При выполнении в теле цикла FOR с курсором, оператор EXIT закрывает курсор.

–  –  –

FOR индекс_цикла IN 1-ое_целое..2-е_целое LOOP последовательность_операторов END LOOP;

FOR индекс_цикла IN REVERSE 1-ое_целое..2-е_целое LOOP последовательность_операторов END LOOP;

Последовательность_операторов в численном цикле FOR выполняется по одному разу для каждого значения индекса цикла.

Индекс цикла увеличивается на 1 с каждой итерацией, начиная со значения=1-ое_целое и заканчивая 2м _целым. Когда индекс становится больше 2-го целого, выполнение цикла заканчивается.

Если использовано предложение IN REVERSE, то перед началом цикла индексу присваивается значение=2-е_целое. Индекс неявно описывается как принадлежащий к типу данных NUMBER. Он “видим” только в теле цикла и обрабатывается как константа: т.е. на его значение можно ссылаться, но нельзя изменять.

–  –  –

Если перед оператором LOOP стоит имя_метки, то оно же должно стоять и в операторе END LOOP.

Циклы чаще всего используются вместе с оператором FETCH. Для прекращения работы в цикле можно использовать операторы GOTO, RAISE или EXIT.

first LOOP FETCH имя_курсора INTO имя_записи;

EXIT WHEN имя_курсора %NOTFOUND;

обработка_данных END LOOP first;

PRAGMA EXCEPTION_INIT(установить особую ситуацию ) PRAGMA EXCEPTION_INIT(имя_особ_ситуации, код_ошибки);

Оператор PRAGMA EXCEPTION_INIT позволяет присвоить коду ошибки неописанной внутренней особой ситуации некоторое имя. ‘имя_особ_ситуации’ должно присутствовать в секции DECLARE текущего или объемлющего блока.

Одно ‘имя_особ_ситуации’ следует присваивать только одной особой ситуации. ‘код_ошибки’ может быть любым кодом, возвращаемым функцией SQLCODE.

Слово PRAGMA передает оператор PL/SQL при компиляции (т.е. он выполняется при компиляции блока, а не при его исполнении).

RAISE( возбудить особую ситуацию) RAISE(имя_особой_ситуации);

Оператор RAISE прекращает выполнение блока блока PL/SQL и передает управление программе обработки указанной особой ситуации.

Если PL/SQL не находит обработчик данной особой ситуации в текущем блоке, то ситуация передается в объемлющий блок и т.д., пока обработчик не будет найден. Если обработчик не обнаружится ни в одном блоке, то возникает ошибка “необработанная особая ситуация” и выполнение прекратится.

–  –  –

курсор должен быть описан с характеристикой FOR UPDATE OF.

Атрибуты неявного курсора SQL% и всех явных курсоров позволяют получить полезную информацию о выполнении операторов UPDATE и DELETE.

Если курсор был объявлен по одной таблице, а обновление данных проводится по другой таблице и при этом используется указанный курсор, то возникает ошибка - неправильный номер ROWID.

WHILE (“Пока” Оператор цикла ) WHILE условие LOOP группа_операторов END LOOP;

Цикл WHILE выполняет группу_операторов до тех пор, пока в начале каждой итерации указанное условие будет истинно. Цикл заканчивается после того, как условие станет ложным или пустым (NULL).

GOTO (перейти к) имя_метки оператор...

...

GOTO имя_метки;

Оператор GOTO передает управление на оператор, следующий после метки имя_метки.

имя_метки должно находиться в том же блоке операторов, что и GOTO.

В цикле LOOP или в ветвлении IF оператор GOTO вызовет переход на метку_3 только если метка_3 находится внутри LOOP или IF. имя_метки должно быть уникальным в блоке.

Совпадающие имена могут употребляться в разных или во вложенных блоках.

Дополнительные возможности ROLLBACK (откат) ROLLBACK WORK;

ROLLBACK TO SAVEPOINT точка_сохранения;

Оператор ROLLBACK аннулирует все изменения, внесенные в БД после последнего оператора COMMIT и уничтожает все точки сохранения.

Оператор ROLLBACK TO точка_сохранения аннулирует все изменения, внесенные в БД после указанной точки сохранения.

ORACLE автоматически создает неявную точку сохранения перед операторами INSERT, UPDATE и DELETE, с тем, чтобы выполнить откат до этой точки, если оператор не выполнится успешно.

Слово WORK и SAVEPOINT не являются обязательными. Их можно использовать для большей наглядности.

SAVEPOINT ( создать точку отката ) SAVEPOINT имя_точки;

Оператор SAVEPOINT ставит в ходе выполнения транзакции отметку, которую можно использовать в операторе ROLLBACK для указания точки, до которой нужно отменить изменения в БД.

Если в одной транзакции повторно использовать имя точки сохранения, то предыдущая точка с этим именем стирается.

Оператор ROLLBACK TO имя_точки аннулирует все изменения, внесенные в БД после установки указанной точки сохранения.

Операторы COMMIT и ROLLBACK без параметров уничтожают все точки сохранения.

SET TRANSACTION ( установить режим отбора)

SET TRANSACTION READ ONLY

Оператор SET TRANSACTION READ ONLY устанавливает для текущей транзакции режим работы “только чтение”. После этого оператора все запросы, выполняющиеся в текущей транзакции, будут

–  –  –

игнорировать изменения данных, сделанные другими пользователями. Оператор SET TRANSACTION READ ONLY особенно полезен, если нужно создать отчет на основе данных из множества таблиц, постоянно обновляемых разными пользователями. Действие оператора SET TRANSACTION READ ONLY заканчивается при выполнении операторов COMMIT или ROLLBACK.

При активности действия оператора SET TRANSACTION READ ONLY нельзя выполнять операторы DELETE, INSERT и UPDATE. Разрешается только выполнение запросов. Оператор SET TRANSACTION READ ONLY должен быть первым оператором в транзакции.

SET ROLE Set role identified by пароль роли Данная директива применяется для переназначения роли пользователя. Следует учитывать, что переход по ролям можно осуществлять только по тем из них, которые были установлены пользователю.

Если роль не была создана с паролем, то она автоматически при ее назначении становится доступной пользователю. Роль пользователя, защищенная паролем, становится доступной только после издании дерективы Set role identified be пароль роли AUDIT (ревизия) Оператор AUDIT может использоваться для достижения двух целей: либо для установки параметров ревизии доступа к базе данных, либо для активизации отслеживания доступа к объектам базы (например, к таблицам).

**1-й случай: установка параметров ревизии ** SQLAUDIT системн_параметр, системн_параметр,... | ALL

WHENEVER SUCCESSFUL |

WHENEVER NOT SUCCESSFUL

Такая форма оператора AUDIT может включает регистрацию следующих событий:

• подключение к базе и отключение от нее;

• выполнение операторов, требующих права RESOURCE (системн. параметр RESOURCE);

• выполнение операторов, требующих права DBA (системн. параметр DBA);

• выполнение операторов, возвращающих ошибку ORA-942 -- “таблица или представление данных не существует” (системн. Параметр NOT EXISTS).

Ревизия включается на системном уровне при помощи параметра AUDIT_TRAIL в файле INIT.ORA. Если ревизия не включена, то оператор AUDIT все равно выполнятся не вызвав ошибки, однако регистрационная информация не будет записываться. Все результаты ревизии (отслеживания) поступают в таблицы словаря данных. По мере заполнения ревизионных таблиц словаря, Вы можете архивировать старые записи, а затем стирать их. Но никогда не удаляйте сами ревизионные таблицы словаря данных.

*** 2-й случай: включение слежения за доступом к объектам *** SQLAUDIT табл_параметр, табл_параметр,... | ALL ON польз.таблица | DEFAULT

BY SESSION | BY ACCESS

WHENEVER SUCCESSFUL | WHENEVER NOT

SUCCESSFUL Такая форма оператора включает регистрацию поручений доступа к таблицам и AUDIT представлениям данных.

BY SESSION или BY ACCESS Определяет, как информация будет записываться в таблицу AUDIT_TRAIL. Если употреблено предложение BY SESSION, то для каждого сеанса работы пользователя отводится одна строка (запись), изменяемая при каждой регистрации события. Предложение BY ACCESS, наоборот, вызовет создание новой записи для каждого регистрируемого события.

Подразумеваемым является предложение BY SESSION.

WHENEVER SUCCESSFUL или WHENEVER NOT SUCCESSFUL

Определяет, выполнение каких операторов будет регистрироваться успешно закончившихся (WHENEVER SUCCESSFUL), или вызвавших ошибку (WHENEVER NOT SUCCESSFUL).

–  –  –

COMMIT [WORK] (утвердить транзакцию) Оператор COMMIT производит регистрацию всех изменений произведенных в данной транзакции. Имя WORK не обязательно. Оно оставлено для совместимости с более ранними версиями. До проведения COMMIT изменения, проводимых пользователем, не видны другими пользователями.

COMMIT;

COMMIT WORK;(Утвердить работу) Оператор COMMIT окончательно вносит в базу данных любые изменения, сделанные после предыдущего оператора COMMIT, и делает эту новую информацию доступной для других пользователей.

Все блокировки таблиц и строк снимаются. Все точки сохранения, объявленные после предыдущего COMMIT или ROLLBACK, стираются.

До того, как Вы подтвердите изменения оператором COMMIT, Вы можете отменить произведенную работу при помощи оператора ROLLBACK. При этом все сделанные после предыдущего COMMIT изменения отменяется База данных остается точно в таком состоянии, в каком она была после последнего COMMIT.

Для обеспечения совместимости со стандартом ANSI рекомендуется писать оператор так: COMMIT WORK. В Personal Oracle -7 Директива аналогична директив COMMIT COMMENT (комментарий) COMMENT ON TABLE польз.таблица IS ‘текст’ COMMENT ON COLUMN польз.таблица.столбец IS ‘текст’ Оператор COMMENT позволяет внести в словарь данных любые замечания к таблице или столбцу. Текст этих замечаний будет храниться в столбце REMARKS представлений данных словаря данных.

ALL_COL_COMMENTS, ALL_TAB_COMMENTS, USER_COL_COMMENTS или USER_TAB_COMMENTS.

Чтобы удалить комментарий из базы данных, введите в качестве текста после IS пустую строку—два апострофа (‘’).

CONSTRAINT ( Ограничения ) Под ограничениями понимаются условия, накладываемые на таблицу При этом данные, не удовлетворяющие данному условию, не попадут в таблицу

Синтаксис описания ограничений для таблицы:

UNIQUE | PRIMARY KEY столбец, столбец,...

CONSTRAINT имя_ограничения FOREIGN KEY столбец, столбец,...

REFERENCES польз.таблица столбец, столбец,...

CONSTRAINT имя_ограничения CHECK условие CONSTRAINT имя_ограничения

Синтаксис описания ограничений для таблицы:

столбец NULL | NOT NULL CONSTRAINT имя_ограничения UNIQUE | PRIMARY KEY CONSTRAINT имя_ограничения REFERENCES польз.таблица столбец CONSTRAINT имя_ограничения CHECK условие CONSTRAINT имя_ограничения Предложение, описывающее ограничение, позволяет определить диапазон допустимых значений одного столбца (ограничение для столбца) или группы столбцов (ограничение для таблицы).

Каждый оператор INSERT, UPDATE и DELETE будет проверяться на соответствие правилам, установленных ограничением, и будет выполнен успешно только если он удовлетворяет этим правилам.

Ограничения для таблиц являются частью глобального описания таблицы, типа CREATE TABLE employee (PROJECT NUMBER, EMPLOYEE NUMBER, PRIMARY KEY (PROJECT, EMPLOYEE))

–  –  –

Ограничения описываются в операторах CREATE TABLE и ALTER TABLE. Оператор ALTER TABLE позволяет добавлять и уничтожать ограничения. Все определенные ограничения заносятся в словарь данных. Если Вы не дали ограничению имя, то оно будет названо SYS_Cn, где n -- целое число, используемое для обеспечения уникальности имени в базе данных.

Столбец-имя столбца, к которому относится ограничение NULL or NOT NULL разрешает или запрещает столбцу иметь пустое значение (NULL) UNIQUE указывает, что все значения в этом столбце должны быть разными.

Каждый столбец должен быть описан с атрибутом NOT NULL. Столбец не должен быть первичным ключом, поскольку первичный ключ и так уникальный PRIMARY KEY определяет столбец как первичный ключ FOREIGN KEY столбец, столбец... REFERENCES польз.таблица столбец, столбец...-определяет столбец (или столбцы) как внешний ключ к польз.таблица столбец.

Подразумеваемый столбец—первичный ключ таблицы.

CHECK условие -устанавливает условие, которому должно удовлетворять значение столбца. В описании условия CHECK для столбца можно ссылаться только на тот столбец, к которому оно относится.

Условие CHECK для таблицы может ссылаться на несколько столбцов.

NOAUDIT( без ревизии)

Оператор NOAUDIT может быть использован в двух целях:

• чтобы частично или полностью отменить ревизию (AUDIT) работы системы

• чтобы частично или полностью отменить действие последнего оператора AUDIT.

• *1-й случай* NOAUDIT сист_параметр, сист_параметр,... | ALL

WHENEVER SUCCESSFUL | WHENEVER NOT SUCCESSFUL

Использование оператора NOAUDIT в такой форме приведет к частичной или полной отмене ревизии работы системы. Чтобы выполнить этот оператор,необходимо иметь права DBA.

параметр (или ALL) параметром могут быть CONNECT, DBA, NOT EXISTS или RESOURCE.

Слово ALL означает все возможные параметры.

WHENEVER SUCCESSFUL или WHENEVER NOT SUCCESSFUL

(если успешно или если неуспешно) отключает слежение соответственно за успешными или за неуспешными обращениями к системе. Если не указано явно, то отключается любое слежение.

*2-й случай* NOAUDIT параметр, параметр,... | ALL ON объект | DEFAULT

WHENEVER SUCCESSFUL | WHENEVER NOT SUCCESSFUL

Такой оператор NOAUDIT частично или полностью отменит действие предыдущего оператора AUDIT.

Указанный ‘объект’ должен принадлежать Вам. Чтобы использовать слово DEFAULT нужно иметь права DBA. Оператор NOAUDIT вызывает подтверждение текущей транзакции.

параметр (или ALL) Параметры ревизии для таблиц: ALTER, AUDIT, COMMENT, DELETE, GRANT, INDEX, INSERT, LOCK, RENAME, SELECT или UPDATE для представлений. данных: AUDIT, DELETE, GRANT, INSERT, LOCK, RENAME,SELECT или UPDATE для последовательностей: ALTER, AUDIT, GRANT или SELECT для синонимов: такие же, как для таблиц/представлений данных, к которым они относятся.

–  –  –

Слово ALL означает все возможные параметры.

объект | DEFAULT либо принадлежащие Вам таблица или представление данных, либо (DEFAULT) подразумеваемые параметры ревизии для новых таблиц.

WHENEVER SUCCESSFUL или WHENEVER NOT SUCCESSFUL

(если успешно или если неуспешно) отключает слежение соответственно за успешными или за неуспешными обращениями к таблице. Если не указано явно, то отключается любое слежение.

NOWAIT ( без ожидания освобождения ) SELECT список... FROM...

FOR UPDATE OF столбец, столбец,... NOWAIT; --требуется хотя бы один столбец LOCK TABLE [польз.]таблица [,[польз.]таблица]...

IN режим MODE [NOWAIT] Предложение NOWAIT используется в операторах SELECT и LOCK TABLE. В операторе SELECT предложение NOWAIT указывает СУБД ORACLE, что если строка таблицы заблокирована другим пользователем, то не надо ждать ее освобождения, а просто не выполнять SELECT и вернуть управление польз. В операторе LOCK TABLE предложение. NOWAIT означает что ORACLE не должен ждать освобождения таблицы, заблокированной кем-то другим, а должен в таком случае вернуть управление пользователю.

RENAME (переименовать) RENAME текущее TO новое Оператор RENAME заменяет текущее имя таблицы, представления данных или синонима на новое.

Все дозволения и индексы старого объекта переходят к новому. Оператор RENAME не может переименовать столбец. Чтобы сделать это, используйте оператор CREATE TABLE...AS SELECT.

Например, если нужно переименовать единственный столбец таблицы STATIC OLDCOL в NEWCOL, то нужно ввести:

CREATE TABLE temporary (newcol) AS SELECT (oldcol) FROM static DROP TABLE static RENAME temporary TO static VALIDATE INDEX (проверить правильность индекса) VALIDATE INDEX польз.индекс Оператор VALIDATE INDEX проверяет, правильно ли указывает каждый индекс на блок данных.

Однако, это не означает, что у каждой строки будет соотв. элемент индекса. Если ORACLE не выдаст сообщение о том, что индекс проверен, то следует уничтожить индекс и снова создать его.

–  –  –

Таблица остается заблокированной на протяжении всей операции DELETE, INSERT или UPDATE.

Блокировка снимается при выполнении COMMIT или ROLLBACK. Если таблица уже заблокирована другим пользователем, то параметр NOWAIT вынудит вернуть управление (а не ждать освобождения таблицы).

–  –  –

CHAR(размер) ( тип данных ) размер необязателен; если не указан, то подразумевается 1.

Тип данных CHAR служит для описания столбцов и переменных, предназначенных для хранения символьной информации в виде строк. Параметр ‘размер’ определяет максимальное кол-во символов.

‘Размер’ не может быть больше чем 255.

DATE (Формат данных типа дата) Каждое значение типа DATE состоит из века, года, месяца, числа, часа,минут и секунд. Время хранится в 24-х часовой форме исчисления.

Подразумеваемые значения:

Если используется дата без времени, то время будет = 00:00:00 (полночь). Если используется время без даты, то дата будет сегодняшней (SYSDATE). Если не указан формат даты, то подразумевается ДД-МЕС-ГГ (‘09-JUL-97’).

К датам можно прибавлять и отнимать от них числовые значения. Например, SYSDATE + 1 = завтра;

SYSDATE - HIREDATE = всего отработанных дней Представлением дат в отчетах можно управлять с помощью функций обработки дат, форматов дат и модификаторов форматов дат.

По умолчанию в операторе SELECT формат отображается в виде Даты без отображения часов, минут и секунд

–  –  –

LONG --только в SQL. В PL/SQL нельзя использовать переменные типа LONG.

Столбцы, имеющие тип данных LONG, могут хранить строки переменной длины (вплоть до 65 535 символов). В таблице может иметься только один столбец типа LONG.

Столбцы с таким типом данных могут использоваться только в списке оператора SELECT и в предложениях SET операторов UPDATE и DELETE. Столбцы типа LONG нельзя индексировать и их нельзя использовать в качестве аргументов функций.

Они не могут употребляться:

• в выражениях

• в списке SELECT вложенного запроса

• в списке SELECT распределенного запроса

• в запросах с использованием преложений UNION, INTERSECT или MINUS

• в предложениях WHERE, GROUP BY, ORDER BY, CONNECT BY, и DISTINCT LONG RAW( тип данных ) Тип данных LONG RAW в SQL предназначен для хранения двоичных данных, типа символьных строк и цепочек графических символов. ORACLE выводит данные типа RAW в шестнадцатеричном представлении.

Тип данных LONG RAW аналогичен типу LONG, за исключением того, что при передаче данных через SQL*Net может производится перекодировка символов из системы ASCII в EBCIDIC или наоборот.

NUMBER ( тип данных ) NUMBER(ширина, масштаб) --ширина и масштаб необязательны Данные типа NUMBER предназначены для хранения числовых величин. При описании столбца типа NUMBER можно указать макс. допустимое число разрядов (precision) и кол-во разрядов после десятичной точки (scale).

Если значение, заносимое в столбец, имеет больше разрядов чем указано в описании, то выдается сообщение об ошибке “exceeds precision”. Лишние разряды после дес. запятой округляются.

Если масштаб отрицателен, то заносимое значение будет округляться до указанного числа разрядов СЛЕВА от дес. точки. Если указана только шири на, а масштаб опущен, то заносимое значение будет округлено до целого числа. Если не указана ширина, то значение будет записано как есть (ограничиваясь только макс. допустимыми шириной и масштабом).

RAW( тип данных “Сырое”) RAW(размер) Тип данных RAW в SQL предназначен для хранения двоичных данных, типа символьных строк и цепочек графических символов. ORACLE изображает данные типа RAW в шестнадцатеричном представлении.

Максимальная ширина столбца типа RAW = 255. Тип данных RAW аналогичен типу CHAR, за исключением того, что при передаче данных через SQL*Net может производится перекодировка символов из системы ASCII в EBCIDIC или наоборот.

Указывать размер не обязательно. Если он не указан, то подразумевается размер = 1.

Команды SQL*Plus и их использование Подстановка (амперсенд (&)) Переменными подстановки являются имена переменных, определенных польз., перед которыми стоит один или два амперсенда (&). Когда в команде есть переменная подстановки, то SQL*Plus выполняет команду так, как будто вместо ссылки на эту переменную стоит ее значение.

Например: Предположим, что переменная SORTCOL имеет значение = “JOB”, а переменная MYTABLE = “EMP”. Тогда SQL*Plus выполнит команды

SQL BREAK ON &SORTCOL SQL SELECT &SORTCOL, SAL

1 FROM &MYTABLE 2 ORDER BY &SORTCOL;

–  –  –

Подстановку значений переменных можно применять в любом месте команд.

SQL и SQL*Plus, кроме 1-го слова, вводимого в ответ на приглашение. Если SQL*Plus встречает подстановку переменной с неопределенным значением, то он запрашивает это значение у пользователя.

Например: Предположим, что значение для переменной GIVENNAME не определено, и Вы ввели след.

команду:

SQL SELECT * FROM EMP WHERE ENAME = ‘&GIVENNAME’;

Тогда SQL*Plus выведет на экран приглашение:

Введите значение для givenname:

В качестве значения можно ввести любую последовательность символов, включая пробелы и знаки препинания.



Pages:   || 2 |

Похожие работы:

«ВВЕДЕНИЕ Основная задача аспирантуры подготовка научных и научнопедагогических кадров высшей квалификации юридического профиля. Целями подготовки аспиранта, в соответствии с существующим законодательством, являются:формирование навыков самостоятельной научно-исследовательской и педагогической деятельности;у...»

«Министерство образования Российской Федерации Ярославский государственный университет им. П.Г. Демидова Кафедра гражданского права и процесса Торговое право (общие положения) Сборник задач Ярославль 2002 ББК Х 623.я73-4 Т 60 Торговое право (общие положения): Сборник задач / Сост. О.М. Роднова; Яросл. гос. ун-т. Яросла...»

«Генрих Шлиман Троя Текст предоставлен правообладателем http://www.litres.ru/pages/biblio_book/?art=619045 Троя / Пер. с англ. Н.Ю. Чехонадской.: Центрполиграф; Москва; 2010 ISBN 978-5-9524-4621-2 Аннотация Настоящая книга...»

«РУКОВОДСТВO ПОЛЬЗОВАТЕЛЯ Системы информационно правового обеспечения ЛIГА:ЗАКОН ЛIГАБізнесІнформ ВЕРСИЯ 7.7 ИНФОРМАЦИИ ДЕЛОВОЙ СЕТЬ УКРАИНСКАЯ ® КИЕВ 2004 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ: Системы информационно правового обеспечения ЛIГА:ЗАКОН. К.: ИАЦ “ЛIГА”, 2004....»

«Юрьева Лариса Анатольевна ДОГОВОР УПРАВЛЕНИЯ МНОГОКВАРТИРНЫМ ДОМОМ Специальность 12.00.03 – гражданское право; предпринимательское право; семейное право; международное частное право АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата юридических наук Томск – 2010 Работа выполнена на кафедре гражданского права ГОУ ВПО "Кеме...»

«Методические рекомендации для сотрудников органов внутренних дел по охране общественного порядка в период подготовки и проведения выборов в единый день голосования 8 сентября 2013 года Правовые основы деятельности сотрудников ОВД по охране общественного порядка в...»

«Крейг Маклей Книжная лавка Текст предоставлен правообладателем http://www.litres.ru/pages/biblio_book/?art=10400778 Книжная лавка: роман / Пер. с англ. А.Д. Осиповой: Центрполиграф; Москва; 2015 ISBN 978-5-22...»

«Станислав Хабаров Сказка о голубом бизоне Текст предоставлен правообладателем http://www.litres.ru/pages/biblio_book/?art=6540173 Аннотация Полтора века назад появилась сказка математика Ч....»

«Василий Павлович Аксенов Виктор Михайлович Есипов "Ловите голубиную почту.". Письма (1940–1990 гг.) Серия "Письма писателей" Текст предоставлен правообладателем http://www.litres.ru/pages/biblio_book/?art=11783166 Василий Аксенов...»

«Источник: Информационная система "ПАРАГРАФ" Документ: ПОСТАНОВЛЕНИЕ ПРАВИТЕЛЬСТВА РК ОТ 02.10.2013 № 1042 Дата: 12.01.2017 16:24:20 Постановление Правительства Республики Казахстан от 2 октября 2013 года № 1042 Об утверждении Правил осуществле...»

«V Международная богословская конференция Русской Православной Церкви "ПРАВОСЛАВНОЕ УЧЕНИЕ О ЦЕРКОВНЫХ ТАИНСТВАХ" Москва, 13–16 ноября 2007 доц. протоiерей Валентинъ Асмусъ МДА УЧЕНIЕ О ТАИНСТВАХЪ ВЪ ГРЕЧЕСКИХЪ И РУССКИХЪ ДОГМАТИЧЕСКИХ...»

«ОТСТАВКИ И НАЗНАЧЕНИЯ ЗА ФЕВРАЛЬ 2015 АДМИНИСТРАЦИЯ ПРЕЗИДЕНТА Сергей Дубик освобожден от должности советника Президента РФ. 16.02.2015 Президент России Владимир Путин освободил Сергея Дубика от должности своего советника. Сергей Николаевич Дубик родился 4 октября 1963 в г.Орехово-Зуево М...»

«МАШИНА ШЛИФОВАЛЬНАЯ ОРБИТАЛЬНАЯ OSM430 ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ Уважаемый покупатель! Благодарим Вас за приобретение инструмента торговой марки Hammerflex. Вся продукция Hammerflex спроектирована...»

«Энди Эндрюс Смотритель судьбы. Ключ к решению "неразрешимых" проблем Серия "Нектар для души" Текст предоставлен правообладателем http://www.litres.ru/pages/biblio_book/?art=8682387 Смотритель судьбы. Ключ к решению "неразрешимых" проблем : ACT; Москва; 2015 ISBN 978-5-17-094526-9 Аннотация Каждый художник знаком с эффектом перспектив...»

«ББ К 26.303 В 35 УДК 549.08 Вертушков Г. Н., Авдонин В. Н. В 35 Т аблицы д л я определения м инералов по ф изическим и химическим свойствам : С правочник.— 2-е изд., перераб. и доп.— М.: Н ед ра, 1992.— 489 с....»

«Министерство образования Российской Федерации УТВЕРЖДАЮ Заместитель Министра образования Российской Федерации Шадриков В.Д. 27 марта 2000 г. Номер государственной регистрации _260гум/сп ГОСУДАРСТВЕННЫЙ ОБРАЗОВАТЕЛЬНЫЙ СТАНДАРТ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СПЕЦИАЛ...»

«Государственное автономное образовательное учреждение высшего профессионального образования "Московский городской университет управления Правительства Москвы" Институт высшего профессионального образования Кафедра юриспруденции УТВЕРЖДАЮ Проректор по учебной и нау...»

«Серия Философия. Социология. Право. НАУЧНЫЕ ВЕДОМОСТИ 89 2013. № 9(152). Выпуск 24 УДК 340.113 РОЛЬ МЕЖОТРАСЛЕВОЙ КОНВЕРГЕНЦИИ В РАЗВИТИИ КАТЕГОРИИ "РИСК"1 В статье п р ед ста вл ен ан ал и з со д ер ж а тел ьн о го р азв и ти я М.В. МАРХГЕЙМ11 к атего р и и р и ск в г...»

«Подковырина Е.Н., зав. НТОД ЭЛЕКТРОННЫЙ КАТАЛОГ КАК СОВРЕМЕННАЯ ИНФОРМАЦИОННО-ПОИСКОВАЯ СИСТЕМА БИБЛИОТЕКИ Ядром и основой функционирования информационно-библиотечных систем, а также одним из основных объектов приложения новых информационных технологий...»

«№ 70, 15.09.2009 ОГЛАВЛЕНИЕ 1 РАЗДЕЛ ПЕРВЫЙ ПРАВОВЫЕ АКТЫ ПОСТАНОВЛЕНИЯ АДМИНИСТРАЦИИ ГОРОДА 09.09.2009 № 589 О  создании  муниципального  автономного  общеобразовательного  учреждения  "Средняя ...»

«Борис Межуев Политическая критика Вадима Цымбурского Текст предоставлен правообладателем http://www.litres.ru/pages/biblio_book/?art=4387385 Политическая критика Вадима Цымбурского: Издательство "Европа"; Москва; 2012 ISBN 978-5-9739-0209-4 Аннотация Книга рассматривает биографию В.Л.Ц...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ЮРИДИЧЕСКИЙ УНИВЕРСИТЕТ имени О. Е. Кутафина (МГЮА) кафедра международного частного п...»

«СОГЛАШЕНИЕ О взаимодействии Правительства Ярославской области и областных общественных ветеранских организаций Правительство Ярославской области (далее – Правительство) в лице Губернатора Ярославской области Вахрукова Сергея Алекс...»

«1 Пояснительная записка Данная рабочая программа ориентирована на обучающихся 3класса и составлена на основании следующих нормативно-правовых документов:1. Федеральный закон от 29.12.2012 г. № 273-ФЗ "Об образов...»

«Глаголев В.С. Заветный список: Владимир Сергеевич Глаголев. [Электронный ресурс] // Заветный список. Русская исповедно-завещательная библиография влиятельные люди о влиятельных книгах. 2013. Режим доступа: http://zavetspisok.ru/glagolev.htm Глаголев Владимир Сергеевич п...»

«КОЛЫБЕЛЬ Детский православный журнал СЛОВО АРХИПАСТЫРЯ ДОРОГИЕ РЕБЯТА! Вы заметили, как с приходом весны всё вокруг стало оживать? Солнышко греет и улыбается нам всё ласковее. Земля сбрасывает снежную шубу и весело звенит ручейками. С ра...»

«Клиентоориентированная юридическая практика (некоторые аспекты). Черновик1 Типология отношений юрист-клиент – вопрос достаточно актуальный в последнее время. Кто в этих отношениях кто, как должно быть организовано продуктивное взаимодействие в целях квалифицированности юридической пом...»










 
2017 www.book.lib-i.ru - «Бесплатная электронная библиотека - электронные ресурсы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.