where 条件查询

条件 说明
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 或者 <> 不等于 两个都表示不等于。

数据库的数据非常多,在进行查询的时候,通过条件进行查询,可以过滤结果。
基本语法

  1. select * from table
  2. where 条件
  1. 查询学生表中 年龄(age)大于30岁的所有同学信息;

    1. select * from students
    2. where age>30;
  2. 查询学生表中 成绩(score) 大于60分 的所有同学信息;

    select * from students WHERE score > 60;
    

    image.png

  3. 查看所有男生同学的信息;

    select * from students where sex='男';
    

    如果条件的字段有字符串,需要在外面添加 单引号 或者双引号。

  4. 查看所有 有语文成绩的同学 信息; 科目(course)为语文;

image.png


练习

  1. 查看 课程(course)为 数学的 所有信息;
  2. 查看成绩(score) 小于 60 的所有信息;
  3. 查看年龄 不等于30 的所有信息;
  4. 查看成绩大于等于 90 的所有信息;

between … and … 区间

  1. 查询年龄在 30-50 之间的所有学生;

    select * from students
    where age between 30 and 50;
    

    image.png

  2. 成绩在60-90 之间的学生信息;

    select * from students where score between 60 and 90;
    

between … and … 中间只能是数字

in … 指定范围

  1. 查看所有同学中年龄为 30,35,38的同学信息;

    select * from students where age in (30,35,38);
    
  2. 查看所有同学中 成绩为 30, 80,90 的同学信息;

    select * from students WHERE score in (30,80,90);
    
  3. 查看有语文,数学成绩的同学信息;

    SELECT * FROM students WHERE course in ('语文','数学');
    

    like 模糊匹配

    使用like 可以对字符串进行模糊匹配。

% 匹配0个或者多个字符

  1. 查找所有姓王的同学信息;

    select * from students where username like "王%";
    
  2. 查找姓名中包含 字的所有学生信息;

    select * from students where username like "%小%";
    
  3. 查找姓名中 最后一个字是 字的学生信息;

    select * from students where username like "%锤";
    

    _ 匹配一个字符

  4. 查询姓名为 两个字的 学生信息。

    select * from students where username like "__";
    
  5. 查询姓名为三个字并且姓 王 的同学信息;

    select * from students WHERE username like "王__";
    

练习

  1. 查询 成绩在 30-60之间的同学信息;

    select * from students where score between 30 and 60;
    
  2. 查询 英语,语文 成绩;

    select * from students where course in ("语文","英语");
    
  3. 查询 成绩为 30,60,90的同学;

    select * from students where score in (30,60,90);
    
  4. 查询 姓名中包含飞字的学生信息;

    select * from students where username like "%飞%";
    
  5. 查询 所有姓名为 三个字的学生信息;

    select * from students where username like "___";
    
  6. 查询 科目不等于 数学的所有信息; ```sql select * from students where course <> “数学”;

<a name="yF6ZT"></a>
## is Null 为空
![image.png](https://cdn.nlark.com/yuque/0/2022/png/87080/1646466946901-3fe23aca-b439-4dd7-bdec-889bf4b382fd.png#clientId=u37731247-9575-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=147&id=u619c0246&margin=%5Bobject%20Object%5D&name=image.png&originHeight=294&originWidth=600&originalType=binary&ratio=1&rotation=0&showTitle=false&size=26482&status=done&style=none&taskId=u32a1f6b0-6308-462e-9c63-2dfb68854dc&title=&width=300)<br />数据表中有 空的数据。

1. 查找 age 为 Null 的同学信息
```sql
select * from students where age is Null;

image.png

  1. 查找 score 为 空的学生信息;
    select * from students where score is Null;
    

    not 表示相反

not表示相反,使用方式放在 where 条件后面。

  1. 年龄不在30-60 之间

    select * from students where not age between 30 and 60;
    
  2. 年龄不为 Null 的学生信息;

    select * from students where not age is null;
    
  3. 姓名不为2个字的信息;

    select * from students where not username like "__";
    
  4. 年龄不在 30,35,38 岁的学生;

    select * from students where not age in (30,35,38);
    
  5. 查询 姓名中不包含飞字的学生信息;

    select * from students where not username like "%飞%";
    

    多个条件

    and 表示并且

    基本语法 ```sql select * from students WHERE — 第1个条件 And — 第2个条件

多个条件同时满足 使用 and

1. 查找年龄在 30岁以上,同时 成绩在60分以上;
```sql
select * from students where age > 30 and score > 60;

