Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / L23 / Лекции 2_3.doc
Скачиваний:
44
Добавлен:
16.04.2013
Размер:
119.3 Кб
Скачать
  • Oracle – реляционная СУБД => её основа SQL (sequel) структурированный английский язык запросов

  • SQL*PLUS – основной инструмент всех версий Oracle. (Может и весьма старый, но основной).

sqlplus userid/password@dblink file_name input_var

  • PL/SQL – процедурный язык Oracle с входящими в него операторами SQL

  • Буфер SQL – рабочая область, применяемая в среде SQL*PLUS

    • Строки в буфере нумерованы

    • Есть текущая строка

    • Команды буфера

Схема взаимодействия пользователя через среду SQL*PLUS

…………………………………………………………………….

A или APPEND new_text

Добавить к концу текущей строки

C или CHANGE/старый_текст/новый_текст/

Заменить подстроку в текущей строке буфера

Del

Удалить текущую подстроку из буфера

ED или EDIT [file_name]

Вызвать текстовый редактор и передать в него буфер, либо указанный файл

Get file_name

Считать указанный файл в буфер

I или Input text

Вставляет дополнительную строку с текстом после текущей строки

L или LIST number или nn1 nn2

Отображает содержимое строки number, либо строк от nn1 до nn2.

SAVE file_name

Сохраняет содержимое буфера в файле

START file_name par1 par2… или @file_name par1 par2…

Загрузить файл в буфер и выполнить его с параметрами

/ (косая черта)

Вызывает на выполнение содержимое буфера (ставится в отдельной строке)

Пример создания объектов

SQL

DDL

DML

DCL

DQL

CREATE

RENAME

ALTER

DROP

INSERT

UPDATE

DELETE

MERGE

SELECT

COMMIT

ROLLBACK

GRANT

REVOKE

SELECT

Data Definition Language – язык описания данных,

Data Manipulation Language язык манипулирования данными,

Data Control Language – язык управления данными,

Data Query Language – язык выборки данных

Примерный синтаксис оператора SELECT

(язык выборки данных)

SELECT * or column-name [alias] [,column-name [alias] [, …] or [function] or [arithmetic expression]

FROM table-name [, table-name [, …] or [sub-query]

[WHERE [conditional-statement] or [sub-query] ]

[GROUP BY column-name[alias][,column-name[alias] [,…]] ]

[HAVING [conditional-statement] or [sub-query] ]

[ORDER BY column-name [alias] [, column-name [alias] [, …] ] [DESCENDING or ASCENDING] ]

где column-name – это может (а иногда и должно) быть выражение имя-таблицы.имя-столбца .

Операторы сравнения значений

=

!= или <>

>

<

>=

<=

Конструкции, используемые вместо операторов сравнения

IN (list)

Равно любому элементу в списке

BETWEEN значение AND значение

Включительно в диапазоне

значение AND / OR значение

Логическая функция/связка

LIKE ‘шаблон’

Сравнить текст по шаблону

IS NULL

Проверка отсутствия данных

NOT (конструкция)

Логическое отрицание

-- ---------- Выбор записей по группе допустимых значений

SELECT * FROM product

WHERE price = 50 OR price = 99;

SELECT * FROM product

WHERE price IN (50,99);

-- ---------- Выбор записей по интервалу допустимых значений

SELECT * FROM product

WHERE price > 50 AND price < 99;

SELECT * FROM product

WHERE price BETWEEN 50 AND 99;

-- ----------------- Использование шаблонов

SELECT * FROM product WHERE name LIKE ‘Chrome%’;

SELECT * FROM product WHERE name LIKE ‘%Chrome%’;

SELECT * FROM product WHERE name LIKE ‘%W_d%’;

-- ------------------ Выбор записей по null-значаниям

SELECT * FROM product WHERE last_date IS NULL;

SELECT * FROM product WHERE last_date IS NOT NULL;

D M L

Примерный синтаксис оператора INSERT

Insert into table-name[column-name[,column-name [,…]]

[VALUES (data [, date [, …] ])]

or

[SELECT …]

Начиная с версии 9i допускается многотабличная модификация оператора

INSERT ALL|FIRST

WHEN (condition_1) THEN

INTO table-name_1[column-name[,column-name [,…]]

[VALUES (sub-list_1 of sub-query_column_list)]

WHEN (condition_2) THEN

INTO table-name_2[column-name[,column-name [,…]]

[VALUES (sub-list_2 of sub-query_column_list)]

. . . . .

ELSE

INTO table-name_n[column-name[,column-name [,…]]

[VALUES (sub-list_n of sub-query_column_list)]

SELECT sub-query_column_list FROM query_table

При выполнении, прежде всего, выполняется подзапрос задаваемый оператором SELECT. Далее проверяются условия в блоках WHEN, для случая ALL проверяются все блоки, а в случае FIRST проверка прекращается при первом удовлетворении условия. Вставки производятся для всех таблиц входящих в блоки удовлетворяющие условию.

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

Примерный синтаксис оператора UPDATE

UPDATE table-name

SET column-name = new_value

[,column-name = new_value]

[,column-name = new_value]

. . . . .

[WHERE [conditional-statement] or [sub-query] ]

где new-value - значение или результат выполнения подзапроса, при этом подзапрос следует заключить в скобки. Если этот подзапрос возвращает несколько полей, то column-name должен быть аналогичным списком полей заключённым в скобки.

Примерный синтаксис оператора DELETE

DELETE FROM table-name

[WHERE [conditional-statement] or [sub-query] ];

Примерный синтаксис оператора TRUNCATE

TRUNCATE TABLE table-name;

Эта команда необратима, откаты после неё не работают

В версии 9i добавлен оператор MERGE, он позволяет объединить действия операторов INSERT и UPDATE. Синтаксис:

MERGE INTO таблица

USING источник_данных ON (условие)

WHEN MATCHED THEN update-предложение

WHEN NOT MATCHED THEN insert-предложение;

где источник данных – как правило, подзапрос.

При выполнении, для каждой строки источника проверяется условие, заданное в предложении ON; если условие истинно, то выполняется update-предложение, иначе выполняется insert-предложение.

D C L

Основные инструкции управления транзакциями.

COMMIT [WORK][COMMENTтекст’ | FORCEтекст’[,n]];

Здесь, WORK – только для красоты. FORCE – принудительно завершает зависшую распределённую транзакцию. Длина текста до 50 символов.

ROLLBACK [TO [SAVEPOINT] savepoint-name];

SAVEPOINT [savepoint-name];

D D L

Предназначен для создания разнообразных объектов, таких как:

  • Таблицы

  • Индексы

  • Представления

  • Последовательности

  • Типы данных, определяемые пользователем

  • Синонимы

  • Кластеры

  • Ограничения

  • Табличные пространства

  • Секции

  • Триггеры, пакеты, процедуры, функции

Соседние файлы в папке L23