数据更新

插入

1. 插入元组

语句格式

INSERT

INTO <表名> [(<属性列1>[,<属性列2 >…)]

VALUES (<常量1> [,<常量2>] … )

功能

将新元组插入指定表中

INTO子句

  • 属性列的顺序可与表定义中的顺序不一致

  • 没有指定属性列

  • 指定部分属性列

VALUES子句

  • 提供的值必须与INTO子句匹配

    • 值的个数

    • 值的类型

2. 插入子查询结果

可以一次插入多个元组

语句格式

功能

将子查询结果插入指定表中

INTO子句(与插入元组类似)

子查询

SELECT子句目标列必须与INTO子句匹配

  • 值的个数

  • 值的类型

完整性检测

RDBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则

  • 实体完整性

  • 参照完整性

  • 用户定义的完整性

    • NOT NULL约束

    • UNIQUE约束

    • 值域约束

3. 使用 Select … Into 语句

可以用Select … Into来创建一个新表,并将结果行从查询插入新表中。使用该语句,必须在目的数据库内具有 CREATE TABLE 权限。通过在 WHERE 子句中包含 FALSE 条件,可以使用 SELECT...INTO 创建没有数据的相同表定义,即定义新的表结构。

通过创建新表,并把查询结果添加到新表,可以分解对一个表的复杂查询要求,简化SQL语句,提高SQL语句的可读性。

更新

语句格式

UPDATE <表名>

SET <列名>=<表达式>[,<列名>=<表达式>]…

[WHERE <条件>];

功能——修改指定表中满足WHERE子句条件的元组

SET子句

  • 指定修改方式

  • 要修改的列

  • 修改后取值

WHERE子句

  • 指定要修改的元组

  • 缺省表示要修改表中的所有元组

修改方式

1. 修改某一个元组的值

2. 修改多个元组的值

3. 带子查询的修改语句

检查完整性

RDBMS在执行修改语句时会检查修改操作

  • 是否破坏表上已定义的完整性规则

  • 实体完整性

  • 主码不允许修改

  • 用户定义的完整性

    • NOT NULL约束

    • UNIQUE约束

    • 值域约束

删除

语句格式

DELETE

FROM <表名>

[WHERE <条件>];

功能——删除指定表中满足WHERE子句条件的元组

WHERE子句

  • 指定要删除的元组

  • 缺省表示要删除表中的全部元组,表的定义仍在字典中

1. 删除某一个元组的值

2. 删除多个元组的值

3. 带子查询的删除语句

Last updated

Was this helpful?