开发者学堂课程【嵌入式之 RFID 开发与应用2020版:SQLite 删除语句和匹配条件】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11226
SQLite 删除语句和匹配条件
内容介绍:
一、删除表中的数据 delete:语句
二、查询: select 语句
三、匹配条件语法
一、删除表中的数据 delete:语句
使用 where 根据匹配条件,查找一行或多行,根据查找的结果删除表中的查找到的行。
语法: delete from 表名[匹配条件];
注意: 当表中有多列、多行符合匹配条件时会删除相应的多行。
在终端下输入:
sqlite> delete from persons where name='peter ';
删除是有条件的,也就是在删除时要指定表指定列。
查看表:sqlite> select * from tbl;
101|zs|bj
102|ls|tj
103|ww|sh
/执行删除操作,需要指明删除的表以及要删除的内容。
sqlite> delete from tbl where id=103;
sqlite> select * from tbl;
101|zs|bj
102|ls|tj
现在这个表内容较少,先执行插入操作,将表内容增加。
sqlite> insert into tbl values ( 103, 'ww' , 'sh ' ) ;
sqlite= insert into tbl values (104,'zs' ,'cd' ) ;
slite> select * from tbl;
101|zs|bj
102|ls|tj
103|ww|sh
104|zs|cd
sqlite>
注意:删除一定要有条件,如果没有条件会将表中的所有内容都删除。
回顾 update:
进行修改操作的第一种方法,如下:
sqlite>update tbl set addr='cq' where addr='cd ';
sqlite> select *from tbl;
101|zs|bj
102|ls|tj
103|ww|sh
104|zs|cq
sqlite>
第二种方法:
sqlite> update tbl set addr='cd' where id=104;
sqlite> select*from tbl;
101|zs|bj
102|ls|tj
103|ww|sh
104|zs|cd
sqlite>
sqlite> insert into tbl values ( 104, 'xw' , 'cq' );
sqlite> select * from tbl;
101|zs|bj
102|ls|tj
103|ww|sh
104|zs|cd
104|xw|cq
sqlite>
如果 where 后的条件匹配的对象是多个,如上表修改 id 为 104 的数据,就会将 id 为 104 的数据都修改;如果是删除 id 是 104 的数据,就会将所有 id 是 104 的数据删除。
二、查询: select 语句
用于从表中选取数据,x结果被存储在一个结果表中(称为结果集)。语法:
1、 select * from 表名[匹配条件];
2、select 列名1[,列名2,...] from 表名[匹配条件];
提示:星号(*)是选取所有列的通配符。
在终端下输入:
sqlite> insert into persons values (1,'peter ', 'tianjing' );
sqlite> insert into persons values (3,'bob ', 'hebei ');
sqlite> select *from persons;
1| lucy |beijing
1| peter |tianjing
3 | bob | hebei
sqlite> select * from tbl;
——是查询表中的所有内容
sqlite> select id from tbl;
——是查询id列数据
101
102
103
104
104
sqlite> select name from tbl;
——查询表中 name 列数据
查询的方式非常多,大家可以根据实际情况选择查询方式。
对齐方式:sqlite> . mode column 左对齐列
sqlitez select * from tbl;
101 zs bj
102 ls tj
103 ww sh
104 zs cd
104 xw cq
sqlite> .headers on 列名显示
sqlitez select * from tbl;
id name addr
---- -------- -------
101 zs bj
102 ls tj
103 ww sh
104 zs cd
104 xw cq
三、匹配条件语法
数据库提供了丰富的操作符配合 where 子句实现了多种多样的匹配方法。如:1.in操作符 2.and 操作符 3.or 操作符 4.between and 操作符 5.like 操作符 6.not 操作符
1.in 操作符
in 允许我们在 where 子句中规定多个值。
匹配条件语法: where 列名 in (列值1,列值2,...)
例: ①select * from 表名 where 列名 in(值1,值2,..);
②select 列名1[,列名2..] from 表名 where 列名 in (列值1,列值2,…)
当条件满足 in 里面的值后,就可以进行查看、修改、删除等一系列操作。
举例:sqlite> select *from tbl where id in ( 103,104);
id name addr
---- -------- -------
103 ww sh
104 zs cd
104 xw cq
2.and 操作符
and 可在 where 子语句中把两个或多个条件结合起来(多个条件之间是与的关系)。
匹配条件语法: where 列1=值1 [ and 列 2= 值2 and ...]
例: ①select * from 表名 where 列 1= 值 1[ and 列 2=值 2and ...];
②select 列名 1[,列名 2,..] from 表名 where 列 1= 值 1 [and 列 2= 值2 and ...];
执行 and 操作时,满足双重条件才能执行。
举例:sqlite> select * from tbl where id=104 and addr="cd";
id name addr
---- -------- -------
104 zs cd
3.or 操作符
or 可在 where 子语句中把两个或多个条件结合起来(多个条件之间是或的关系)。
匹配条件语法: where 列1=值1 [or 列2=值2 or ...]
例: ① select * from 表名 where 列1=值1[or 列2=值2 or ...];
②select 列名1[,列名2....] from表名列1=值1[or 列2=值2 or ...];
执行 or 操作时,只需满足其中一个条件即可。
举例:
sqlite> select * from tbl where id=104 or addr="cd";
id name addr
---- -------- -------
104 zs cd
104 xw cq
4.between and 操作符
操作符 between A and B 会选取介于 A、B 之间的数据范围。这些值可以是数值、文本或者日期。
注意: 不同的数据库对 between A and B 操作符的处理方式是有差异的。
(1)有些数据库包含 A 不包含 B。
(2)有些包含 B 不包含 A。
(3)有些既不包括 A 也不包括 B。
(4)有些既包括 A 又包括 B。
匹配条件语法: where 列名 between A and B
例: ①select * from 表名 where 列名 between A and B;
②select 列名 1[,列名 2...] from 表名 where 列名 between A and B;
注: 匹配字符串时会以 ascii 顺序匹配。
举例:sqlite> select * from tbl where id between 102 and 104;
id name addr
---- -------- -------
102 ls tj
103 ww sh
104 zs cd
104 xw cq
我们这里的 between A and B 是 A、B 都包含的。
5.like 操作符
like 用于模糊查找。
匹配条件语法: where 列名 like 列值
①若列值为数字
相当于列名=列值。
②若列值为字符串
可以用通配符“%”代表缺少的字符(一个或多个)。
举例:sqlite> select*from tbl where id like '1%' ;
id name addr
---- -------- -------
101 zs bj
102 ls tj
103 ww sh
104 zs cd
104 xw cq
以上显示的是以 1 开头的数据,如果将 1 改为 4:
sqlite> select*from tbl where id like '4%' ;
id name addr
---- -------- -------
104 zs cd
104 xw cq
sqlite> select*from tbl where id like 'c%' ;
id name addr
---- -------- -------
104 zs cd
104 xw cq
6.not 操作符
not 可取出原结果集的补集。
匹配条件语法: where 列名 not in 列值等
例: ①where 列名not in (列值1,列值2,.….)
②where not (列1=值1[and列2=值2 and ...])
③where not (列1=值1 [or列2=值2 or ...])
④where 列名 not between A and B
⑤where 列名 not like 列值
sqlite> select*from tbl where id like 'c%' ;
举例:sqlite> select*from tbl where addr not like 'c%' ;
id name addr
---- -------- -------
101 zs bj
102 ls tj
103 ww sh
这里有些东西是无法实现的,比如不能提供整体操作,如复制表、修改表结构要分布操作。