Modern SQL-Modify

数据修改

​ 在此前的几个文档中,我们都专注于对于数据库数据的抽取,接下来可以进入对于数据库数据的增删改了。这也基本是modernSQL的尾声了。

删除

​ 删除的关键字是delete关键字。这个关键字的使用与select使用的方式十分相似。需要注意的是,我们对于数据库数据的删除的基本单位是元组,我们不能对于一个元组中的一个或多个特定属性进行删除。

​ 这样规定的原因想必也十分明显,毕竟如果只对于部分属性进行删除那么首先其在数据的管理上就增加了难度,并且这还带来一系列的麻烦。

​ 删除语句的格式

1
2
delete from r
where P;

​ 这个格式的含义是对于r关系中的满足P谓词的所有元组进行删除。至于from与where子句之间的进阶使用,跟前面提到过的并无不同,这里就不再进行赘诉,接下来看一个小demo就过了。

删除在Waston大楼里工作的所有教师元组。

1
2
3
4
5
delete from instructor
where dept_name in( select dept_name
from department
where building = 'Waston'
);

插入

插入的关键字是 INSERT 关键字。这个关键字的使用与 SELECT 使用的方式十分相似。需要注意的是,插入操作的基本单位是元组,我们不能仅插入一个元组中的一个或多个特定属性(列),而必须为所有列提供对应的值。

这样规定的原因也十分明显,毕竟如果只插入部分属性,那么我们就无法保证数据的完整性和一致性,且这样会导致一些不必要的管理麻烦。

插入语句的格式

1
2
INSERT INTO 表名 (列1, 列2, ..., 列N)
VALUES (值1, 值2, ..., 值N);

这个格式的含义是向 表名 表中插入一条新的记录,其中每个列的值由 VALUES 子句提供。列名和对应的值按顺序匹配,确保每一列都有相应的值。至于列和值的详细使用,与前面提到的 SELECT 子句并无不同,这里就不再赘述。接下来看一个简单的插入示例。

插入一条新的教师记录

1
2
INSERT INTO instructor (instructor_id, name, dept_name, salary)
VALUES (1001, 'John Doe', 'Computer Science', 85000);

在这个示例中,我们向 instructor 表中插入一条新记录,包含了 instructor_idnamedept_namesalary 四个属性的值。


更新

更新的关键字是 UPDATE 关键字。这个关键字的使用与 SELECTDELETE 使用的方式十分相似。需要注意的是,更新操作的基本单位是元组,也就是说,我们对一个元组中的某些属性进行更新,而不是对单个属性进行删除或插入。

这样规定的原因同样十分明显,毕竟如果仅更新一个属性而不明确其它属性的状态,可能会导致数据的不一致或丢失。因此,更新操作通常涉及某些特定条件的筛选。

更新语句的格式

1
2
3
UPDATE 表名
SET1 =1, 列2 =2, ..., 列N = 值N
WHERE 条件;

这个格式的含义是更新 表名 表中满足 WHERE 条件的所有记录,将它们的某些列的值更新为新值。SET 子句用于指定更新的列及其新值,WHERE 子句用于筛选需要更新的记录。需要注意的是,WHERE 子句的使用至关重要,因为如果没有指定条件,表中所有记录都会被更新。

更新在 Waston 大楼的所有教师的薪水

1
2
3
4
5
6
7
UPDATE instructor
SET salary = salary * 1.1
WHERE dept_name IN (
SELECT dept_name
FROM department
WHERE building = 'Waston'
);

在这个示例中,我们将所有在 ‘Waston’ 大楼工作的教师的薪水增加 10%。子查询 (SELECT dept_name FROM department WHERE building = 'Waston') 返回所有在 ‘Waston’ 大楼工作的系的名称,然后主查询更新这些系的所有教师薪水。

​ 简单过一遍语法,得开始去实践一下了。

-------------本文结束 感谢阅读-------------