gpt4 book ai didi

sql - 创建后更改数据库设计

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:06 24 4
gpt4 key购买 nike

我有一个包含许多列的现有数据库。其中之一是“语言”,它指示行中其他数据的语言。

如果数据库中没有几千行,我希望实现的设计将很容易编辑。

我想做的是选择所有不同的语言(英语、西类牙语、法语、昆雅语......)——我们可以假设这些都是小写的,并将这些数据放入自己的表中。

我希望创建的表格结构简单:

Language ID    |   Language   |   Shorthand for language
1 | English | en-us

然后我想编辑我的原始表格,并在“语言”列(我将删除)的位置输入相应语言 ID 的编号。

因此,例如,英文行将如下所示:

IrrelevantInfo   |   LanguageID
foobar | 1

我可以在不丢失所有数据的情况下执行此操作吗?

最佳答案

当然。

像这样的东西应该可以工作:

CREATE TABLE Languages (id int identity NOT NULL PRIMARY KEY, 
[Language] varchar(100),
Shorthand varchar(100))

BEGIN TRAN -- We do a transaction here to ensure consistency

INSERT INTO Languages ([Language])
SELECT DISTINCT [Language]
FROM MySourceTable

-- Update the shorthands later


ALTER TABLE MySourceTable
ADD LanguageID int
FOREIGN KEY REFERENCES Languages(id)

UPDATE t
SET LanguageID = l.id
FROM MySourceTable T
INNER JOIN Languages l
ON l.[Language] = t.[Language]

ALTER TABLE MySourceTable
DROP [Language]

COMMIT TRAN

我还强烈建议在 LanguageId 字段上添加索引,并重建所有索引,尤其是聚集索引。添加和删​​除列会对表和索引的碎片造成严重破坏。

关于sql - 创建后更改数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10449208/

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