В этом руководстве вы узнаете, как использовать оператор SQL Server ALTER TABLE DROP для удаления одного или нескольких столбцов из существующей таблицы.
Введение в SQL Server ALTER TABLE DROP COLUMN
Иногда вам нужно удалить один или несколько неиспользуемых или устаревших столбцов из таблицы. Для этого используйте оператор ALTER TABLE DROP COLUMN следующим образом:
ALTER TABLE table_name DROP COLUMN column_name;
В этом синтаксисе:
- Сначала укажите имя таблицы, из которой вы хотите удалить столбец.
- Во-вторых, укажите имя столбца, который вы хотите удалить.
Если столбец, который вы хотите удалить, имеет ограничение CHECK, вы должны сначала удалить ограничение, прежде чем удалять столбец. Кроме того, SQL Server не позволяет вам удалять столбец, имеющий ограничение PRIMARY KEY или FOREIGN KEY.
Если вы хотите удалить несколько столбцов одновременно, используйте следующий синтаксис:
ALTER TABLE table_name DROP COLUMN column_name_1, column_name_2,...;
В этом синтаксисе вы указываете столбцы, которые хотите удалить, в виде списка столбцов, разделенных запятыми, в предложении DROP COLUMN.
Примеры SQL Server ALTER TABLE DROP COLUMN
Давайте создадим новую таблицу с именем sales.price_lists для демонстрации.
CREATE TABLE sales.price_lists( product_id int, valid_from DATE, price DEC(10,2) NOT NULL CONSTRAINT ck_positive_price CHECK(price >= 0), discount DEC(10,2) NOT NULL, surcharge DEC(10,2) NOT NULL, note VARCHAR(255), PRIMARY KEY(product_id, valid_from) );
Следующий оператор удаляет столбец примечаний из таблицы price_lists:
ALTER TABLE sales.price_lists DROP COLUMN note;
Столбец цен имеет ограничение CHECK, поэтому вы не можете его удалить. Если вы попытаетесь выполнить следующий оператор, вы получите ошибку:
ALTER TABLE sales.price_lists DROP COLUMN price;
Вот сообщение об ошибке:
The object 'ck_positive_price' is dependent on column 'price'.
Чтобы удалить столбец цен, сначала удалите его ограничение CHECK:
ALTER TABLE sales.price_lists DROP CONSTRAINT ck_positive_price;
А затем удалите столбец цены:
ALTER TABLE sales.price_lists DROP COLUMN price;
В следующем примере удаляются сразу два столбца: скидка и надбавка:
ALTER TABLE sales.price_lists DROP COLUMN discount, surcharge;
В этом руководстве вы узнали, как использовать оператор SQL Server ALTER TABLE DROP COLUMN для удаления одного или нескольких столбцов из таблицы.