📅  最后修改于: 2020-11-30 09:01:17             🧑  作者: Mango
在本节中,我们将了解PostgreSQL NOT Condition的工作原理,并查看带有IN,LIKE,BETWEEN,IS NULL和EXISTS条件的NOT条件的示例。
PostgreSQL NOT条件与WHERE子句一起使用来否定命令中的条件。 NOT条件也称为NOT运算符。
在PostgreSQL中, NOT条件可以与SELECT , INSERT , UPDATE和DELETE命令一起使用。
NOT Condition
在以上语法中,我们使用了以下参数:
Parameter | Description |
---|---|
Condition | The Condition parameter is used to define the conditions which we want to negate. |
带有IN条件的PostgreSQL NOT运算符用于获取那些值与列表值不匹配的行。
为此,我们从组织数据库中获取客户表。
下面的示例显示具有条件IN的Not Operator,以标识last_name不是‘Smith’或’Brown’的客户信息:
SELECT customer_id, first_name, last_name
FROM Customer
WHERE last_name NOT IN ('Smith', 'Brown')
ORDER BY customer_id;
输出量
执行上面的命令时,我们将获得以下输出,显示last_name不是Smith或Brown的那些记录。
在PostgreSQL中,我们还可以将NOT运算符与Like条件结合使用。
在下面的示例中,我们将学习在PostgreSQL LIKE条件下使用PostgreSQL NOT运算符。
以下命令用于标识其last_name不以字符串Smi开头的那些客户信息:
SELECT customer_id, first_name, last_name
FROM Customer
WHERE last_name NOT LIKE 'Smi%'
ORDER BY customer_id;
输出量
执行上述语句后,我们将获得以下输出,该输出显示last_name与Smi不同的那些客户。
在PostgreSQL中,我们还可以在WHERE子句中将NOT运算符与BETWEEN Condition一起使用,以从已定义条件与PostgreSQL Between Condition相矛盾的表中获取数据。
在下面的示例中,我们使用Javatpoint数据库中的Car表,在该表中我们尝试获取car_price不在100000到399999范围内的那些汽车详细信息:
SELECT car_id, car_name, car_price, car_model
FROM car
WHERE car_price NOT BETWEEN 100000 AND 399999
ORDER BY car_id DESC;
输出量
成功执行以上命令后,我们将获得以下输出,其中显示价格不在100000到399999之间的汽车信息:
在下面的示例中,我们将大于(>)和小于(<)运算符与OR运算符符一起使用,而不是使用NOT BETWEEN / AND运算符。下面的命令等效于上面的SELECT查询:
SELECT car_id, car_name, car_price, car_model
FROM car
WHERE car_price< 100000
OR car_price> 399999
ORDER BY car_id DESC;
输出量
执行上述命令后,我们将得到以下结果:
在PostgreSQL中, IS NULL条件可以与NOT条件结合使用。
我们正在使用Organization数据库中的Customer表。在下面的示例中,我们将识别order_id不为null的那些客户记录。
SELECT customer_id, first_name, last_name, order_id
FROM Customer
WHERE order_id IS NOT NULL
ORDER BY customer_id;
输出量
执行上述命令后,我们将获得以下结果,该结果显示了order_id不为null的那些客户详细信息。
在PostgreSQL中, EXISTS运算符用于测试子查询中是否存在任何数据,并且Exists条件还可以与WHERE子句中的NOT运算符组合。
让我们看一个示例示例,以了解NOT条件和Exists条件的工作。
在以下命令中,我们将从Javatpoint数据库中获取employee和department表。
在emp_id列的帮助下,识别部门表中不存在的所有员工记录。
SELECT emp_id, emp_fname, emp_lname, location
FROM employee
WHERE NOT EXISTS (
SELECT *
FROM department
WHERE employee.emp_id= department.emp_id);
输出量
执行完上述命令后,我们将获得以下输出,该输出返回所有employee表记录。部门表中没有给定emp_id的记录:
在PostgreSQL NOT Condition部分中,我们学习了以下主题: