我是一个完整的 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"
我会怎么做呢?可以通过单个查询完成吗?如果有帮助,我正在使用 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");
以及如何检索所有行:
SELECT * FROM config_data;
这是让我无法理解的花哨组合:)
最佳答案
要创建一个不存在的表,可以使用IF NOT EXISTS :
CREATE TABLE IF NOT EXISTS config_data (
key TEXT NOT NULL, value TEXT,
CONSTRAINT key_unique UNIQUE(key)
)
对于第二部分,您可以使用 INSERT OR IGNORE ( more info here ) 插入一个值,假设您有一个唯一约束,否则会通过两次插入该值而被违反(例如,您的 key
列上可能有一个 unqiue 约束):
INSERT OR IGNORE INTO config_data VALUES ("key_1", "def_value_1")
关于sql - 如果表不存在,是否可以构建 SQL 查询以自动创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278712/