SQL 删除列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 删除列相关的知识,希望对你有一定的参考价值。

怎么样删除一个表中的一列,该列是有默认值的
alter table drop column 不行,有默认值,需要删除约束,望高手指点

1、打开数据库管理平台软件【SQL Server Management Studio】。

2、连接数据库【连接】。

3、右击表【student】——>【修改】——>右击【学号】这一列【删除列】。

4、点击【新建查询】。

5、在查询窗口编写代码【alter table student drop column 姓名】。

6、刷新查看表【student】已经删除列【姓名】。

参考技术A 你删除的时候会提示你,有默认约束依赖该字段,那么你需要先删除默认约束(错误提示里会有默认约束名),再删除字段:
ALTER TABLE 表名 DROP CONSTRAINT 默认约束名
GO
ALTER TABLE 表名 DROP COLUMN 字段名
GO追问

我就是想问怎么知道默认约束名

追答

某表某字段的默认约束:
select name
from sysobjects
where id=(select cdefault
from syscolumns
where name='字段名' and id = (select id
from sysobjects
where name = '表名'))

追问

这个脚本运行结果是那个‘默认值名称’,不是约束名称。
我现在的表所用的默认值,是自己创建的默认。
我一开始已经 create default DEFAULT_SPACE as '',
然后建表的时候 exec sp_bindefault 'DEFAULT_SPACE', '列名'
所以你给的脚本运行结果就是DEFAULT_SPACE,这个不是约束

追答

你用exec sp_bindefault 'DEFAULT_SPACE', '列名'绑定的,就得用:
exec sp_unbindefault '表名.列名'
来去掉。然后就可以删掉了。

本回答被提问者采纳
参考技术B SQL中怎么删除约束?

在查询分析器里边执行

alter table 表名
drop constraint 约束名

查看表的约束名执行

sp_helpconstraint 表名

第二个结果集就列出了表的约束,constraint_name就是约束名

或者执行
sp_help 表名

一般第三个结果集中constraint_name就表示相应的约束名。追问

constraint_name 不是约束名

追答

sp_helpconstraint 表名
constraint_name 是列名好不,里面的记录内容才是约束名。你仔细看看

参考技术C 下面是一个 删除列失败的例子,失败的提示信息中,应该会告诉你是什么约束导致删除失败。
那么后面的语句,是删除约束,然后再删除列。

1> ALTER TABLE test_tab
2> DROP COLUMN user_number;
3> go
消息 5074,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
对象'UQ__test_tab__023D5A04' 依赖于 列'user_number'。
消息 4922,级别 16,状态 9,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN user_number 失败。

1> ALTER TABLE test_tab
2> DROP UQ__test_tab__023D5A04;
3> go

1> ALTER TABLE test_tab
2> DROP COLUMN user_number;
3> go
参考技术D 最近我也在研究这个问题,很深奥哦,好像是从行开始删吧。

SQL模板-删除列

My Drop Column.sql
This template drops a columns of the table.
  1. --==========================================================================
  2. -- Drop column template
  3. --
  4. -- This template drops a columns of the table
  5. --
  6. -- Use the Specify Values for Template Parameters
  7. -- command (Ctrl-Shift-M) to fill in the parameter
  8. -- values below.
  9. --==========================================================================
  10.  
  11. PRINT 'ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table> DROP <drop_column_name, sysname, sample_column>'
  12. GO
  13. IF EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'<schema_name, sysname, dbo>.<table_name, sysname, sample_table>') AND name = N'<drop_column_name, sysname, sample_column>')
  14. BEGIN
  15. ALTER TABLE <schema_name, sysname, dbo>.<TABLE_NAME, sysname, sample_table> DROP COLUMN
  16. <drop_column_name, sysname, sample_column>
  17. END
  18. GO

以上是关于SQL 删除列的主要内容,如果未能解决你的问题,请参考以下文章

sql添加列,删除列,修改列

SQL语句增加列修改列删除列

sql 用于将列更改为作为主键的标识列的SQL代码。您必须删除密钥,删除列,将列添加回i

sql SQl更改列数据类型,您必须首先删除列,然后重新添加列。

SQL语句增加列修改列类型修改列删除列

SQL 删除外键列