我试图为使用MySQL的现有python应用程序提供sqlite3支持。 MySQL中有一个查询,我想在sqlite3中进行转换以创建一个表,该表将其两列用作MUL键。
在MySQL中,我们可以这样做:
CREATE TABLE messages (
id BIGINT(16) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
group_id INTEGER,
feat VARCHAR(36),
KEY \`field\` (\`group_id\`),
KEY \`feature\` (\`feat\`)
)
如何在sqlite3中编写相同的查询? 如何在sqlite3中创建多键“ MUL”?
答案 0 :(得分:0)
我相信您有3种方法。如果MUL应该唯一,则有2种选择;如果不需要唯一性,则有2种选择。
例如:-
/* Unique constraint and therefore an auto-created index */
CREATE TABLE messages1 (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
group_id INTEGER, feat TEXT,
UNIQUE(group_id, feat)
);
/* Unique constraint not required and therefore just an index */
CREATE TABLE messages2 (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
group_id INTEGER, feat TEXT
);
CREATE INDEX messages_idx01 ON messages2 (group_id,feat);
/* A specifically named UNIQUE index */
CREATE TABLE messages3 (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
group_id INTEGER, feat TEXT
);
CREATE UNIQUE INDEX messages_idx02 ON messages3 (group_id,feat);
请注意,已使用派生的列类型。
这就是说列类型(类型相似性)在SQLite中完全不同,它们更加灵活,并且仅指示存储的数据类型。参见Datatypes In SQLite Version 3
例如BIGINT(16)具有派生的INTEGER列类型,因此已使用INTEGER。