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;