07、条件查询

1、语法

SELECT * FROM <表名> WHERE <条件表达式>

2、举例

SELECT语句可以通过WHERE条件来设定查询条件,查询结果是满足查询条件的记录。

例如,要指定条件“分数在80分或以上的学生”,写成WHERE条件就是

SELECT * FROM students WHERE score >= 80;

其中,WHERE关键字后面的score >= 80就是条件。score是列名,该列存储了学生的成绩,因此,score >= 80就筛选出了指定条件的记录:

id

class_id

name

gender

score

1

1

小明

M

90

2

1

小红

F

95

3

1

小军

M

88

5

2

小白

F

81

7

2

小林

M

85

8

3

小新

F

91

9

3

小王

M

89

10

3

小丽

F

88

条件表达式可以用 AND 表达满足条件1并且满足条件2。例如,符合条件“分数在80分或以上”,并且还符合条件“男生”,把这两个条件写出来:

  • 条件1:根据score列的数据判断:score >= 80;
  • 条件2:根据gender列的数据判断:gender = 'M',注意gender列存储的是字符串,需要用单引号括起来。
SELECT * FROM students WHERE score >= 80 AND gender = 'M';

结果如下:

id

class_id

name

gender

score

1

1

小明

M

90

3

1

小军

M

88

7

2

小林

M

85

9

3

小王

M

89

第二种条件是

OR ,表示满足条件1或者满足条件2。例如,把上述

AND查询的两个条件改为OR,查询结果就是“分数在80分或以上”或者“男生”,满足任意之一的条件即选出该记录:

SELECT * FROM students WHERE score >= 80 OR gender = 'M';

结果如下:

id

class_id

name

gender

score

1

1

小明

M

90

2

1

小红

F

95

3

1

小军

M

88

5

2

小白

F

81

6

2

小兵

M

55

7

2

小林

M

85

8

3

小新

F

91

9

3

小王

M

89

10

3

小丽

F

88

第三种条件是NOT ,表示“不符合该条件”的记录。例如,写一个“不是2班的学生”这个条件,可以先写出“是2班的学生”:class_id = 2,再加上NOT:NOT class_id = 2:

SELECT * FROM students WHERE NOT class_id = 2;

结果如下:

注意,NOT class_id = 2其实等价于class_id <> 2,因此,NOT查询不是很常用。

id

class_id

name

gender

score

1

1

小明

M

90

2

1

小红

F

95

3

1

小军

M

88

4

1

小米

F

73

8

3

小新

F

91

9

3

小王

M

89

10

3

小丽

F

88

要组合三个或者更多的条件,就需要用小括号()表示如何进行条件运算。例如,编写一个复杂的条件:分数在80以下或者90以上,并且是男生:

SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';

结果如下:

id

class_id

name

gender

score

6

2

小兵

M

55

如果不加括号,条件运算按照NOT、AND、OR的优先级进行,即NOT优先级最高,其次是AND,最后是OR。加上括号可以改变优先级。

3、常用

条件

表达式举例1

表达式举例2

说明

使用=判断相等

score = 80

name = 'abc'

字符串需要用单引号括起来

使用>判断大于

score > 80

name > 'abc'

字符串比较根据ASCII码,中文字符比较根据数据库设置

使用>=判断大于或相等

score >= 80

name >= 'abc'

使用

score < 80

name

使用

score

name

使用<>(或者 != )判断不相等

score <> 80

name <> 'abc'

使用LIKE判断相似

name LIKE 'ab%'

name LIKE '%bc%'

%表示任意字符,例如'ab%'将匹配'ab','abc','abcd'

使用 is 判断是否为null

score is null

name is not null

当值为null时判断

4、小结

  • 在条件查询时,AND 表示并且, OR 表示或, NOT 表示非
  • 在条件查询时,当某个列的值在一个固定的结果集里面,可以用 IN,比如 WHERE score IN (60, 90) 表示当score是60或者90
  • 在条件查询时,当某个列的值在一个固定范围内时,可以用BETWEEN ... AND,比如 WHERE score BETWEEN 60 AND 90,等同于 WHERE score >= 60 AND score
  • 模糊查询用LIKE,会根据字符串匹配
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值