gpt4 book ai didi

sql - 列的创建和使用

转载 作者:行者123 更新时间:2023-12-03 01:08:53 25 4
gpt4 key购买 nike

我对 SQL 相当陌生,所以不确定这是否只是 SQL 编译器的问题。当我之前使用过 SQL 时,都是通过 JAVA 或 PHP 来使用的,而不仅仅是直接的 SQL。我正在使用 SQL Server 2005 并尝试向表中添加一列,然后填充它。这是我现在拥有的:

ALTER TABLE House DROP COLUMN CustomerType
ALTER TABLE House ADD CustomerType char(11)

UPDATE House
SET CustomerType = CASE
WHEN ... THEN...
WHEN ... THEN...
ELSE "Other"
END

但是,当我尝试编译它时,它会出错,因为 UPDATE 函数中的 CustomerType 尚未定义。有什么方法可以运行它,以便它可以编译并添加列并更新它,还是我必须在多次执行中运行它?

谢谢!

最佳答案

每个操作使用多个文件,或在步骤之间放置“GO”:

ALTER TABLE House DROP COLUMN CustomerType
GO

ALTER TABLE House ADD CustomerType char(11)
GO

UPDATE House
SET CustomerType = CASE
WHEN ... THEN...
WHEN ... THEN...
ELSE "Other"
END
GO

这适用于 SQL Server Management Studio - 它不是 T-SQL 功能,而是 Mgmt Studio 的一项功能,用于分隔 SQL 命令的 T-SQL“批处理”。

更新:如果您想让脚本可以多次运行,更有用的方法是检查列是否存在,只有在不存在时才添加它尚存在 - 如果它已经存在,那么总是删除并重新添加它是没有意义的!

为此,请使用以下内容:

IF NOT EXISTS(SELECT * FROM sys.columns WHERE name = 'CustomerType' 
AND object_id = OBJECT_ID('House'))
ALTER TABLE dbo.House ADD CustomerType CHAR(11)
GO

这段代码检查 SQL 目录 View sys.columns 以查看该列是否已存在于该表中 - 如果不存在,则创建它。当您对表运行此代码一千次时,第一次会创建该列,并且任何后续运行都不会执行任何操作 - 因为该列已经存在。比不断删除和重新添加列要干净得多!

关于sql - 列的创建和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com