如何创建和更新 SQL 脚本?

Posted

技术标签:

【中文标题】如何创建和更新 SQL 脚本?【英文标题】:How do you create and update your SQL scripts? 【发布时间】:2011-07-04 09:59:03 【问题描述】:

我想知道创建和维护数据库映射和 SQL 脚本的最佳方法是什么。我知道我更喜欢在文本编辑器上手动编写 SQL 脚本(加上在一张纸上设计一张贴在我身边的地图),而其他人更喜欢使用数据库地图软件(mysql Workbench、Visual Studio ...一些列在this post) 以自动生成脚本。

这两种解决方案都有优点和缺点。我看到了这些优势:

手动编写 SQL 脚本
    完全了解您所写的内容。 您可以保持干净且易于阅读的 SQL 代码。 编写代码,您可以更好地了解您的数据库细节。 编写代码可以让您练习 SQL 知识。
根据设计的地图自动生成脚本
    节省一些时间。 即使不了解 SQL 语言,您也可以生成脚本(即使我将此列为 手工编写 SQL 脚本的相反优势)。 防止拼写错误。

你怎么看,你会怎么做?

【问题讨论】:

【参考方案1】:

如果自动化某事可以节省时间和人为错误,您为什么不这样做呢?如果出现以下情况,我会尝试自动生成 SQL:

    我已经填充了一个测试数据库,并通过编写和执行我没有跟踪的临时 SQL 非查询以有机方式构建了模式;和 如果数据库相当简单且标准化程度较低

另一种罕见的情况是,如果您有大量数据集列表,需要以 SQL 的形式提取其架构。

手写的好处是您了解设计的每个部分并且能够更好地执行数据完整性(例如通过使用外键或限制数据类型)。简而言之,我同意你的专家名单。

对于升级脚本,我非常喜欢手动编写这些脚本,因为它们通常很短,而且对于最终运行它们的人来说,它们的可读性更好。

我对升级脚本的一个提示是确保每个脚本都在一个专门用于确保数据库版本控制正确的表中添加一行来说明升级版本号。比如:

INSERT INTO DB_VERSION (upgrade_time, version_from, version_to, comment)
    VALUES ('2011-07-04T120320', '2.2.4', '2.3', 'add column x to table y.')

【讨论】:

db_version(我也使用)还有另一个更重要的用途。需要保证数据库的简单升级路径。我通常有升级脚本,只执行从版本 X 升级到版本 Y 并通过检查当前版本来执行此操作。如果我需要从以前的版本升级,那么我需要执行正确的升级脚本序列。

以上是关于如何创建和更新 SQL 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

sql定时更新数据库?

如何在 sql 脚本中动态创建和更改?

SQL Server 数据库项目 - 创建更改脚本

如何将多个sql脚本执行到具有相同版本的flyway中

如何从现有的 MySQL 数据库生成创建用户脚本?

如何运行 sql 脚本以从 java 代码更新 Derby 模式?