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 '表名.列名'
来去掉。然后就可以删掉了。
在查询分析器里边执行
alter table 表名
drop constraint 约束名
查看表的约束名执行
sp_helpconstraint 表名
第二个结果集就列出了表的约束,constraint_name就是约束名
或者执行
sp_help 表名
一般第三个结果集中constraint_name就表示相应的约束名。追问
constraint_name 不是约束名
追答sp_helpconstraint 表名
constraint_name 是列名好不,里面的记录内容才是约束名。你仔细看看
那么后面的语句,是删除约束,然后再删除列。
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.sqlThis template drops a columns of the table.
--========================================================================== -- Drop column template -- -- This template drops a columns of the table -- -- Use the Specify Values for Template Parameters -- command (Ctrl-Shift-M) to fill in the parameter -- values below. --========================================================================== PRINT 'ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table> DROP <drop_column_name, sysname, sample_column>' GO 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>') BEGIN ALTER TABLE <schema_name, sysname, dbo>.<TABLE_NAME, sysname, sample_table> DROP COLUMN <drop_column_name, sysname, sample_column> END GO
以上是关于SQL 删除列的主要内容,如果未能解决你的问题,请参考以下文章
sql 用于将列更改为作为主键的标识列的SQL代码。您必须删除密钥,删除列,将列添加回i