6.1 改变数据库的结构
最后,使用数据库最有趣的部分是更改数据库。如果你认为这是一件非常简单的事情,那么这里有一个关于这个主题的轶事:
The service station master, wiping his hands, hands over the car to the client and chats along the way:
- But who do you work for?
- I am a cardiac surgeon, I perform heart operations.
- And they pay a lot?
- $20,000 per operation.
- Nothing for myself ... But we, in fact, are doing the same thing, sorting out the engines, and they pay me only $ 300 ...
- Do you want to earn as much as I do?
- Want...
The surgeon starts the engine in the car and turns to the master:
- Move over!
数据库的情况完全相同。你想取出分表的一部分数据?好的,你需要:
- 创建一个新表
- 将数据复制到这个新表中
- 从旧表中删除列
- 更改所有引用旧表的 SQL 查询
- 添加将访问新表的 SQL 查询
- 更改以旧方式处理表的 Java 代码
- 更改备份和恢复脚本,因为现在表结构不匹配
- 如果您有开发人员的测试数据,您也需要更改它们
尽管实际上情况更糟:
新的数据库结构:
- 首先你改变开发者机器上的表结构
- 那么你确信这样的结构真的更好
- 批准新的数据库结构
迁移脚本:
- 您编写将在真实数据库上更改表数据等的脚本
- 在具有旧数据库结构的机器上运行这些脚本,看看它是如何变化的
- 验证新基地的所有关键位置
更新发售
- 停止生产数据库
- 做一个完整的备份
- 执行脚本
- 由于市场上通常有很多,这些脚本可以工作数小时
您启动产品并希望您不必回滚所有内容。
6.2 ALTER TABLE 语句
另一方面,更改表结构的脚本本身非常简单。在某些方面,它类似于表创建脚本。表更改请求的一般视图:
ALTER TABLE table
team 1,
team 2,
Team N
命令非常不同,但可以区分三个主要组:
ADD
- 添加一些东西到表MODIFY
- 更改表格中的内容DROP
- 删除表中的内容
当我说一些事情时,它不是关于数据,而是关于表的结构。
例如,您决定向表中添加一个新列,那么您需要执行以下查询:
ALTER TABLE table
ADD COLUMN Name type
让我们编写一个查询,将电子邮件列添加到我们的员工表中:
ALTER TABLE employee
ADD COLUMN email VARCHAR(10)
现在让我们将电子邮件字符串的长度从 10 更改为 100:为此我们需要一个新脚本:
ALTER TABLE employee
MODIFY COLUMN email VARCHAR(100)
如果你想改变一个列的一些属性,而不是它的类型,那么你需要这个命令 ALTER COLUM
。让我们设置默认的电子邮件值:
ALTER TABLE employee
ALTER COLUMN email VARCHAR(100) DEFAULT 'test@test.com'
最后,如果不需要,可以删除该列:
ALTER TABLE employee
DROP COLUMN email
6.3 添加和删除主键
还有一些更有用的例子。
假设我们忘记将id列声明为主键。您始终可以通过以下方式单独进行ALTER TABLE
:
ALTER TABLE employee
ADD PRIMARY KEY (email);
删除它更容易:
ALTER TABLE employee
DELETE PRIMARY KEY;
GO TO FULL VERSION