Sql удалить столбец в таблице: Как удалить столбец из таблицы на SQL в Microsoft SQL Server | Info-Comp.ru

Содержание

Как в таблице Paradox SQL-запросом удалить столбец

 
lovres
 
(2004-03-11 08:35)
[0]

В таблице имеются 2 лишних столбца, которые надо удалить, подскажите как. Заранее спасибо.


 
Anatoly Podgoretsky ©
 
(2004-03-11 08:51)
[1]

Пока ждешь ответа, уже смог бы из удалить с помощью Database Desktop


 
lovres ©
 
(2004-03-11 08:55)
[2]

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


 
DenK_vrtz ©
 
(2004-03-11 09:00)
[3]

>lovres ©
>но это надо делать время от времени не квалифицированному персоналу

уверены, что это правильное решение? за последствия не боитесь?

тогда см. ALTER TABLE


 
lovres ©
 
(2004-03-11 09:20)
[4]

вот я и прошу мне синтаксис подсказать 🙂
как в MS SQL я знаю, а тут как-то по-другому немного, подскажите


 
DenK_vrtz ©
 
(2004-03-11 09:23)
[5]

>lovres ©   (11.03.04 09:20) [4]

ALTER TABLE table DROP column_name


 
lovres ©
 
(2004-03-11 09:42)
[6]

так и писал
alter table gorod drop column _video
нифига…
может что в кавычки взять надо?


 
DenK_vrtz ©
 
(2004-03-11 09:48)
[7]

🙂
и чего говорит?


 
VAleksey ©
 
(2004-03-11 09:55)
[8]

Может «video» без «_» :-))

LocalSQL. hlp


 
Val ©
 
(2004-03-11 10:01)
[9]

но это надо делать время от времени не квалифицированному персоналу
я так понимаю, имеется ввиду программист?


 
Alex_Bredin ©
 
(2004-03-11 10:23)
[10]

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


 
lovres ©
 
(2004-03-11 10:59)
[11]

Нет, не программист, но он должен нажать кнопку и проверить всё ли работает и если нет, позвонить мне. Делать это мне каждый день времени и желания нет
> DenK_vrtz ©   Говорит ошибка в tokene _video


> VAleksey ©  
Нет, этот символ присутствует в названии поля


 
Reindeer Moss Eater ©
 
(2004-03-11 11:02)
[12]

так и писал
alter table gorod drop column _video
нифига. ..
может что в кавычки взять надо?

Кавычки не нужны.
Нужен монопольный доступ к файлу таблицы.


 
DenK_vrtz ©
 
(2004-03-11 11:03)
[13]

>lovres ©   (11.03.04 10:59) [11]

а сам текст ошибки трудно привести?
еще настораживает пробел в tokene _video


 
Vlad ©
 
(2004-03-11 11:03)
[14]


> lovres ©   (11.03.04 09:42) [6]
> может что в кавычки взять надо?

Ну наверно надо, вот строчка из хелпа по LocalSQL:

The statement below deletes the column FULLNAME and adds the column LASTNAME.
ALTER TABLE «names.db»
DROP fullname, ADD lastname CHAR(25)


 
lovres ©
 
(2004-03-11 11:15)
[15]

Спасибо, Vlad, кавычек именно и не доставало, как чувствовал


Изменение структуры таблицы.

Удаление таблиц

Похожие презентации:

Базы данных и язык SQL

Базы данных. Access

Базы данных. Системы управления базами данных

Базы данных. Access 2007

Язык SQL

Системы управления базами данных (СУБД)

SQL. Базовый курс

Управление данными

Базы данных. Введение

Системы управления базами данных (СУБД)

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

Цель: изучить инструкции SQL по
изменению структуры таблицы и
удалению таблиц

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

функции:
Добавить в таблицу новый столбец;
Удалить столбец из таблицы;
Изменить значение по умолчанию;
Добавить или удалить первичный ключ,
внешний ключ, условие уникальности.

3. Обобщенный синтаксис команды ALTER TABLE:

