我是一个完整的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(此处有更多信息)来插入值,假设您有一个唯一的约束,否则会通过插入值两次来违反该值(例如,您的key
列可能有一个unqiue约束)):
INSERT OR IGNORE INTO config_data VALUES ("key_1", "def_value_1")