SQL入门之第四讲——SELECT查询语句之WHERE条件子句
在查询数据过程中,需要特定查询出一些数据,那么就需要WHERE子句了。常用的查询条件:1.比较运算符2.AND,OR运算符3.IN运算符4.BETWEEN运算符5.LIKE运算符6.IS NULL 运算符7.REGEXP正则表达式WHERE条件基本语法如下:select <字段名> from <表名> where <条件>;1. 比较运算符where子句中最常用
在查询数据过程中,需要特定查询出一些数据,那么就需要WHERE子句了。
常用的查询条件:
1.比较运算符
2.AND,OR运算符
3.IN运算符
4.BETWEEN运算符
5.LIKE运算符
6.IS NULL 运算符
7.REGEXP正则表达式
WHERE条件基本语法如下:
select <字段名> from <表名> where <条件>;
1. 比较运算符
-
where子句中最常用到的就是比较运算符了,主要有一下:
大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=或者<>)实例:在学生表中查询出 “班主任Tid” 不为2的数据
select * from students where Tid <> 2;
执行结果:
-
也可以对日期的数据进行比较运算
实例:在学生表中查询出 1995年后出生的学生数据
select * from students where Sage >= '1995-01-01'; --注意日期需要用引号围起来
执行结果:
2. AND,OR运算符
-
如果查询的条件中有多个条件时,就需要用到AND 和 OR 运算符来进行连接
AND运算符(需要同时满足2个条件):
实例:在学生表中查询出 1991年后出生的学生并且为男生的数据select * from students where Sage >= '1993-01-01' and Ssex = '男'; --注意日期需要用引号围起来
执行结果:
OR运算符(只需要满足1个条件即可):
实例:在学生表中查询出 1991年后出生的学生并且为男生的数据select * from students where Sage >= '1995-01-01' or Ssex = '女';
执行结果:
AND和OR条件如果同时使用的话,AND的优先级更高
3. IN运算符
-
如果在查询过程中,需要查出3个不同的姓名,一般情况是这样进行查询
实例:SELECT* FROM students WHERE Sname = '李超' OR Sname = '方春梅' OR Sname = '阚萍';
执行结果:
-
但实际这种查询比较麻烦,需要用到比较多的or条件,这种就使用IN运算符来解决
SELECT* FROM students WHERE Sname IN ('李超','方春梅','阚萍')
执行结果:
-
也可以在IN前面加上NOT ,来查询不属于列表的数据
SELECT* FROM students WHERE Sname NOT IN ('李超','方春梅','阚萍')
执行结果:
4. BETWEEN运算符
-
如果在查询过程中,要表达范围行内的条件,例如查询Tid在2-5之间的数据(包括2和5),查询条件可以这样写
实例:
select * from students where Sid >=2 and Sid <=5;
执行结果:
-
也可以使用BETWEEN运算符
select * from students where Sid BETWEEN 2 and 5;
执行结果:
注意的是:BETWEEN和AND条件是需要结合使用的,BETWEEN和AND的区间是包含是两端点的 -
使用BETWEEN运算符来表示日期范围
SELECT * FROM students WHERE Sage BETWEEN '1995-01-01' AND '1998-01-01';
执行结果:
5. LIKE运算符
-
在where子句中,可以使用=号来设定获取的值,例如,需要查询='李超’的名字,就可以用Sname = ‘李超’
-
有时候我们需要获取部分数据中含有 ‘李’ 的数据,就可以使用Like运算符来执行
1. 在使用Like的时候可以搭配下面的通配符来使用:符号 意义 % 任何个数的字符 _ 单个字符
实例:在学生表中,我们获取姓名中含有 ‘王’ 字的所有数据
select * from students where Sname LIKE '%王%'
执行结果:
实例:在学生表中,我们获取姓名中不包含 ‘王’ 字的所有数据
select * from students where Sname NOT LIKE '%王%'
实例:在学生表中,我们获取姓名有三个字,中间一个字为 ‘王’ 字的所有数据
select * from students where Sname LIKE '_王_'
实例:在学生表中,获取姓名的最后一个字为 ‘王’ 字的所有数据
select * from students where Sname LIKE '%王'
实例:在学生表中,获取姓名的第一个字为 ‘王’ 字的所有数据
select * from students where Sname LIKE '王%'
执行结果:
6. IS NULL 运算符
- 这个主要是用于搜索空数据,用IS NULL 运算符就能找出空值
实例:在学生表中,找出姓名为空的所有数据
select * from students where Sname IS NULL
实例:在学生表中,找出姓名不为空的所有数据
select * from students where Sname IS NOT NULL
7. REGEXP正则表达式
- REGEXP是正则表达式,主要是用于搜索字符串数据,与LIKE运算符相比,他的适用场景更加广泛
REGEXP的常用用法如下:符号 意义 ^ 匹配以 X 开头的数据 % 匹配以 X 结尾的数据 [abc] 匹配含abc的数据 [a-c] 匹配含a到c之间的数据(包含a和c)
具体实例如下:
- 实例1:查找含有 ‘建’ 的数据
select * from students where Sname regexp '建';
- 实例2: 查找’张’字开头的数据
select * from students where Sname regexp '^张';
- 实例3: 查找’华’字结尾的数据
select * from students where Sname regexp '华$';
- 实例4: 查找’王’或着’李’字开头的数据
select * from students where Sname regexp '^[王李]';
- 实例5: 查询Sid为2-5的数据
select * from students where Sid regexp '[2-5]';
- 实例6: 查询Sid为2-5 或着8-10的数据
select * from students where Sid regexp '[2-5]|[7-9]';
更多推荐
所有评论(0)