首页 > 网站 > 建站经验 > 正文

Sqlite3中re、place语句用法详解

2019-11-02 15:07:49
字体:
来源:转载
供稿:网友

   由于自己的孤陋寡闻, 也由于之前的项目中, 很少参与过数据库模块的开发, 以至于前几天才知道Sqlite数据库也支持replace语句。 本文主要讲解在Sqlite中replace语句的行为,也算是学习笔记。此外, replace语句和update语句有相似的地方, 但是也有很多不同之处。 本文还要对比一下Sqlite中的 replace语句和update语句 。

  在本例中使用如下数据库表:

Sqlite3中replace语句用法详解    电脑高手

  (图 1)

  该表的表名为student, 存储学生信息。 所有字段的数据类型都是TEXT 。 其中id和name作为复合主键。 email字段加上了唯一约束。建表语句如下:

?

1 2 3 4 5 6 7 8 9 10 CREATE TABLE IF NOT EXISTS student (         "id"  TEXT,         "name"  TEXT NOT NULL,         "sex"  TEXT,         "email"  TEXT UNIQUE,         "fenshu"  TEXT CHECK(fenshu > 0),         "tecid"  TEXT REFERENCES teacher(id),         "class"  TEXT,         PRIMARY KEY(id, name)         )

  replace语句的行为

  1 replace语句会删除原有的一条记录, 并且插入一条新的记录来替换原记录。

  为了验证这个结论, 下面打开Sqlite命令行, 执行以下语句来替换id为2的记录。

?

1 2 sqlite> replace into student (id, name, sex, email, fenshu, tecid, class) values  ('2', 'lisi', '*F', [email protected]', '80', '2', '1');

  执行完这条语句之后, student表中的数据变成下图所示:

  (图 2)

  对比图1和图2 , 可以发现: 在图1中, id为2 的记录是表中的第一条记录, 当执行完上述的replace语句之后, id为2的记录位于整张表的最后。 这就说明, 这条replace语句删除了原有的id为2的记录, 有插入了一条新的id为2的记录。

  2 一般用replace语句替换一条记录的所有列, 如果在replace语句中没有指定某列, 在replace之后这列的值被置空 。

  下面我们还是以id为2 的记录做实验, 执行如下语句:

?

1 2 sqlite> replace into student (id, name, sex, email, fenshu, tecid) values ('2', 'lisi', '*F', [email protected]', '80', '2');
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表