是否可以构造SQL查询以自动创建表(如果它尚不存在)?

e.J*_*mes 3 sql sqlite

我是一个完整的SQL新手,我正在尝试使用单个查询来完成以下(伪代码):

if (a table named "config_data" does not exist)
{ create a table named "config_data" }

if ("config_data" has no rows)
{ add a row to "config_data" with some default data }

return all rows in "config_data"
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?可以用一个查询完成吗?我正在使用SQLite3,如果这有帮助的话.

到目前为止,我知道如何创建表,并将数据插入其中:

CREATE TABLE config_data (key TEXT NOT NULL, value TEXT);
INSERT INTO config_data VALUES ("key_1", "value_1");
INSERT INTO config_data VALUES ("key_2", "value_2");
Run Code Online (Sandbox Code Playgroud)

以及如何检索所有行:

SELECT * FROM config_data;
Run Code Online (Sandbox Code Playgroud)

这是我想到的奇特组合 :)

Dea*_*ing 5

要创建一个表(如果它尚不存在),您可以使用IF NOT EXISTS:

CREATE TABLE IF NOT EXISTS config_data (
    key TEXT NOT NULL, value TEXT,
    CONSTRAINT key_unique UNIQUE(key)
)
Run Code Online (Sandbox Code Playgroud)

对于第二部分,您可以使用INSERT OR IGNORE(此处有更多信息)来插入值,假设您有一个唯一的约束,否则会通过插入值两次来违反该值(例如,您的key列可能有一个unqiue约束)):

INSERT OR IGNORE INTO config_data VALUES ("key_1", "def_value_1")
Run Code Online (Sandbox Code Playgroud)