玩转SQLite9:常用语句实践(一)
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*';
select * from SCORE where chinese glob '*0' and math glob '*0';
- 点赞
- 收藏
- 关注作者
评论(0)