2

我正在关注 sqlcipher Api 文档中的示例:http: //sqlcipher.net/sqlcipher-api#attach

ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'secret'; -- create a new encrypted database
CREATE TABLE encrypted.t1(a,b); -- recreate the schema in the new database (you can inspect all objects using SELECT * FROM sqlite_master)
INSERT INTO encrypted.t1 SELECT * FROM t1; -- copy data from the existing tables to the new tables in the encrypted database
DETACH DATABASE encrypted;

第一行CREATE TABLE encrypted.t1(a,b);有 (a,b) 和第二行

INSERT INTO encrypted.t1 SELECT * FROM t1;才不是。

为什么第一行有一个(a,b),它是做什么用的?

4

1 回答 1

3

在这种情况下,a 和 b 是列名。文档中对该示例的介绍解释了重要的一点“假设您有一个名为 unencrypted.db 的标准 SQLite 数据库,其中包含一个表 t1(a,b)。” 然后:

  1. 第一行附加了一个新的加密数据库。
  2. 接下来,在加密数据库中创建具有相同名称和列规范的第二个表。
  3. 第三行从原始表中选择所有数据,并将其插入到加密数据库中的新表中。

因为两个表上的列是相同的,所以没有必要明确列出表列。

于 2011-10-18T19:23:06.610 回答