
- •Работа с таблицами в системе управления базами данных oracle
- •Типы данных Oracle
- •Строки символов
- •Числовые типы
- •Двоичные данные
- •Дата и время
- •Преобразование типов данных
- •Правила сравнения типов данных
- •Значения Null
- •Псевдостолбцы
- •Объекты базы данных
- •Создание таблиц
- •Ограничения для таблиц и столбцов
- •Alter table
- •Удаление таблицы
- •Ввод данных в таблицы
- •Удаление таблицы
- •Представление
- •Индексы
- •Create sequence
- •Create synonym
- •Индексы
- •Работа с индексами
- •Явные и неявные индексы
- •Изменение индекса
- •Удаление индексов
- •Битовые индексы
- •Кластеры
- •Создание кластеров
- •Удаление кластеров
Удаление таблицы
Оператор удаления таблицы Oracleиспользует следующий синтаксис:
DROPTABLE[имя_схемы.] имя_таблицы
[ CASCADECONSTRAINTS]
При удалении таблицы автоматически удаляются ее индексы, даже если они были созданы другим пользователем, а также привилегии, предоставленные для оперирования с этой таблицей. Представления и синонимы, ссылающиеся на данную таблицу, не удаляются, но помечаются как ошибочные. Процедуры и функции, в которых есть ссылки на данную таблицу, не удаляются, но отмечаются сервером как неисполнимые (ошибочные). Представления, синонимы, процедуры и функции вновь становятся актуальными, если таблица создается заново.
Естественно вместе с таблицей удаляются все хранимые в ней данные. Если таблица не входит в кластер, вся принадлежавшая ей память, включая индексы, возвращается в табличное пространство.
Если указано ключевое слово CASCADECONSTRAINTS, то удаляются все ограничения целостности, ссылающиеся на первичные и уникальные ключи данной таблицы. Если такие ссылки существуют, а ключевое словоCASCADECONSTRAINTSне указано, то удаление таблицы не выполняется, и сервер возвращает сообщение об ошибке. Перед удалением таблицы рекомендуется определить через представление словаря данныхUSER_CROSS_REFSзависимости других таблиц от данной таблицы.
Ввод данных в таблицы
Ввод данных в таблицу осуществляется командой
INSERT INTO имя_таблицы [( имя_столбца [, имя_столбца ...] ) ]
VALUES (выражение [,выражение ...])
Например
INSERT INTO tabl1 (n1,n4) VALUES (1,’fff’);
Список столбцов и значений должен быть согласован. Поля с первичным ключом должны вводиться в обязательном порядке.
Проверка содержимого таблиц
для проверки содержимого таблиц можно использовать команду
SELECT * FROM VVV;
где VVV имя таблицы
Модификация данных в таблице осуществляется командой
UPDATE имя_таблицы SET имя_столбца = выражение,…
[WHERE условие ]
Например:
UPDATE tabl1 SET n1=5 WHERE n1=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’;