Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кожин / Лекции / Лекция 05 create_table.DOC
Скачиваний:
32
Добавлен:
20.03.2016
Размер:
233.47 Кб
Скачать
      1. Удаление таблицы

Оператор удаления таблицы Oracleиспользует сле­дующий синтаксис:

DROPTABLE[имя_схемы.] имя_таблицы

[ CASCADECONSTRAINTS]

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

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

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

      1. Ввод данных в таблицы

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

INSERT INTO имя_таблицы [( имя_столбца [, имя_столбца ...] ) ]

VALUES (выражение [,выражение ...])

Например

INSERT INTO tabl1 (n1,n4) VALUES (1,’fff’);

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

      1. Проверка содержимого таблиц

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

SELECT * FROM VVV;

где VVV имя таблицы

      1. Модификация данных в таблице осуществляется командой

UPDATE имя_таблицы SET имя_столбца = выражение,…

[WHERE условие ]

Например:

UPDATE tabl1 SET n1=5 WHERE n1=1 ;

      1. Удаление строк из таблицы

    1. DELETE

Удаление строк из таблицы.

Вы должны быть владельцем таблицы, иметь приви­легию DBA или иметь для данной таблицы привилегию DELETE.

DELETE [FROM] [user.]table [alias] [WHERE condition]

user владелец таблицы.

table имя таблицы или обзора, из которых удаляются строки.

alias алиас, назначенный таблице, который используется в общем слу­чае - при коррелированных запросах внутри оператора DELETE.

condition условие, следующее соглашениям по написанию условий (детально описаны в Главе 3 "Элементы язы­ка SQL"). Condition должно при­водить к результату TRUE или FALSE.

Если отсутствует фраза WHERE, из таблицы удаляют­ся все строки. Если же эта фраза используется, удаляются строки, для которых условие condition дает TRUE. Условие может ссылаться на адресуемую таблицу или включать в себя коррелированный зап­рос.

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

Чтобы удалить все строки из таблицы TEMP_ASSIGN, введите:

DELETEFROMTEMP_ASSIGN

Чтобы удалить из таблицы EMP всех продавцов, по­лучивших в последнем месяце менее 100 долларов комиссионных, наберите следующую команду:

DELETE FROM EMP

WHERE JOB = 'SALESMAN'

AND COMM < 100

DELETE (Встроенный SQL)

Удаление строк из таблицы или обзора. Синтаксис встроенного DELETE отличается от синтаксиса стан­дартного SQL - оператора DELETE во фразах AT, FOR, CURRENT OF и host - переменными.

Вы должны быть владельцем таблицы или иметь к ней привилегию DELETE, или иметь привилегию DBA.

EXEC SQL [AT dbname] [FOR :host_integer]

DELETE [FROM] table [alias]

[WHERE condition | CURRENT OF cursor]

AT dbname необязательная фраза, вводящая имя неумалчиваемой межбазовой связи, ранее назначенной с по­мощью оператора DECLARE DATABASE.

FOR :host_integer специфицирует минимальное коли­чество итераций оператора DELETE, когда во фразе WHERE ис­пользуются массивы.

FROM table указывает имя таблицы или обзора, из которых Вы намереваетесь удалять строки.

alias алиас, назначенный таблице, который используется в общем слу­чае - при коррелированных запросах внутри оператора DELETE.

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

condition логическое выражение, которое может содержать ссылки на host - переменные или host - массивы. См. также определение синтаксиса condition в Главе 4 - "Операции и функции".

cursor используется для именования курсора, определенного в операторе DECLARE CURSOR. До выполнения оператора DELETE с фразой CURRENT OF курсор должен быть открыт и позиционирован на стро­ку.

Если в качестве host - переменных в операторе WHERE указаны массивы, оператор DELETE выполняет­ся лишь однажды для всего набора компонентов мас­сива. Каждое выполнение оператора DELETE может удалить ноль, одну или более строк.

Если какая-либо host - переменная, используемая во фразе WHERE, является массивом, значит все host - переменные должны быть массивами. Массивы могут быть различного размера, но число обрабаты­ваемых компонентов определяется размером мини­мального.

Если ни одна строка не удовлетворяет условию, ни одной строки удалено не будет и SQLCODE вернет условие NOT_FOUND.

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

Если фраза WHERE опущена, это отмечается выстав­лением флажка в 5-й компоненте SQLWARN (SQLCA). Описание SQLCODE, ORACLE.SQLROWS и SQLCA приво­дится в "Руководстве программиста по прекомпиля­торам ORACLE" и в "Дополнении к руководству по прекомпиляторам ORACLE" для каждого конкретного языка программирования.

Примеры Следующие примеры демонстрируют использование оператора DELETE:

EXEC SQL DELETE FROM EMP

WHERE DEPTNO = :deptno

AND SAL :sal;

EXEC SQL DECLARE C1 CURSOR

FOR SELECT ...;

EXEC SQL FETCH C1

INTO ...;

EXEC SQL DELETE FROM EMP

WHERECURRENTOFC1;

Удаление строк из таблицы осуществляется командой

DELETE FROM имя_таблицы | имя_представления [@имя_связиБД ]

WHERE условие

Например :

DELETE FROM tabl1 WHERE n4=’fff’;

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