lucene 按照匹配度排序_SQL基础知识(2)—条件查询、排序查询

文章导览:

  1. 条件查询:条件表达式、逻辑表达式、范围查询、空值判断、模糊查询(like、匹配符)
  2. 排序查询:语法、执行顺序、特点、不同使用方式示例

一、条件查询(where子句)

数据库表中包含大量的数据,在实际应用中,通常只会根据需要查询特定数据。在select语句中,数据根据where子句指定的筛选条件进行过滤。

  • 语法:select <查询列表> from <表名> where <筛选条件>;
  • 执行顺序:表→筛选条件→查询列表

1. 第一类:按照条件表达式筛选

39a77a45be832e13c2001afb7e7ba7ef.png

例1:查询最低工资小于5000元的工种名称和最低工资数目

4602a2d155be28321698b679946f7e7a.png

例2:查询工种名称不为(Marketing Manager)的工种信息

83f977f893965ecff00d8f3bcf484787.png
Q:where子句中的条件为什么有的值包括在单引号内,有的值未包括?
A:单引号用来限定字符串。如果将值与 字符串类型的列进行比较,就需加引号。如果将值用与数值类型的列进行比较,则不用引号。

2. 第二类:按照逻辑表达式筛选

作用:连接多个条件表达式

811c6937ef1eb5af5e1bdba4f4df9b22.png

例3:查询工资在8000元到15000元之间的工种信息

7ab901c53b543b6e6fd3bbce3e86a01d.png
需满足两个条件:1.最低工资≥8000;2.最高工资≤15000。因此用and操作符

例4:查询工资小于5000元,或者大于20000元的工种信息

19cb091c028dd32e974fdfa910bd5293.png
满足任何一个条件即可:1. 最低工资≤5000;2.最高工资≥20000。因此用or操作符

例5:查询部工种名称不是president的工种信息

29931683568218bf7bf900fef8af8152.png
否定【工作名称=president】这个条件。因此在此条件前加not
① 关于or操作符:许多DBMS在where子句中使用or操作符时,当第一个条件得到满足时,就不再计算第二个条件(不管是否满足,相应行都将被检索) ②优先级:通过使用圆括号()对操作符进行明确分组,以确定处理优先级

3. 第三类:范围查询

(1)between and

含义:在……之间,等价于>= and <=

特点:包含临界值,between+小的值,and+大的值

例6:查询最低工资在1000元到5000元之间的工种信息

20afccd1f1e2eecf3a9f8c6e8ab5b89a.png

(2)in

含义:判断某字段的值是否属于in列表中的某一项(相当于= or =)

特点

  • 提高语句简洁度
  • in列表的值类型必须统一或兼容(兼容指的是可以转换)
  • in列表中不支持通配符

例7:查询工种编号是IT_PRG、AD_VP 、AD_PRES中的工种信息

01f9c6adb986c9cd07ba3b3c3f77910e.png

4. 第四类:空值检查( is null 和 is not null)

NULL:无值(no value),指的是此处没有值,与字段包含0、空字符串不同

特点:=或者<>不能用于判断null值;is null 或is not null可以判断null值

例8:查询没有最低工资,但标明最高工资的工种信息

1341c9dc42c3fd85a004da75edb35938.png
min_salary is null表示最低工资为空值,而不是最低工资为0
安全等于<=>与IS NULL的区别: ① is null:仅仅可以判断null值,可读性较高 ② <=>:既可以判断NULL值,又可以判断普通的数值,可读性低

5. 第五类:模糊查询(Like操作符)

前面所述的所有条件查询都是针对已知值,但是如果要搜索工种名称中包含manager的工种,用上述查询肯定不行,这时,我们就需要利用通配符,创建比较特定数据的搜索模式

通配符:用来匹配(值的一部分)的特殊字符。

11141630a2c34c59a01786e5ac01013c.png

例9:查询工种名称中包含“manager”的工种信息

0f2fac84245641559fa3f1e6c5aea7c9.png

例10:查询工种编号中第二个字符为C,第四个字符为M的工种信息

cb68790907fc539e307837d51c8ea6a9.png

转义符号:在字符前加 或 在字符前加【任意字母】其后加escape‘任意字母’;

例11:查询工种编号中第三个字符为_的工种信息

c50e7d002d91c895df65c5dc1ac396e0.png
方法一:使用 转义符号

b0d8925e952808d9c52ca13f1f32aa81.png
方法二:使用字母+ESCAPE搭配
通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索

二、排序查询(order by子句)

关系数据库设计理论认为:如不明确规定排序顺序,则不应假定检索出的数据顺序有任何意义

1. 语法:

select <查询列表> from <表名> where <筛选条件> order by <排序列表> ASC|DESC

2. 执行顺序

表→筛选条件→查询列表→排序

3. 特点:

  • ASC代表的是升序,DESC代表的是降序。不写的话,默认是升序ASC
  • order by子句中可支持单个字段、多个字段、表达式、别名、函数
  • order by子句一般是放在查询语句的最后面,但limit子句除外

4. order by子句使用示例:

首先,先说明一下本示例使用的数据表字段含义:

3d4c0acb50b0214d4534b72627445537.png

例12:【按单个字段排序】查询员工信息,要求工资从高到底进行排序

d6436ba00f490919f25c760f63cc4be0.png

例13:【按多个字段排序】查询员工信息,要求先按照工资升序,再按照员工编号降序

cf5303920a9da04b11509862ccd0fc8f.png
注意:ASC、DESC均只应用到直接位于其前面的列

例14:【按表达式排序】查询员工的信息和年薪,要求按照年薪降序

fb3150a5651302659e3534af0371e174.png

例15:【按别名排序】查询员工的信息和年薪,要求按照年薪降序

a0f2a3ef778887c87d42ac98a5c945c1.png

例16:【按函数排序】查询员工的姓名和工资 ,要求按照姓名的长度降序

b663574eb8f5e7ae801054b32f135f2b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值