Sqlite 在命名表/视图时是否有模式的概念?

Dav*_*len 4 sqlite

从我阅读和搜索的所有内容来看,我认为答案是否定的,因为它从未被提及。但我从来没有看到明确的不。

Sqlite 是否允许像 Sql Server 中那样的架构,您可以拥有dbo。员工姓名?还是仅限于Employee.FirstName?

谢谢 - 戴夫

nos*_*nos 9

我不认为 sqlite 具有与其他一些数据库中的模式完全相同的概念,但您可以附加多个数据库并按名称对其进行操作。例如

$ sqlite3 mydb1
SQLite version 3.20.1 2017-08-24 16:21:36
sqlite> create table test1 (id int);  insert into test1 values (1);
sqlite> .tables
test1
Run Code Online (Sandbox Code Playgroud)

上面我们只有1个数据库,它是默认数据库,不需要以数据库名称作为前缀。但是这个默认默认数据库的名称是main,所以我们可以这样做:

sqlite> select * from test1;
1
sqlite> select * from main.test1;
1
Run Code Online (Sandbox Code Playgroud)

我们可以附加另一个数据库,该数据库将在名称下可用myotherdb

sqlite> attach database 'myotherdb' as 'myotherdb';
sqlite> create table myotherdb.test1 (id int);  insert into myotherdb.test1 values (2);
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用myotherdb来引用这个新数据库,并且没有前缀或main前缀来引用第一个/默认数据库

sqlite> select * from myotherdb.test1 where myotherdb.test1.id > 0;
2
sqlite> select * from test1 where test1.id > 0;
1
sqlite> select * from main.test1 where main.test1.id > 0;
1
Run Code Online (Sandbox Code Playgroud)

请注意,这将创建 2 个不同的数据库文件

sqlite> .databases
main: /tmp/mydb1
myotherdb: /tmp/myotherdb
Run Code Online (Sandbox Code Playgroud)

这 2 个数据库文件可以稍后单独打开。

  • 谢谢。我认为(其他人可能有所不同)答案是否定的。 (2认同)