Sql oracle удалить поле

Обновлено: 07.07.2024

Команда ALTER TABLE применяется в SQL при добавлении, удалении либо модификации колонки в существующей таблице. В этой статье будет рассмотрен синтаксис и примеры использования ALTER TABLE на примере MS SQL Server.

SQL-оператор ALTER TABLE способен менять определение таблицы несколькими способами: • добавлением/переопределением/удалением столбца (column); • модифицированием характеристик памяти; • включением, выключением либо удалением ограничения целостности.

При этом пользователю нужно обладать системной привилегией ALTER ANY TABLE либо таблица должна находиться в схеме пользователя.

Меняя типы данных существующих columns либо добавляя их в БД-таблицу, следует соблюдать некоторые условия. Принято, что увеличение есть хорошо, а уменьшение — не очень. Существует ряд допустимых увеличений: • добавляем новые столбцы в таблицу; • увеличиваем размер столбца CHAR либо VARCHAR2; • увеличиваем размер столбца NUMBER.

Нередко перед внесением изменений следует удостовериться, что в соответствующих columns все значения — это NULL-значения. Если выполняется операция над столбцами, которые содержат данные, следует найти либо создать область временного хранения данных. Можно создать таблицу посредством CREATE TABLE AS SELECT, где извлекаются данные из первичного ключа и изменяемых columns. Существует ряд допустимых изменений: • уменьшаем размер столбца NUMBER (лишь при наличии пустого column для всех строк); • уменьшаем размер столбца CHAR либо VARCHAR2 (лишь при наличии пустого column для всех строк); • меняем тип данных столбца (аналогично, что и в первых двух пунктах).

Синтаксис ALTER TABLE на примере MS SQL Server

Рассмотрим общий формальный синтаксис на примере SQL Server от Microsoft:

Итак, используя SQL-оператор ALTER TABLE, мы сможем выполнить разные сценарии изменения таблицы. Далее будут рассмотрены некоторые из этих сценариев.

Добавляем новый столбец

Для примера добавим новый column Address в таблицу Customers:

В примере выше столбец Address имеет тип NVARCHAR, плюс для него определён NULL-атрибут. Если же в таблице уже существуют данные, команда ALTER TABLE не выполнится. Однако если надо добавить столбец, который не должен принимать NULL-значения, можно установить значение по умолчанию, используя атрибут DEFAULT:

Тогда, если в таблице существуют данные, для них для column Address добавится значение "Неизвестно".

Удаляем столбец

Теперь можно удалить column Address:

Меняем тип

Продолжим манипуляции с таблицей Customers: теперь давайте поменяем тип данных столбца FirstName на NVARCHAR(200).

Добавляем ограничения CHECK

Если добавлять ограничения, SQL Server автоматически проверит существующие данные на предмет их соответствия добавляемым ограничениям. В случае несоответствия, они не добавятся. Давайте ограничим Age по возрасту.

При наличии в таблице строк со значениями, которые не соответствуют ограничению, sql-команда не выполнится. Если надо избежать проверки и добавить ограничение всё равно, используют выражение WITH NOCHECK:

По дефолту применяется значение WITH CHECK, проверяющее на соответствие ограничениям.

Добавляем внешний ключ

Представим, что изначально в базу данных будут добавлены 2 таблицы, которые между собой не связаны:

1-1801-24e407.jpg

Теперь добавим к столбцу CustomerId ограничение внешнего ключа (таблица Orders):

Добавляем первичный ключ

Применяя определенную выше таблицу Orders, можно добавить к ней для столбца Id первичный ключ:

Добавляем ограничения с именами

Добавляя ограничения, можно указать имя для них — для этого пригодится оператор CONSTRAINT (имя прописывается после него):

2-1801-9d8180.jpg

Удаляем ограничения

Чтобы удалить ограничения, следует знать их имя. Если с этим проблема, имя всегда можно определить с помощью SQL Server Management Studio:

3-1801-68d176.jpg

Следует раскрыть в подузле Keys узел таблиц, где находятся названия ограничений для внешних ключей (названия начинаются с «FK»). Обнаружить все ограничения DEFAULT (названия начинаются с «DF») и CHECK («СК») можно в подузле Constraints.

Из скриншота видно, что в данной ситуации имя ограничения внешнего ключа (таблица Orders) имеет название "FK_Orders_To_Customers". Здесь для удаления внешнего подойдёт такое выражение:

ALTER TABLE: команда изменения структуры таблиц в Oracle

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

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

Теория и практика

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

Все эти команды объединяет то, что они начинаются с ключевой команды ALTER TABLE .

Добавление колонки

Добавляем новую колонку к нашей таблице.

Синтаксис:

TABLE_NAME – наименование таблицы.

Column_NAME – наименование колонки.

Column_type – тип данных колонки ( VARCHAR (n) или NUMBER или DATE ).

Примеры:

Пусть у нас есть таблица GOODS, необходимо добавить колонку itemprice типа NUMBER , цена изделия.

