利用SQL语言进行增删改


SQL的更新操作

元组新增Insert:新增一个或一些元组到数据库的Table中
元组更新Update:对某些元组中的某些属性值进行重新设定
元组删除Delete:删除某些元组

SQL-DML既能单一记录操作,也能对记录集合进行批更新操作。
SQL-DML之更新操作需要利用前面介绍的子查询(Subquery)的概念,以便处理“一些”、“某些”等。

SQL-之INSERT

元组新增Insert命令有两种形式
单一元组新增命令形式:插入一条指定元组值的元组。
insert into 表名 [(列名[,列名]…)]
values (值 [,值]…);

批数据新增命令形式:插入子查询结果中的若干条元组。待插入的元
组由子查询给出。
insert into 表名 [(列名[,列名]…)]
子查询;

示例:单一元组新增
Insert Into Teacher (T#, Tname, D#, Salary)
Values (“005”, “阮小七”, “03”, “1250”);

Insert Into Teacher
Values (“006”, “李小虎”, “03”, “950”);

示例:批元组新增
新建立Table: St(S#, Sname), 将检索到的满足条件的同学新增到该表中
Insert Into St (S#, Sname)
Select S#, Sname From Student
Where Sname like ‘%伟 ’ ;

Insert Into St (S#, Sname)
Select S#, Sname From Student Order By Sname;

注意:当新增元组时,DBMS会检查用户定义的完整性约束条件等,如不符合完整性约束条件,则将不会执行新增动作。

示例:新建Table: SCt(S#, C#, Score), 将检索到的成绩及格同学的记录新增到该表中
Insert Into SCt (S#, C#, Score)
Select S#, C#, Score From SC
Where Score>=60 ;

示例:追加成绩优秀同学的记录
Insert Into SCt (S#, C#, Score)
Select S#, C#, Score From SC
Where Score>=90 ;

还可以有更复杂的“查询后插入到新表中”的语句,例如可以将中间结果存储成表,这很有用。
示例:新建Table: St(S#, Sname, avgScore), 将检索到的同学的平均成绩新增到该表中
Insert Into St (S#, Sname, avgScore)
Select S#, Sname, Avg(Score) From Student, SC
Where Student.S# = SC.S#
Group by Student.S# ;

SQL-之DELETE

元组删除Delete命令: 删除满足指定条件的元组
Delete From 表名 [ Where 条件表达式] ;
如果Where条件省略,则删除所有的元组。

示例:删除SC表中所有元组
Delete From SC ;

示例:删除98030101号同学所选的所有课程
Delete From SC Where S# = ‘98030101’ ;

示例:删除自动控制系的所有同学
Delete From Student Where D# in
( Select D# From Dept Where Dname = ‘自动控制’);

还可以有更复杂的“条件控制的删除” 语句,这很有用。
示例:删除有四门不及格课程的所有同学
Delete From Student Where S# in
( Select S# From SC Where Score < 60
Group by S# Having Count(*)>= 4 );

当删除元组时,DBMS会检查用户定义的完整性约束条件等,如不符合完整性约束条件,则将不会执行删除动作。

SQL-之UPDATE

元组更新Update命令: 用指定要求的值更新指定表中满足指定条件的元组的指定列的值
Update 表名
Set 列名 = 表达式 | (子查询)
[ [ , 列名 = 表达式 | (子查询) ] … ]
[ Where 条件表达式] ;

如果Where条件省略,则更新所有的元组。

示例:将所有教师工资上调5%
Update Teacher
Set Salary = Salary * 1.05 ;

示例:将所有计算机系的教师工资上调10%
Update Teacher
Set Salary = Salary * 1.1
Where D# in
( Select D# From Dept Where Dname = ‘计算机’);

还可以有更复杂的“条件控制的更新” 语句,这很有用。
示例:当某同学001号课的成绩低于该课程平均成绩时,将该同学该门课成绩提高5%
Update SC
Set Score = Score * 1.05
Where C# = ‘001’ and Score < some
( Select AVG(Score) From SC
Where C# = ‘001’ ) ;

(笔记总结自MOOC)

发布了44 篇原创文章 · 获赞 137 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/LoraRae/article/details/105480834