我想请求我的后端助手帮助。
我现在开始使用SQL了,我在noSQL数据库中有一些背景,但我不太了解SQL,所以我在查找如何注册我的模式时遇到了一些麻烦。
我正在使用node-mysql,我可以创建模式的方法是调用方法查询,如:
myInstance.query( 'CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NULL NULL,
email VARCHAR(100) NULL NULL,
password VARCHAR(100) NULL NULL
)');
此解决方案的问题是:此代码将在每次服务器初始化时运行。
所以,我想知道如何检查架构是否已经存在,并且......这是一个很好的解决方案吗?我在一个创建所有模式的bash脚本中思考,我不需要这个if语句。
感谢。
答案 0 :(得分:3)
你所谓的“架构”实际上是一个“桌子”。因此,create table
语句,而不是create schema
。这是非常重要的。也许这部分documentation将帮助您理解差异。
有四种截然不同的结构:
请注意,不同的数据库系统在这些系统上的变化略有不同。
当然,“表格”有模式,这就是为什么容易混淆的原因。
通常,数据库的管理与用户应用程序分开处理。也就是说,DBA(也可能是开发人员)将创建数据库,管理访问,处理备份/恢复等。应用程序只需连接到数据库并假设存在正确的表和数据。
也就是说,在大多数情况下,您不会在应用程序代码中创建表。只需使用本应为您的数据库创建的表。
答案 1 :(得分:0)
您可以将sql语句修改为
CREATE TABLE IF NOT EXISTS users (…
这样代码将在服务器init上运行,但不会执行任何操作,并且在表已经存在时也不会失败。请参阅corresponding mysql documentation。
与您得到的答案相反,在应用程序代码中使用SQL语句对于后端并不常见。