![](https://csdnimg.cn/release/download_crawler_static/87183414/bg6.jpg)
6
/
28
76811786.doc
TopSage.com
WHERE GRADE <= SALARY;
此时,Indiana Jones 应该出现在结果表中。因为 NULL 都是相等的,所以可以想象它
们是能够通过 GRADE 小于等于 SALARY 的检查的。这其实是一个毫无疑义的查询,但是
并没有关系。SQL 允许进行这样的比较,只要两个列都是数字类型的。然而,Indiana Jones
并没有出现在查询的结果中,为什么?
正如我们早先提到过的,NULL 表示未知的值(而不是象某些人所想象的那样表示一
个为 NULL 的值)。对于 SQL 来说意味着这个值是未知的,而只要这个值为未知,就不能
将其与其他值比较(即使其他值也是 NULL)。所以 SQL 允许除了在 true 和 false 之外还有
第三种类型的真值,称之为“非确定”(unknown)值。
如果比较的两边都是 NULL,整个断言就被认为是非确定的。将一个非确定断言取反
或使用 AND 或 OR 与其他断言进行合并之后,其结果仍是非确定的。由于结果表中只包
括断言值为“真”的行,所以 NULL 不可能满足该检查。从而需要使用特殊的操作符 IS NULL
和 IS NOT NULL。
UPDATE 语句
UPDATE 语句允许用户在已知的表中对现有的行进行修改。
例如,我们刚刚发现 Indiana Jones 的等级为 16,工资为$40,000.00,我们可以通过下
面的 SQL 语句对数据库进行更新(并清除那些烦人的 NULL)。
UPDATE EMPLOYEES
SET GRADE = 16, SALARY = 40000
WHERE FIRST_NAME = 'Indiana'
AND LAST_NAME = 'Jones';
上面的例子说明了一个单行更新,但是 UPDATE 语句可以对多行进行操作。满足
WHERE 条件的所有行都将被更新。如果,你想让 Boston 办事处中的所有职员搬到 New
York,你可以使用如下语句:
UPDATE EMPLOYEES
SET BRANCH_OFFICE = 'New York'
WHERE BRANCH_OFFICE = 'Boston';
如果忽略 WHERE 子句,表中所有行中的部门值都将被更新为'New York'。
UPDATE 语句的语法流图如下面所示:
UPDATE table
SET column = value [{, column = value}]
[ WHERE predicate [ { logical-connector predicate}]];
DELETE 语句
DELETE 语句用来删除已知表中的行。如同UPDATE 语句中一样,所有满足WHERE
子句中条件的行都将被删除。由于 SQL 中没有 UNDO 语句或是“你确认删除吗?”之类的
警告,在执行这条语句时千万要小心。如果决定取消 Los Angeles 办事处并解雇办事处的所
有职员,这一卑鄙的工作可以由以下这条语句来实现:
DELETE FROM EMPLOYEES
WHERE BRANCH_OFFICE = 'Los Angeles';
如同 UPDATE 语句中一样,省略 WHERE 子句将使得操作施加到表中所有的行。
DELETE 语句的语法流图如下面所示:
DELETE FROM table
[WHERE predicate [ { logical-connector predicate} ] ];
大家网,大家的!
http://www.topsage.com
更多精品在大家!