使用WHERE过滤数据
通过使用WHERE关键字,我们可以在查询操作时对表中的数据进行过滤
下面我们通过两个例子来理解如何通过使用WHERE关键字过滤数据
问题一 : 查询员工表中90号部门的员工信息
eg:
SELECT *
FROM employees
WHERE department_id = 90;
- *(星号)表示查询所有字段
- WHERE关键字之后的表达式如果不等于1就会被过滤
- 不等于1有两种情况:
- 情况一: 为0(零)
- 情况二: 为NULL(空值)
- 不等于1有两种情况:
- 这里就是如果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字句的下一句