数据库教程-SQL Not运算符

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本教程中,您将学习如何使用SQL NOT运算符来否定SELECT语句WHERE子句中的布尔表达式。

在前面已经学习了如何使用各种逻辑运算符,如:ANDORLIKEBETWEENINEXISTS。 这些运算符可帮助您在WHERE子句中形成灵活的条件。

要反转任何布尔表达式的结果,请使用NOT运算符。 以下演示如何使用NOT运算符。

NOT [Boolean_expression] 

下表显示了NOT运算符的结果。

原值 应用Not运算符后
TRUE FALSE
FALSE TRUE
NULL NULL

2. SQL NOT运算符示例

我们将使用employees表来演示NOT运算符。employees表的结构如下所示 –

mysql> DESC employees; +---------------+--------------+------+-----+---------+----------------+ | Field         | Type         | Null | Key | Default | Extra          | +---------------+--------------+------+-----+---------+----------------+ | employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment | | first_name    | varchar(20)  | YES  |     | NULL    |                | | last_name     | varchar(25)  | NO   |     | NULL    |                | | email         | varchar(100) | NO   |     | NULL    |                | | phone_number  | varchar(20)  | YES  |     | NULL    |                | | hire_date     | date         | NO   |     | NULL    |                | | job_id        | int(11)      | NO   | MUL | NULL    |                | | salary        | decimal(8,2) | NO   |     | NULL    |                | | manager_id    | int(11)      | YES  | MUL | NULL    |                | | department_id | int(11)      | YES  | MUL | NULL    |                | +---------------+--------------+------+-----+---------+----------------+ 10 rows in set 

以下语句检索在部门ID为5中工作的所有员工。如下查询语句 –

SELECT     employee_id,     first_name,     last_name,     salary FROM     employees WHERE     department_id = 5 ORDER BY     salary; 

执行上面示例代码,得到以下结果 –

SQL Not运算符

查询工作在部门ID为5且薪水不超过5000的员工。

SELECT     employee_id,     first_name,     last_name,     salary FROM     employees WHERE     department_id = 5 AND NOT salary > 5000 ORDER BY     salary; 

执行上面示例代码,得到以下结果 –

+-------------+------------+-----------+--------+ | employee_id | first_name | last_name | salary | +-------------+------------+-----------+--------+ |         126 | Irene      | Liu       | 2700   | |         193 | Britney    | Zhao      | 3900   | |         192 | Sarah      | Yang      | 4000   | +-------------+------------+-----------+--------+ 3 rows in set 

SQL NOT IN运算符示例

要否定IN运算符,请使用NOT运算符。 例如,以下语句将获取不在部门ID为1,23中工作的所有员工。

SELECT     employee_id,     first_name,     last_name,     department_id FROM     employees WHERE     department_id NOT IN (1, 2, 3) ORDER BY     first_name; 

执行上面查询语句,得到以下结果 –

+-------------+------------+-----------+---------------+ | employee_id | first_name | last_name | department_id | +-------------+------------+-----------+---------------+ |         103 | Alexander  | Lee       |             6 | |         193 | Britney    | Zhao      |             5 | |         104 | Bruce      | Wong      |             6 | |         179 | Charles    | Yang      |             8 | |         109 | Daniel     | Chen      |            10 | |         105 | David      | Liang     |             6 | |         107 | Diana      | Chen      |             6 | |         204 | Hermann    | Wu        |             7 | |         126 | Irene      | Liu       |             5 | ...... |         100 | Steven     | Lee       |             9 | |         203 | Susan      | Zhou      |             4 | |         106 | Valli      | Chen      |             6 | |         206 | William    | Wu        |            11 | +-------------+------------+-----------+---------------+ 31 rows in set 

SQL NOT LIKE运算符示例

可以使用NOT LIKE来否定LIKE运算符。 例如,以下语句检索名字不以字母M开头的所有员工。

SELECT     first_name,     last_name FROM     employees WHERE     first_name NOT LIKE 'M%' ORDER BY     first_name; 

执行上面查询语句,得到以下结果 –

+------------+-----------+ | first_name | last_name | +------------+-----------+ | Alexander  | Lee       | | Alexander  | Su        | | Avg        | Su        | | Britney    | Zhao      | | Bruce      | Wong      | | Charles    | Yang      | ... ... | Shelley    | Wu        | | Shelli     | Zhang     | | Sigal      | Zhang     | | Steven     | Lee       | | Susan      | Zhou      | | Valli      | Chen      | | William    | Wu        | +------------+-----------+ 34 rows in set 

SQL NOT BETWEEN示例

以下示例说明如何使用NOT来否定BETWEEN运算符,以使员工的薪水不在10001000之间。

SELECT     employee_id,     first_name,     last_name,     salary FROM     employees WHERE     salary NOT BETWEEN 3000 AND 5000 ORDER BY     salary; 

执行上面查询语句,得到以下结果 –

+-------------+------------+-----------+--------+ | employee_id | first_name | last_name | salary | +-------------+------------+-----------+--------+ |         119 | Karen      | Zhang     | 2500   | |         118 | Guy        | Zhang     | 2600   | |         126 | Irene      | Liu       | 2700   | |         117 | Sigal      | Zhang     | 2800   | |         116 | Shelli     | Zhang     | 2900   | |         104 | Bruce      | Wong      | 6000   | |         202 | Pat        | Zhou      | 6000   | |         179 | Charles    | Yang      | 6200   | ... ... |         205 | Shelley    | Wu        | 12000  | |         201 | Michael    | Zhou      | 13000  | |         146 | Karen      | Liu       | 13500  | |         145 | John       | Liu       | 14000  | |         102 | Lex        | Liang     | 17000  | |         101 | Neena      | Wong      | 17000  | |         100 | Steven     | Lee       | 24000  | +-------------+------------+-----------+--------+ 33 rows in set 

SQL NOT EXISTS示例

请参考以下员工和家属表:

SQL Not运算符

以下查询使用NOT EXISTS运算符来获取没有任何家属的员工。

SELECT     employee_id, first_name, last_name FROM     employees e WHERE     NOT EXISTS (         SELECT             employee_id         FROM             dependents d         WHERE             d.employee_id = e.employee_id     ); 

执行上面查询语句,得到以下结果 –

SQL Not运算符

通过上面的学习,现在您应该知道如何使用NOT运算符来否定布尔表达式了。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 sql教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/24/数据库教程-sql-not运算符/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注