首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Server中使用单个ALTER语句删除多个列?

问如何在Server中使用单个ALTER语句删除多个列?
EN

Stack Overflow用户
提问于 2011-06-14 15:32:34
回答 11查看 524.9K关注 0票数 361

我想编写一个SQL命令,以便在一个ALTER TABLE语句中从一个表中删除多个列。

从MSDN的ALTER文档..。

删除{约束constraint_name列column_name } 指定从表中删除constraint_name或column_name。如果兼容性级别为65或更高,则不允许删除列。可以列出多个列和约束。

它说,可以在语句中列出多列,但是语法没有显示可选逗号或任何提示语法的内容。

我应该如何写我的SQL,以便在一个语句中删除多个列(如果可能)?

EN

回答 11

Stack Overflow用户

发布于 2013-09-01 23:45:56

总结

甲骨文

代码语言:javascript
复制
ALTER TABLE table_name DROP (column_name1, column_name2);

MS SQL Server

代码语言:javascript
复制
ALTER TABLE table_name DROP COLUMN column_name1, column_name2

MySQL

代码语言:javascript
复制
ALTER TABLE table_name DROP column_name1, DROP column_name2;

PostgreSQL

代码语言:javascript
复制
ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2;

注意

DROP COLUMN不会物理地删除某些DBMS的数据。例如对于MS SQL。对于固定长度的类型(int、数值、浮点数、日期时间、unique标识符等),即使在删除列之后添加的记录,也会占用空间。为了摆脱浪费的空间,做ALTER TABLE ... REBUILD吧。

票数 222
EN

Stack Overflow用户

发布于 2011-06-14 15:36:48

代码语言:javascript
复制
create table test (a int, b int , c int, d int);
alter table test drop column b, d;

请注意,DROP列不会实际删除数据,对于固定长度的类型(int、数值、浮点数、日期时间、unique标识符等),即使在删除列之后添加的记录,也会占用空间。为了摆脱浪费的空间,做ALTER TABLE ... REBUILD吧。

票数 42
EN

Stack Overflow用户

发布于 2013-03-11 05:55:44

这可能是晚了,但分享给访问这个问题的新用户。要删除多列,实际语法是

代码语言:javascript
复制
alter table tablename drop column col1, drop column col2 , drop column col3 ....

因此,对于Mysql 5.0.45中的每一列,您都需要指定"drop列“。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6346120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档