玩转SQLite9:常用语句实践(一)

举报
码农爱学习 发表于 2021/12/19 21:39:47 2021/12/19
【摘要】 SQLite常用语句实践(一):update、delete、like、glob

1 更新-update

update 用于修改表中已有的记录。

可以使用带有where子句的update查询来更新选定行,否则所有的行都会被更新。

基本语法为:

update table_name
set column1 = value1, column2 = value2...., columnN = valueN
where [condition];

以之前测试的数据为例,有如下的表:

sqlite> select * from SCORE;
id  chinese  math  english
--  -------  ----  -------
1   90       95    88
2   80       90    92
3   85       89    82
4   80       81    82
5   90       91    92
6   90       88    89
7   70       81    88
8   81       85    83
9   85       88    86
10  88       83    90

更新id为10的math为100:

update SCORE set math=100 where id=10;

更新所有id的english为90,则不使用where指定条件即可:

update SCORE set english=90;

2 删除-delete

delete用于删除表中已有的记录。

可以使用带有where子句的delete来删除选定行,否则将删除所有的记录。

基本语法为:

delete from table_name
where [condition];

例如,删除id为10的记录:

delete from SCORE where id=10;

如果要删除所有的记录,则不加where语句:

delete from SCORE;

3 通配符-like

like运算符用来匹配通配符指定模式的文本值。这里有两个通配符与 LIKE 运算符一起使用:

  • 百分号%:代表零个、一个或多个数字或字符。

  • 下划线_:代表一个单一的数字或字符

如果搜索表达式与模式表达式匹配,like运算符将返回真。

基本语法:

select column_list 
from table_name
where column like 'XXXX%'

上面的XXXX可以是任何数字或字符串值,另外可以使用and或or运算符来结合N个数量的条件。

like的通配符的几个使用示例:

  • '200%':以 200 开头的任意值

  • '%200%':任意位置包含 200 的任意值

  • '_00%':第二位和第三位为 00 的任意值

  • '2__%':以 2 开头,且长度至少为 3 个字符的任意值

  • '%2':以 2 结尾的任意值

  • '_2%3':第二位为 2,且以 3 结尾的任意值

  • '2___3':长度为 5 位数,且以 2 开头以 3 结尾的任意值

示例,使用之前测试的数据库,有以下数据:

sqlite> select * from SCORE;
id  chinese  math  english
--  -------  ----  -------
1   90       95    88
2   80       90    92
3   85       89    82
4   80       81    82
5   90       91    92
6   90       88    89

若要显示SCORE中math成绩以8开头的记录:

select * from SCORE where math like '8%';

若要显示SCORE中chinese和math成绩以0结尾的记录:

select * from SCORE where chinese like '%0' and math like '%0';

4 通配符-glob

glob也是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,glob运算符将返回真true。

注意,glob与like支持的通配符不同,glob支持:

  • 星号*:代表零个、一个或多个数字或字符(类比like的%

  • 问号?:代表一个单一的数字或字符(类比like的_

glob的基本语法为:

select from table_name
where column GLOB 'XXXX*'

这里的XXX 可以是任何数字或字符串值,另外可以使用and或or运算符来结合N个数量的条件。

glob的通配符的几个使用示例:

  • '200*':以 200 开头的任意值

  • '*200*':任意位置包含 200 的任意值

  • '?00*':第二位和第三位为 00 的任意值

  • '2??%':以 2 开头,且长度至少为 3 个字符的任意值

  • '*2':以 2 结尾的任意值

  • '?2*3':第二位为 2,且以 3 结尾的任意值

  • '2???3':长度为 5 位数,且以 2 开头以 3 结尾的任意值

示例,使用之前测试的数据库,有以下数据:

sqlite> select * from SCORE;
id  chinese  math  english
--  -------  ----  -------
1   90       95    88
2   80       90    92
3   85       89    82
4   80       81    82
5   90       91    92
6   90       88    89

若要显示SCORE中math成绩以8开头的记录:

select * from SCORE where math glob '8*';

若要显示SCORE中chinese和math成绩以0结尾的记录:

select * from SCORE where chinese glob '*0' and math glob '*0';

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。