我是一个完整的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;
这是我想到的奇特组合:)
答案 0 :(得分:5)
要创建表格(如果该表格尚不存在),您可以使用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")
答案 1 :(得分:2)
您可以使用CREATE TABLE IF NOT EXISTS ...
看看这里:
http://cookbooks.adobe.com/post_Easy_way_to_create_a_SQLite_connection-12846.html
您还可以使用本页末尾显示的内容:
答案 2 :(得分:1)
此外,您可以在CONSTRAINT子句中为每列指定默认值。
CREATE TABLE IF NOT EXISTS config_data
('someinteger' INTEGER, 'sometext' TEXT, CONSTRAINT sometext DEFAULT 'should be text but isn't yet')