一、前言
本文将讲解数据查询中的条件查询
二、语法
1.格式
SELECT 字段列表 FROM 表名 WHERE 条件列表
2.举例
这里我们新建一个表
StudentInformation
Name | Country | Age |
张三 | 上海 | 19 |
李四 | 上海 | 21 |
王五 | 重庆 | 21 |
老六 | 北京 | 20 |
老七 | 南京 | 21 |
然后输入T-SQL语句
SELECT * FROM StudentInformation WHERE Age > 20;
该语句的意思是:查询并列举表中年龄大于20的所有列
三、条件
这里列举一些SQL语句中独有的,比较运算符中的大于、小于、大于等于、小于等于、等于以及逻辑运算符中的或与非就不再列举了,与编程语言中一致
比较运算符 | 功能 |
<> 或者 != | 不等于 |
BETWEEN …AND… | 在某范围内 |
IN(…) | 在in后列表中的值多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配多个字符) |
IS NULL | 为NULL值 |
四、空值判读查询
1.格式
查询并返回某字段为空的行
SELECT 字段列表 FROM 表名 WHERE 字段列表 IS NULL;
查询并返回某字段不为空的行
SELECT 字段列表 FROM 表名 WHERE 字段列表 IS NOT NULL;
2.举例
查询并列举表中年龄为空所有列
SELECT * FROM StudentInformation WHERE Age IS NULL;
查询并列举表中年龄不为空所有列
SELECT * FROM StudentInformation WHERE Age IS NOT NULL;
五、范围查询
1.格式
可以有很多种语句来查询两个值之间的范围
- 使用逻辑运算符
SELECT 字段列表 FROM 表名 WHERE 字段列表 >= N && 字段列表 <= M
- 使用连接符and
SELECT 字段列表 FROM 表名 WHERE 字段列表 >= N and 字段列表 <= M;
- 使用between···and语句( BETWEEN 后写较小值,AND 后写较大值)
SELECT 字段列表 FROM 表名 WHERE 字段列表 BETWEEN N and M;
2.举例
SELECT * FROM StudentInformation WHERE Age > 18 && Age < 21;
SELECT * FROM StudentInformation WHERE Age > 18 and Age < 21;
SELECT * FROM StudentInformation WHERE Age BETWEEN 18 and 21;
3.其它情况(某范围外/多条件满足其一)
- 某个范围之外的行
SELECT 字段列表 FROM 表名 WHERE 字段列表 NOT BETWEEN N and M;
- 当查询很多条件满足其中一个的时候(查询年龄为19/23/24/29的客户)可以用IN
SELECT 字段列表 FROM 表名 WHERE 字段列表 IN(条件1,条件2...);
例如:
SELECT * FROM StudentInformation WHERE Age IN(19,23,24,29);
六、模糊查询
1.概述
一般格式为:
SELECT 字段列表 FROM 表名 WHERE 字段列表 LIKE 表达式
2.通配符总览
通配符 | 含义 |
% | 代表任意多个字符 |
_ | 代表单个任意字符 |
[] | 代表方框内列出的任意字符 |
[^] | 代表没有在方框内列出的任意字符 |
3.通配符%
一个%代表任意个字符,如果要查询以a开头的单词的话可以用··· LIKE 'a%'
我们还是用一张表格来实际讲解一下
Student
Name | Country | Age |
张三 | 上海 | 19 |
李四 | 上海 | 21 |
王某某 | 重庆 | 21 |
老六 | 北京 | 20 |
老七 | 南京 | 21 |
赵某某 | 北京 | 23 |
老某某 | 天津 | 19 |
SELECT * FROM Student WHERE Name LIKE '老%'
该语句的意思是:查找以老开头的名字,不论名字是几个字的都要列出
4.通配符_
一个_代表一个字符,如果要查询三个字母组成的单词的话可以用··· LIKE '___'
我们还是用一张表格来实际讲解一下
还是用上面的表格,我们查询一下名字为三个字的
SELECT * FROM Student WHERE Name LIKE '___';
5.通配符[]
可以理解为查询所有[]中列出的字段
SELECT * FROM Student WHERE Name LIKE '[老]%';
即列出所有以老字开头的人名字的行
6.通配符[^]
可以理解为查询去掉所有[^]中 ^后列出所有字段的行
SELECT * FROM Student WHERE Name LIKE '[^老]%';
这条语句的意思是去掉所有以老字开头的名字后列出所有字段的行
七、结语
下一篇文章我们会讲述有关于聚合函数有关内容