sqlite3和mysql的自增id差别

在讲述sqlite的数据插入语句api之前,苏南大叔有必要和大家讲述sqlite中的自增id的有关事项。sqlite的自增idmysql中的自增id是完全不一样的体验。请大家看完本篇文章之后,再研究相关node-sqlite3的数据插入api

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性(图13-1)

sqlite数据表自带rowid

sqlite的数据表里面,有个隐藏的rowid字段。注意这个rowid是隐藏的,任何表都有这个字段,自增类型的。不用主动建立就存在,这个rowidmyql上的id非常类似。也就是说,我们完全可以使用这个隐藏的rowid带代替传统意义上的id。不过,两者并不等同,是有区别的。大家可以清空表之后,再增加数据,看看两者对比。

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性

sqlite也可以建立类似mysql的自增id。不过,这个自增的id的类型必须为integer,不能是intintinteger类型同时存在于sqlite中,mysql中只有int类型),并且integer作为主键的时候,不能指定长度。

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性

sqlitestudio中,必须先设置为integer,然后保存之后,才能修改为autoincrement,似乎有些不是很智能,差评。

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性(图13-7)

sqlite的自增id语句

id INTEGER PRIMARY KEY AUTOINCREMENT

对比理解:sqlite3和mysql的自增id特性

mysql建立自增id

这个mysql的自增id,大家应该都比较熟悉了。一般都会设置为int(11)

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性

对比理解:sqlite3和mysql的自增id特性

`id` int(11) NOT NULL AUTO_INCREMENT

对比理解:sqlite3和mysql的自增id特性

下面的demo中,对于一个没有自增id的数据表,演示了如何利用sqlite的rowid查出id来。

db.serialize(function() {

db.run("CREATE TABLE if not exists lorem (info TEXT)");

var stmt = db.prepare("INSERT INTO lorem(info) VALUES (?)");

for (var i = 0; i < 10; i++) {

stmt.run("Ipsum " + i);

}

stmt.finalize();

db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {

console.log(row.id + ": " + row.info);

});

});

对比理解:sqlite3和mysql的自增id特性

结论

sqlite中的自增id和mysql中的自增id,有着较大的区别。不仅表现为类型,长度,甚至自增单词的拼写方法上。sqlite中的rowid就可以代替我们传统意义上的id。这点是最重要的区别所在。

以上是 sqlite3和mysql的自增id差别 的全部内容, 来源链接: utcz.com/a/119313.html

回到顶部