Пусть у нас есть таблица MANS, необходимо добавить колонку DATEreg типа DATE , дата регистрации, и колонку patronymic – отчество VARCHAR2 (50) .

Удаление колонки

Также мы можем удалить колонку из заданной таблицы с помощью специальной SQL-команды DROP COLUMN .

Синтаксис:

Примеры:

Пусть у нас есть таблица GOODS, необходимо удалить колонку COLOR .

Пусть у нас есть таблица MANS, необходимо удалить колонку YEAROLD .

Меняем тип данных для колонки таблицы.

Синтаксис изменения типа колонки:

Сolumn_NAME – наименование колонки.

Data_type – тип данных колонки ( VARCHAR (n) или NUMBER или DATE ).

Примеры:

– заменить в таблице MANS тип поля NAME на VARCHAR2 (90) ;

– заменить в таблице GOODS тип поля INSERT_DATE на DATE;

Удаление таблицы из базы данных Oracle

Синтаксис команды SQL для удаления таблицы:

Здесь TABLE_NAME – наименование таблицы.

Примеры:

– удалить таблицу DOC ;

– удалить таблицу ITEMS ;

– удалить таблицу BILLING_PERIOD со связанными данными в таблице PERIODS.

Важные замечания

  1. При выполнении действий по изменению структуры таблицы следует быть особенно осторожным, следует тщательно взвешивать свои действия: восстановление таблицы в прежнем виде может быть затруднительно или невозможно.
  2. Если вы используете команды изменения типов данных и встречаетесь с ошибкой ORA-01439 , модифицируемый столбец при смене типа данных должен быть пуст. Сохраните данные в столбце и используйте специальные преобразования, о которых будет рассказано в следующих шагах.
  3. В некоторых случаях удаление таблицы или колонки таблицы будет запрещено, поскольку могут быть еще таблицы со связанными данными. Требуется сначала удалить данные в связанных таблицах, а уже затем удалять таблицу либо колонку. Или же воспользоваться специальной командой DROP CASCADE.

Возможные вопросы

Да, вполне, и для этого есть две команды:

Универсальный же синтаксис предполагает использование ALTER TABLE .

Примеры:

Переименуем таблицу с названием STAFF в EMP:

Переименуем таблицу с названием TRADES в TRADE:

Можно ли переименовать столбец в таблице?

Да, синтаксис команды:

Пример:

Переименовать колонку с наименованием NAME в таблице STAFF в колонку LASTNAME :

Как удалить столбец из таблицы на SQL в Microsoft SQL Server

Удаление столбцов на SQL в Microsoft SQL Server

Столбцы в Microsoft SQL Server удаляются с помощью инструкции ALTER TABLE и команды DROP COLUMN.

DROP COLUMN – команда SQL для удаления столбца из таблицы.

Microsoft SQL Server поддерживает удаление нескольких столбцов одной таблицы в одной инструкции SQL, в примерах ниже мы рассмотрим такой случай.

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

Примеры удаления столбцов в Microsoft SQL Server на SQL

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

Исходные данные для примеров

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

SQL код создания тестовых данных

Скриншот 1

Удаление одного столбца

Допустим, что у нас возникла необходимость удалить столбец description из таблицы products, для этого мы пишем инструкцию ALTER TABLE, указываем название таблицы, затем пишем команду DROP COLUMN и указываем столбец, который подлежит удалению.

Итоговая SQL инструкция выглядит следующим образом.

Скриншот 2

Как видим, столбца больше нет.

Заметка! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.

Удаление нескольких столбцов

А теперь давайте представим, что нам нужно удалить сразу два столбца, например, price и type_id из этой же таблицы products.

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

Оператор DELETE удаляет строки из временных или постоянных базовых таблиц, представлений или курсоров, причем в двух последних случаях действие оператора распространяется на те базовые таблицы, из которых извлекались данные в эти представления или курсоры. Оператор удаления имеет простой синтаксис:


Если предложение WHERE отсутствует, удаляются все строки из таблицы или представления (представление должно быть обновляемым). Более быстро эту операцию (удаление всех строк из таблицы) можно в Transact-SQL (T-SQL) — процедурное расширение языка SQL, используемое для программирования на стороне сервера в Microsoft SQL Server и Sybase ASE. Transact-SQL также выполнить с помощью команды

Однако есть ряд особенностей в реализации команды TRUNCATE TABLE , которые следует иметь в виду:

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

Требуется удалить из таблицы Laptop все портативные компьютеры с размером экрана менее 12 дюймов.

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

Transact-SQL расширяет синтаксис оператора DELETE , вводя дополнительное предложение FROM :

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

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

Пусть требуется удалить те модели ПК из таблицы Product, для которых нет соответствующих строк в таблице PC.

Используя стандартный синтаксис, эту задачу можно решить следующим запросом:

Заметим, что предикат type = 'pc' необходим здесь, чтобы не были удалены также модели принтеров и портативных компьютеров.

Эту же задачу можно решить с помощью дополнительного предложения FROM следующим образом:

Читайте также: