数据库模糊查询部分,刷题小结

早上刷了会数据库题型,长时间不练习有的重要知识点居然忘了,赶紧记录一下

1.模糊查询用like关键字

题目中,不说具体条件,比如“年龄18”或者“性别男性”,而是很笼统的指代一个范围,比如“名字中包含 王 字”等问法,使用模糊查询。语法如下:

字段名 like ‘匹配内容’ ;

举个栗子:
在这里插入图片描述
预期结果是这样:

这里我们就使用模糊查询方法,使用like语法:

select device_id, age, university 
from user_profile
where university like '北京%';
或者
where university like '%北京%';

以下还有几种模糊查询方式:

  • _:匹配任意一个字符;
  • %:匹配0个或多个字符;
  • [ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );
  • [^ ]:不匹配[ ]中的任意一个字符。

举个栗子:( 都是使用like关键字
(1)_匹配字符

select age from student
where name like '张_';
#查询名字以张开头,且姓名只有2个字的学生年龄
select age from student
where name like '张__';
#查询名字以张开头,且姓名长度为3个字的学生年龄
select age from student
where name like '_泽_';
#查询名字第二个字是泽的学生年龄

(2)%匹配0个或多个字符

select age from student
where name not like '刘%';
#查询名字不以刘开头的学生的年龄

(3)[ ]:匹配[ ]中的任意一个字符

SELECT * FROM 学生表 WHERE 姓名 LIKE '[张李刘]%#.查询学生表中姓‘张’、姓‘李’和姓‘刘’的学生的情况。

(4)[^]:不匹配[ ]中的任意一个字符。

SELECT * FROM 学生表 WHERE 姓名 LIKE '_[^]%#.查询学生表中姓名第二位字不包含言字的学生年龄。

知识点:

SQL语句优化也属于数据库优化的一部分;
使用like模糊查询会引起全表扫描,查询速度变慢,一般尽量尽量避免使用like关键字进行模糊查询。

2. in和=的区别

  • 查询数据时,如果查询的只有一个对象参数,那么in等价于=
  • 如果查询的是一个结果集,那么只能用in,不能用=
    举个栗子:
SELECT * FROM 学生表 WHERE 姓名 in ('张三');
#.查询姓名为张三的学生。等价于以下语法:
select * from 学生表 WHERE 姓名 = '张三';

in关键字查询的是结果集,表示多个= 相与,不能用单独的=代替

SELECT * FROM 学生表 WHERE 姓名 in ('张三' , '李四')#查询名字为张三或者李四的学生信息,等价于:
select * from 学生表 where 姓名 = '张三' or 姓名 = '李四';

检索时,= 比in的效率更高,因为=能更好的识别索引,in通常要纵览一下全表,速度慢一点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值