文档章节

如何从现有表中删除列?

 技术盛宴
发布于 02/22 09:43
字数 581
阅读 103
收藏 0
RED

如何从现有表中删除列?

我有一个带FnameLname的表MEN

我需要删除Lname

怎么做?


#1楼

要在现有表中添加列:

ALTER TABLE table_name
 ADD
 column_name DATATYPE NULL  

要删除现有表中的列:

ALTER TABLE table_name
DROP COLUMN column_name

#2楼

您的示例很简单,不需要任何其他表格更改,但是通常来说,这并不是那么简单。

如果其他表引用了此列,那么您需要弄清楚如何处理其他表/列。 一种选择是删除外键,并将引用的数据保留在其他表中。

另一种选择是查找所有引用列,并在不再需要它们时也将其删除。

在这种情况下,真正的挑战是找到所有外键。 您可以通过查询系统表或使用第三方工具(例如ApexSQL Search (免费)或Red Gate Dependency跟踪器 (高级但更多功能))来执行此操作。 有外键的整体线程这里


#3楼

问题是,您只能从不存在的表中删除一列吗?

BEGIN TRANSACTION

IF exists (SELECT * FROM  sys.columns c 
INNER JOIN  sys.objects t ON (c.[object_id] = t.[object_id])
WHERE t.[object_id] = OBJECT_ID(N'[dbo].[MyTable]')
AND c.[name] = 'ColumnName')
    BEGIN TRY
        ALTER TABLE [dbo].[MyTable] DROP COLUMN ColumnName
    END TRY
    BEGIN CATCH
        print 'FAILED!'
    END CATCH
ELSE
    BEGIN 
        SELECT ERROR_NUMBER() AS ErrorNumber;
        print 'NO TABLE OR COLUMN FOUND !'
    END 

COMMIT  

#4楼

这是正确的答案:

ALTER TABLE MEN DROP COLUMN Lname

但是...如果CONSTRAINT存在于COLUMN ,那么您必须先DROP CONSTRAINT ,然后才能DROP COLUMN 。 为了删除CONSTRAINT ,请运行:

ALTER TABLE MEN DROP CONSTRAINT {constraint_name_on_column_Lname}

#5楼

这也可以通过SSMS GUI来完成。 这种方法的好处是,它会警告您该列上是否存在任何关系,也可以自动删除它们。

  1. 将表放在“设计”视图中(在表上单击鼠标右键),如下所示:

在此处输入图片说明

  1. 右键单击表的“设计”视图中的列,然后单击“删除列”

在此处输入图片说明

如前所述,如果还有任何关系也需要删除,它会在此时询问您是否也要删除它们。 您可能需要这样做才能删除该列。

本文转载自:https://stackoom.com/question/NbfU/如何从现有表中删除列

粉丝 0
博文 1611
码字总数 0
作品 0
深圳
高级程序员
私信 提问
加载中

评论(0)

MySQL基础教程

这是一个基础的MySQL教程,通过教程的学习后可以到达一个初级到中级 MySQL应用水平级别 ,主要介绍一些MySQL中基本的SQL语句。如果这是您第一次使用关系数据库管理系统(之前没有学习SQL相关...

易百教程
2016/10/11
145
0
达梦数据库修改字段(列)(基表修改语句)

达梦数据库提供基表修改语句,对基表的结构进行全面的修改,包括修改基表名、列名、增加列、删除列、修改列类型、增加表级约束、删除表级约束、设置列缺省值、设置触发器状态等一系列修改。 ...

C6H12O6
2018/07/30
1.5K
0
MySQL Replace语句

在本教程中,您将学习如何使用 MySQL的语句来插入或更新数据库表中的数据。 MySQL REPLACE语句介绍 MySQL的REPLACE语句是一个MySQL扩展于SQL标准的语句。 MySQL REPLACE语句的工作原理如下:...

易百教程
2016/09/20
61
0
Oracle单表查询

创建和管理表(DDL) --创建表 --修改表 -|增加新列 -|修改现有的列 -|重命名列名 -|删除现有的列 -|清空表中数据 --重命名表 --删除表 ----------------------------------------------------...

拷贝忍者卡卡习
2016/11/10
20
0
SQLite数据中修改某列,对已存在的某列添加UNIQUE约束

UNIQUE 约束 UNIQUE 约束防止在一个特定的列存在两个记录具有相同的值。在 COMPANY 表中,例如,您可能要防止两个或两个以上的人具有相同的年龄。 例如,下面的 SQLite 语句创建一个新的表 ...

xunfang
2016/03/03
1.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

结束数据库会话期间(踢出用户)

--可以使用这堆,查询出正在使用的会话期间,然后结束某个会话idUSE mastergoSELECT * from sysprocesses where dbid in (select dbid from sysdatabases where name='hbposv10_branch......

ethanleellj
4分钟前
9
0
TMS320C28x系列TMS320F2837x开发板的蜂鸣器、直流电机和步进电机接口

处理器 TI TMS320F2837x单/双核具有200MHz的高速处理能力,双核拥有多达12路的PWM输出。以下分别是TMS320F2837x单/双核CPU资源框图: 蜂鸣器 本开发板搭载有无源蜂鸣器,可以发出不同频率的声...

Tronlong创龙
4分钟前
7
0
Python3 撸代码窍门,怎样用 Map, Filter, Reduce 代替 For 循环.

感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30736.html 你是否有过这样的经历,你查看自己写的代码并看到满眼的 for 循环?你发现你必须斜着你的眼睛,并将脑袋前倾到你的显示器...

曹长卿
5分钟前
8
0
vscode插件

1、vetur 强大的vue开发插件 等待更新!!!!

米依若兮
5分钟前
7
0
服务器批量管理软件排名 批量管理vps

远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台开启了远程桌面控制功能的计算机...

09网络2
7分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部