数据库系统中,数据更新操作有三种:
1、向表中添加若干行数据
2、修改表中的数据
3、删除表中的若干行数据
一、插入数据
SQL的数据插入语句INSERT的形式:
1、插入元组
格式:INSERT INTO <表名>[(<属性列>[,<属性列2>]…)] VALUES(<常量1>[,<常量2>]…);
功能:将新元组插入到指定表中。其中新元组的属性列1的值为常量1,属性列2的值为常量2,以此类推。INTO子句没有出现属性列,新元组在这些列上默认为空值,但是如果表定义时有明确指出属性列不能为空值,就会报错。如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。
2、插入子查询结果
子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,也可以嵌套在INSERT语句中用以生成要插入的批量数据。
格式:INSERT INTO [(<属性列1>[,<属性列2>…]) 子查询;
二、修改数据
修改操作又称为更新操作,语句:
UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>];
功能:修改指定表中满足WHERE子句条件的元组。其中SET子句给出<表达式>的值用于取代相应的属性列值。如果没有WHERE子句就代表修改表中所有元组。
1、修改某一个元组的值
2、修改多个元组的值
3、带子查询的修改语句:子查询用以构造修改的条件
三、删除数据
格式:DELETE FROM <表名> [WHERE <条件>];
功能:从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句则表示删除表中全部元组,它只是删除表中的数据,并不是关于表的定义。
1、删除某一个元组的值
2、删除多个元组的值
3、带子查询的删除语句:子查询用以构造删除操作的条件
空值的处理
所谓空值就是“不知道”或“不存在”或“无意义”的值。SQL语言中允许某些元组的某些属性在一定情况下取空值。
1、该属性应该有一个值,但不知道它的具体值;
2、该属性不应该有值;
3、由于某种原因不便于填写。
空值是一个很特殊的值,含有不确定性,对关系运算带来特殊的问题,需要做特殊的处理。
1、空值的产生
1)插入数据的时候没有进行值的插入
2)外连接也会产生空值
3)空值的关系运算也会产生空值
2、空值的判断
用IS NULL和IS NOT NULL判断是否为空值。
3、空值的约束条件
属性定义(或域定义)中有NOT NULL约束条件不能取空值,加了UNIQUE限制的属性不能取空值,码属性不能取空值。
4、空值的算术运算、比较运算和逻辑运算
空值与另一个值(包括空值)的算术运算结果为空值,空值与另一个值(包括空值)的比较运算结构为UNKNOWN。有了UNKOWN后,传统的逻辑运算中二值(TRUE/FALSE)就扩展成了三值逻辑。
以下是逻辑运算符真值表