SQL Server Transact-条件查询

作者:李钦 本文为博主原创文章,未经博主允许不得转载。
本文链接: https://blog.csdn.net/weixin_42320142/article/details/102717280

使用关系表达式查询

WHERE语句中,关系表达式由关系运算符和列组成,可用于列值的大小相等判断。主要的运算符有

操作符 说明
= 相等
< > 不相等
< 小于
<= 小于等于
> 大于
>= 大于等于
SELECT f_name,f_price
FROM fruits
WHERE f_price = 10.2

使用 BETWEEN AND 表示范围

SELECT f_name,f_price FROM fruits WHERE f_price BETWEEN 2.00 AND 10.20;

使用 IN 关键字

IN关键字用来查询满足指定条件范围内的记录。

SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id IN (101,102)

使用 LIKE 关键字

1.百分号通配符 % ,匹配任意长度的字符,甚至包括零字符。

SELECT f_id,f_name
FROM fruits
WHERE f_name LIKE 'b%'; #查询首字母为b

2.下划线通配符 “_”,一次只能匹配任意一个字符。

SELECT f_id,f_name FROM fruits WHERE f_name LIKE '____y' #匹配y前面只有四个字母的记录

3.匹配指定范围中的任何单个字符。

方括号 ‘[ ]’ 指定一个字符集合,只要匹配其中任何一个字符,即为所查找的文本。

SELECT *FROM fruits
WHERE f_name LIKE '[ abc ]%'

4.匹配不属于指定范围的任何单个字符。

SELECT *FROM fruits
WHERE f_name LIKE '[ ^abc ]%'

使用 IS NULL 查询空值

SELECT c_id,c_name,c_email FROM customers WHERE c_email IS NULL #c_email 为空
SELECT c_id,c_name,c_email FROM customers WHERE c_email IS NOT NULL #c_email 不为空

使用 EXISTS 关键字

EXISTS 关键字后面的参数是一个任意的子查询,系统对子查询进行运算判断是否返回行,返回为TRUE,执行外层语句,不返回为FALSE,不执行外层语句。

SELECT * FROM fruits
WHERE EXISTS
(SELECT s_name FROM suppliers WHERE s_id = 107);

SELECT * FROM fruits
WHERE f_price>20 AND EXISTS
(SELECT s_name FROM suppliers WHERE s_id = 107);

使用 ORDER BY 排序

1.单行排序

SELECT f_name FROM fruits ORDER BY f_name;

2.多行排序

SELECT f_name FROM fruits ORDER BY f_name,f_price;

3.指定方向排序
默认情况下ASC为升序,DESC为降序。

SELECT f_name FROM fruits ORDER f_price DESC;

使用 GROUP BY 分组

1.创建分组

SELECT s_id,COUNT(*) AS Total FROM fruits GROUP BY s_id;

2.多字段分组

SELECT s_id,f_name FROM fruits group by s_id,f_name;

使用 HAVING 对分组结果过滤

SELECT s_id,COUNT(*) AS Total FROM fruits GROUP BY s_id HAVING COUNT(*) >1;

使用 UNION 合并查询结果集

使用 ALL 效果是不删除重复也不对结果进行自动排序

SELECT s_id,f_name,f_price
FROM fruits
WHERE f_price < 9.0
UNION ALL
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id = 101;

猜你喜欢

转载自blog.csdn.net/weixin_42320142/article/details/102717280
今日推荐