0
点赞
收藏
分享

微信扫一扫

使用WHERE过滤数据 [MySQL][数据库]

i奇异 2022-03-11 阅读 46

使用WHERE过滤数据

通过使用WHERE关键字,我们可以在查询操作时对表中的数据进行过滤

下面我们通过两个例子来理解如何通过使用WHERE关键字过滤数据

问题一 : 查询员工表中90号部门的员工信息

eg:

SELECT * 
FROM employees
WHERE department_id = 90;
  • *(星号)表示查询所有字段
  • WHERE关键字之后的表达式如果不等于1就会被过滤
    • 不等于1有两种情况:
      • 情况一: 为0(零)
      • 情况二: 为NULL(空值)
  • 这里就是如果department不为90,那么WHERE后面的表达式的结果不为1,那么数据就会被过滤

问题二 : 查询员工last_name为’King’的员工信息

  • 这里的last_name是员工表中的一个字段(也就是一个列),表示员工的 ‘姓’

eg:

SELECT * 
FROM employees 
WHERE last_name = 'king';
  • 过滤,过滤完之后只剩下姓为’king’的记录

前面我们说过,在Windows系统中,SQL是不区分大小写的,这个不区分大小写不包括’ ‘(单引号)和" "(双引号)中的内容,也就是说在SQL中如果是’ ‘(单引号)或者" "(双引号)中的内容,这个时候就是区分大小写的,但是在MySQL中,对于’ ‘(单引号)和" "(双引号)中的内容也是不区分大小写的 , 这个是MySQL自己对SQL标准的一种宽泛,但是在Oracle中并没有这种对于SQL语言的宽泛,那么我们如果是在Oracle中我们就可以发现’ '(单引号)中和" "(双引号)中的内容是区分大小写的

  • 那么由于这种情况,对于我们上面的问题二,在我们的员工表中,我们如果只有一个last_name为’King’的员工

    • 这里的’King’中的K是大写的

    • 那么在MySQL中对于问题二的解决方式就会有两种情况:

      • 情况一:
      SELECT * 
      FROM employees
      WHERE last_name = 'King'; # 这里的'King'中的K为大写K
      
      • 情况二:
      SELECT *
      FROM employees
      WHERE last_name = 'king'; # 这里的'king'中的k为小写的k
      

    注意: 虽然在MySQL中我们对于’ ‘(单引号)和" "(双引号)中的内容是不区分大小写的,但是我们在实际编程中还是应该要在’ '(单引号)和" "(双引号)中去刻意的区分大小写

    • 但是如果是在Oracle中对于问题二就只有一种情况:

      SELECT *
      FROM employees
      WHERE last_name ='King'; -- 这里的'King'中的K为大写的K
      
      • 这个就是因为我们的员工表中只有一个last_name为’King’的员工(这里的K为大写),这个时候我们为了能查询出这个员工,并且在Oracle中’ '(单引号)和" "(双引号)中内容是区分大小写的

补充:

WHERE子句紧随着FROM字句

  • 后面我们也会讲一些其他的关键字,也是要跟在FROM后面,但是由于WHERE关键字和FROM比较亲切,不管是什么时候我们的WHERE关键字都是要紧跟在FROM字句的下一句
举报

相关推荐

0 条评论