SQL语言(三)数据库操纵语言

本文介绍了SQL的数据操作语言DML,包括如何删除、修改和更新数据库记录。通过实例展示了删除特定条件的记录,插入新的元组,以及有条件地更新元组的特定属性,强调了更新顺序的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DML,英文叫做 Data Manipulation Language,数据操作语言,我们用它操作和数据库相关的记录,比如增加、删除、修改数据表中的记录。

删除数据表中的记录

我们只能删除整个元组,而不能只删除某些属性上的值。SQL用如下语句表示删除:

delete from r
where P;

其中P代表一个谓词,r代表一个关系。
例,从instructor关系中删除与Finance系教师相关的所有元组。

delete from instructor
where dept_name =‘Finance’;

修改数据库中的记录

SQL允许使用insert语句,向关系中插入元组,形式如下:

insert into r [(c1,c2,)] 
 values (e1,e2,);
insert into r [(c1,c2,)] 
 select e1,e2,from;

例1,假设我们要插入的信息是Computer Science系开设的名为“Database Systems”的课程CS-437,它有4个学分。

insert into course
 values (‘CS-437,Database Systems’, ‘Comp. Sci., 4);

SQL允许在insert语句中指定属性,所以上述语句还可写为:

insert into course (course_id, title, dept_name, credits)
 values (‘CS-437,Database Systems’, ‘Comp. Sci., 4);

例2,假设我们想让Music系每个修满144学分的学生成为Music系的教师,其工资为18
000美元

insert into instructor
select ID, name, dept_name, 18000
from student
where dept_name = ‘Music’ and tot_cred > 144;

更新数据库中的记录

SQL允许使用update语句,在不改变整个元组的情况下改变其部分属性的值,形式如下:

update r
set <c1=e1 ,[c2=e2,]>
[where <condition>] ;

例1,假设给工资超过100 000美元的教师涨3%的工资,其余教师涨5%
我们可以写两条update语句:

update instructor
set salary = salary * 1.03
where salary > 100000;
update instructor
set salary = salary * 1.05
where salary <= 100000;

注意:这两条update语句的顺序十分重要。如果调换顺序,可能导致工资略少于100 000美元的教师将增长8%的工资。
针对上例查询,我们也可以使用SQL提供的case结构,避免更新次序引发的问题,形式如下:

case
when pred1 then result1
when pred2 then result2
. . .
when predn then resultn
else result0
end

因此上例查询可重新为:

update instructor
set salary = case
			 when salary <= 100000 then salary * 1.05
			 else salary * 1.03
			 end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值