ALTER TABLE<имя_таблицы>
[ALTER COLUMN<имя_столбца>- изменяет существующий
столбец.
[SET DEFAULT<выражение>]|- устанавливает значение
по
умолчанию.
[DROP DEFAULT]]- удаляет значение по умолчанию.
|[ADD <определение_столбца>]- добавляет новый столбец.
|[DROP COLUMN <имя_столбца>- удаление столбца
|[ADD [<определение_первичного_ключа>]-добавляем
первичный ключ.
|[<определение_внешнего_ключа>]- добавляем внешний
ключ.
|[<условие_уникальности>]- уникальность на столбец.
|[<условие_на_значение>]]- условие на значение.
|[DROP CONTRAINT <имя_ограничения>
Изменение существующего столбца
невозможно, если на столбец наложено
ограничение первичного или внешнего ключа,
условие уникальности или ограничение
CHECK, если со столбцом связано значение
по умолчанию.
Изменение столбца с ограничениями CHECK/
UNIQUE допускается, если тип данных
начинается с VAR.
Если со столбцом связано значение по
умолчанию, то допускается изменение
длины, общего количества цифр или цифр,
указанных после запятой.

5. Примеры:

Добавить в таблицу Студент столбец
год_поступления.
ALTER TABLE Студент ADD
год_поступления INT (4) NOT NULL
Удалить столбец Год_поступления из
таблицы Студент
ALTER TABLE Студент DROP COLUMN
Год_поступления
создать в таблице Оценка первичный ключ,
состоящий из столбцов Код_предмета
и Код_студента.
ALTER TABLE Оценка
ADD CONSTRAINT PK_OZ PRIMARY KEY
(код_предмета, код_студента)
Добавить в таблицу Студент столбец
Отделение, причем осуществить
выбор из трех значений: 230113,
230115, 230401
ALTER TABLE Студент
ADD Отделение INT (6)
CONSTRAINT вид_отделения CHECK
(отделение IN (230113, 230115, 230401))

9. Изменить в таблице у столбца номер_ карты тип данных

ALTER TABLE Пациент ALTER COLUMN номер_ карты
smallint

10. Удалить ограничение внешнего ключа из таблицы Пациент.

ALTER TABLE Пациент DROP CONSTRAINT FK_код_у

11. Добавить ограничение внешнего ключа на столбец код_участка в дочерней таблице.

( Родительская таблица – участок, первичный ключ


код_участка).
ALTER TABLE Пациент ADD CONSTRAINT FK_код_у
FOREIGN KEY (код_участка) REFERENCES участок
(код_участка)

12. Добавление ограничения по умолчанию “Иванов” для атрибута ФИО

ALTER
TABLE
Пациент
ADD CONSTRAINT DEF
DEFAULT
‘Иванов’ FOR ФИО

13. Добавление ограничения Unique для атрибута телефон

14. Удаление таблиц.

DROP TABLE <имя_таблицы>
Прежде чем удалить таблицу, необходимо
ее закрыть и удалить из нее все
данные.
Нельзя удалить зависимую таблицу,
необходимо сначала удалить главные
таблицы от которых будет зависеть
данная таблица, а потом саму таблицу.

English    
Русский
Правила

SQL DROP COLUMN для начинающих

В SQL, если вы хотите удалить столбец из таблицы, вам нужно использовать оператор ALTER TABLE с предложением DROP COLUMN .

Это удаляет столбец и все его данные.

Синтаксис

Синтаксис выглядит следующим образом:

 ALTER TABLE имя_таблицы
УДАЛИТЬ КОЛОННУ имя_столбца; 

Некоторые СУБД принимают необязательный аргумент IF EXISTS , что означает, что он не будет возвращать ошибку, если столбец не существует.

Некоторые СУБД также принимают необязательные аргументы CASCADE и RESTRICT , которые указывают, что делать, если столбец имеет какие-либо зависимости. Подробнее об этом см. ниже.

Пример

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

 ALTER TABLE Продукты
DROP COLUMN ProductDescription; 

Удаляет столбец ProductDescription из таблицы Products .

ЕСЛИ СУЩЕСТВУЕТ Аргумент

В зависимости от вашей РСУБД вы можете использовать IF EXISTS аргумент, который условно удаляет столбец, только если он уже существует.

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

Пример:

 ALTER TABLE Продукты
УДАЛИТЬ КОЛОНКУ, ЕСЛИ СУЩЕСТВУЕТ ProductDescription; 

Ограничить изменение

В зависимости от вашей СУБД вы можете использовать аргументы CASCADE и RESTRICT , чтобы указать, что делать, если столбец имеет какие-либо зависимости, такие как внешние ключи или представления.

RESTRICT обычно является поведением по умолчанию, поэтому, если вы не укажете какой-либо из этих аргументов, СУБД откажется удалить столбец, если есть какие-либо зависимые объекты.

Пример:

 ALTER TABLE Продукты
DROP COLUMN ProductDescription RESTRICT; 

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

Вот ошибка, которую я получаю в PostgreSQL при попытке удалить таблицу, на которую ссылается представление:

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

Каскадное изменение

Использование параметра CASCADE приведет к удалению всех зависимых объектов.

Вот что произойдет, если я изменю предыдущий пример на CASCADE :

 ALTER TABLE Products
КОЛОННА КАПЕЛЬ Описание продукта КАСКАД; 

Результат:

 ВНИМАНИЕ: сброс каскадов для просмотра vproducts
Команды выполнены успешно 

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

CASCADE и RESTRICT поддерживаются в PostgreSQL, но не в SQL Server или MySQL. Оба ключевых слова можно использовать в MariaDB, но они не имеют никакого эффекта.

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

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

Некоторые RDBM позволяют удалять несколько столбцов в рамках одного оператора ALTER TABLE . Синтаксис варьируется в зависимости от СУБД.

В SQL Server вы можете просто перечислить каждый столбец, разделенный запятой:

 ALTER TABLE t1
КОЛОНКА С1, С2; 

В других СУБД (таких как MySQL и PostgreSQL) вам нужно будет переписать DROP COLUMN для каждого столбца:

 ALTER TABLE t1
КОЛОНКА С1, КОЛОНКА С2; 

Обратите внимание, что этот синтаксис является расширением SQL и не соответствует стандарту SQL, предусматривающему наличие только одного предложения DROP на оператор ALTER TABLE .

Удалить последний столбец

Некоторые RDBM позволяют удалить последний столбец в таблице, в результате чего остается пустая таблица без столбцов. Это расширение стандарта SQL (который не допускает таблицы без столбцов).

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

 ИЗМЕНЕНИЕ ТАБЛИЦЫ t1
УДАЛИТЬ КОЛОННУ c3; 

Результат:

 Команды выполнены успешно 

Но в SQL Server, если я сделаю то же самое:

 ALTER TABLE t1
КОЛОНКА С1, С2, С3; 

Результат:

 Сообщение 4923, уровень 16, состояние 1, строка 1
ALTER TABLE DROP COLUMN не удалось, поскольку "c3" является единственным столбцом данных в таблице "t1".  В таблице должен быть хотя бы один столбец данных. 

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

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

MySQL также отказывается удалять последний столбец в таблице.

Если вы хотите удалить таблицу, используйте DROP TABLE .

Ограничения для СУРБД

Хотя базовый синтаксис DROP COLUMN очень похож на большинство основных СУРБД, каждая СУРБД имеет свои собственные ограничения на то, когда столбец будет или не будет удален.

Вот некоторые ограничения некоторых основных СУБД.

SQL Server

Столбец не может быть удален, если он:

  • Используется в индексе как ключевой столбец или как INCLUDE
  • Используется в CHECK , 9000 3 ВНЕШНИЙ КЛЮЧ , UNIQUE или PRIMARY KEY ограничение.
  • Связан со значением по умолчанию, определенным с помощью ключевого слова DEFAULT , или привязан к объекту по умолчанию.
  • Привязано к правилу.

Источник для SQL Server: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql

MySQL

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

Источник для MySQL: https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

PostgreSQL

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

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

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

Источник для PostgreSQL: https://www.postgresql.org/docs/current/sql-altertable.html

SQLite

SQLite не поддерживает столбец DROP COLUMN 9Синтаксис 0004. Вы не можете удалить столбец в SQLite.

Если вам нужно удалить столбец в SQLite, рекомендуется выполнить 12-шаговый процесс, рекомендованный в документации по SQLite.

Источник для SQLite: https://sqlite.org/lang_altertable.html#otheralter

MariaDB

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

Начиная с версии MariaDB 10.2.8, удаление столбца, который является частью многостолбцового ограничения UNIQUE , не разрешено.

MariaDB принимает RESTRICT и CASCADE , чтобы упростить перенос из других систем баз данных, но в MariaDB они ничего не делают.

MariaDB 10.4.0 поддерживает мгновенный DROP COLUMN . DROP COLUMN индексированного столбца означает DROP INDEX (и в случае не- UNIQUE многоколоночный индекс, возможно ADD INDEX ). Они не будут разрешены с ALGORITHM=INSTANT , но, в отличие от предыдущего, они могут быть разрешены с ALGORITHM=NOCOPY .

Источник для MariaDB: https://mariadb.com/kb/en/alter-table/#drop-column

SQL Удалить столбец из таблицы

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

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

Как удалить столбец из таблицы

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

$ sudo systemctl status mysql

Если он не запущен, используйте systemctl для его запуска.

$ sudo systemctl start mysql

Давайте откроем MySQL в командной строке с помощью приведенной ниже команды.

$ mysql -u root -p

В этом руководстве мы будем использовать базу данных linuxhint . Итак, выберите свою базу данных с помощью команды use.

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

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

Пока что мы можем проверить состояние нашей таблицы, используя ВЫБОР * команда. На изображении ниже вы заметите, что у нас есть разные столбцы и значения, которые мы вставили в столбцы.

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

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

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

$ ALTER TABLE имя_таблицы DROP COLUMN имя_столбца;

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

$ ALTER TABLE пользователи DROP COLUMN фамилия;

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

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