image.png

  1. 查找年龄不为Null 并且 姓名为3个字的同学; ```sql select * from students WHERE not age is null — 年龄不为null AND username like “_“; — 姓名为 3个字

3. 查找 年龄大于20岁,姓名包含`王`, 成绩在 60-80 之间;
```sql
select * from students where 
    age > 20
and
    username like "%王%"
and
    score between 60 and 80;
  1. 查找 成绩不是 30,60,90, 性别为男, 年龄在 20-30 之间; ```sql select * from students where not score in (30,60,90) and sex = ‘男’ and age between 20 and 30;

<a name="ZGF1P"></a>
## or 表示或者
多个条件中只要有1个条件符合即可。<br />基本语法
```sql
select * from students
where  条件1
or  条件2
  1. 年龄 30-50 或者 成绩在 大于80;

    select * from students
    where age between 30 and 50
    or score > 80;
    
  2. 年龄不在 30,35,40, 或者 成绩 不为null, 或者 姓名为 两个字;

    select * from students
    where not age in (30,35,40)   --   不在 30,35,40
    or not score is null          --   成绩 不为null
    or username like "__";        --   姓名为 两个字
    

and 和 or 一起使用

在一些复杂的条件中需要 and or 组合在一起使用,

  1. 符合下面两种条件之一即可;
    1. 年龄在30-50 并且 姓名为3个字 age between 30 and 50 and username like “_
    2. 语文成绩在80分以上 course=”语文” and score > 80 ```sql select * from students where (age between 30 and 50 and username like “_“) or (course=”语文” and score > 80);
![image.png](https://cdn.nlark.com/yuque/0/2022/png/87080/1646471616979-98ddbcda-46a0-405c-a047-a3b3d631c997.png#clientId=u37731247-9575-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=212&id=uc686a738&margin=%5Bobject%20Object%5D&name=image.png&originHeight=424&originWidth=934&originalType=binary&ratio=1&rotation=0&showTitle=false&size=34059&status=done&style=none&taskId=u98dec602-aa63-4f0e-b9f2-842661b7d4b&title=&width=467)

2. 如下两个条件, 必须同时符合
   1. 性别 男 或者 年龄>30      sex="男" or age > 30
   1. 姓名为3个字 或者 成绩>60     username like "___" or score > 60
```sql

select * from students
where (  sex="男" or age > 30)
and ( username like "___" or score > 60);

思维导图

作业


数据库作业

  1. 远程连接数据库, 数据库连接信息如下

    数据库地址: rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
    用户名: fanmao85
    密码:   85@fanmao
    
  2. 查询 所有同学的 姓名(username), 年龄(age) 信息;

  3. 查询 年龄在50-90 之间的同学;
  4. 查询 姓名为 三个字的同学;
  5. 查询 姓 王的同学;
  6. 查询 姓王的男同学;
  7. 查询 姓名中不包含 王 并且 姓名为2个字的同学;
  8. 查询 语文成绩及格的同学;
  9. 查询 数学成绩不及格的30岁以下的同学;
  10. 查询 成绩在30,60,90 的同学的语文成绩;
  11. 符合如下两个条件之一
    1. 性别为女 或者成绩 及格
    2. 语文大于80
  12. 必须符合如下条件
    1. 性别为男 或者 成绩及格
    2. 姓名为三个字 或者年龄 不在 30-50之间

请将数据库作业保存到文件中。

周作业

  1. 在gitee.com 网址上注册账号(已经有的不用再注册)登录上去 创建新的仓库,仓库名为fanmao_2022_3

  2. 使用root账号登录Linux服务器,进入 /tmp 目录

  3. 删除 /tmp 目录下所有的文件
  4. 使用 yum -y install git命令 在Linux上安装git 命令
  5. 在Linux中执行下面语句

    git config --global user.name "改为自己的用户名"
    git config --global user.email "改为自己的邮箱"
    
  6. 在Linux中使用git clone 命令将 第1步创建的仓库 同步到 /tmp 目录下 ,同步成功之后 /tmp 目录下会有一个 fanmao_2022_3

  7. 在Linux上使用cd 进入 fanmao_2022_3 目录下
  8. 将数据库作业的答案文件上传到Linux的 /tmp/fanmao_2022_3 目录下
  9. 在Linux中使用 git 命令提交 到git 仓库
  10. 打开 码云 网站找到自己的仓库,检查文件是否已经提交成功。