SQL数据更新操作

插入数据

插入单个元组

格式:
INSERT
INTO <表名> [(<属性列1>,<属性列2>…)]
VALUES (<常量1>[,<常量2>]…)

【注意】
INTO子句:指定要插入数据的表名及属性列名

  • 属性列的顺序可以与表定义中的顺序不一致
  • 没有指定任何属性列:默认要插入的是一条完整的元组,且数据顺序与表定义中的属性列顺序一致
  • 指定部分属性列:插入元组在其余属性列上取空值
例:将一个新生记录(学号:95020;姓名:陈东;性别:男;所在院系:IS;年龄:18)插入Student表中
INSERT
INTO Student
VALUES('95020','陈东','男','IS',18)

例:插入一条选课记录('95020','1')
INSERT
INTO SC(Sno,Cno) --可以指明列
VALUES('95020','1') --新插入的记录在Score列上取空值

插入多个元组

例:插入3条选课记录('95020','1',90)('95010','1',60)('95010','3',50)
INSERT
INTO SC VALUES
('95020','1',90),
('95010','1',60),
('95010','3',50)

插入子查询结果

格式:
INSERT
INTO <表名>[(<属性列1>[,<属性列2>]…)]
子查询

例:对每一个系求学生的平均年龄,并把结果存入数据库
#step 1 在数据库中建立一个有两个属性列的新表,其中一列存放系名,另一列存放相应系的学生平均年龄
CREATE TABLE Deptage
(Sdept VARCHAR(15)
Avgage SMALLINT)
#step 2 对Student表按系分组求平均年龄再把系名和平均年龄存入新表中
INSERT
INTO Deptage(Sdept,Avgage)
	SELECT Sdept,AVG(Sage)
	FROM Student
	GROUP BY Sdept

修改数据

格式:
UPDATE <表名>
SET <列名> = <表达式>[,<列名> = <表达式>]…
[WHERE <条件>]

例:将所有学生的年龄增加1岁,性别设置为默认值'男'
UPDATE Student
SET Sage = Sage+1,Ssex = default

例:将计算机系全体学生的成绩置零
UPDATE SC
SET Score = 0
WHERE Sno IN  --子查询嵌套在UPDATE语句中
	(SELECT Sno
	FROM Student
	WHERE Student.Sdept = 'CS')

【重点】修改操作与数据库的一致性

例:学号为95007的学生因病休学一年,复学后需要将其学号改为96089
#step 1 修改Student表
UPDATE Student
SET Sno = '96089'
WHERE Sno = '95007'
#step 2 修改SC表
UPDATE SC
SET Sno = '96089'
WHERE Sno = '95007'

删除数据

DELETE语句

格式:
DELETE
FROM <表名>
[WHERE <条件>]

【注意】DELETE语句删除的是表中数据并非关于表的定义

例:删除学号为95019的学生记录(SC,Student)
#step 1 删除SC表中关于95019学生的选课记录
DELETE
FROM SC
WHERE Sno = '95019'
#step 2 删除Student表中关于95019学生的信息
DELETE
FROM Student
WHERE Sno = '95019'
#此时同样会遇到UPDATE操作中提到的数据不一致问题,因此必须保证这两条语句都做,要么都不做,解决这一问题数据库系统引入了事务概念

TRUNCATE语句

使用TRUNCATE可以快速删除表中的所有行且无日志记录,只记录整个数据页的释放操作

例:删除所有学生的选课记录
TRUNCATE --与不含WHERE子句的DELETE语句等价,只删除行,不删除表本身
FROM SC
数据库原理实验指导书 实验名称:试验一:SQL语言嵌套查询和数据更新操作 所属课程:数据库原理 实验类型:设计型实验 实验类别:基础□ 专业基础√ 专业□ 实验学时:4学时 一、实验目的 1.熟悉和掌握对数据表中数据的查询操作SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式; 2.加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算); 3.熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用; 4.加深理解表的定义对数据更新的作用 二、预习与参考 1.熟悉SQL SERVER 工作环境; 2.连接到学生-课程数据库 3.复习对表中数据查询的SQL语言命令; 4.复习对表中数据的插入、修改和删除的SQL语言命令。 三、实验要求(设计要求) 针对教材例子,通过SQL SERVER企业管理器和查询分析器两种模式,熟悉数据嵌套查询、更新操作。 四、实验方法及步骤 1.在表S、C、SC上进行简单查询; 2.在表S、C、SC上进行连接查询; 3.在表S、C、SC上进行嵌套查询; 4.使用聚合函数的查询; 5.对数据的分组查询; 6.对数据的排序查询。 7. 将数据插入当前数据库的表S、C、SC中; A:用SQL命令形式 B:用SQL SERVER提供的企业管理器以交互方式进行 8.将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘上; 9.修改表S、C、SC中的数据;   A:用SQL命令形式 B:用SQL SERVER提供的企业管理器以交互方式进行 10.删除表S、C、SC中的数据。 A:用SQL命令形式 B:用SQL SERVER提供的企业管理器以交互方式进行 五、实验内容 在表S,C,SC上完成以下操作: 1. 查询学生的基本信息; 2. 查询“CS”系学生的基本信息; 3. 查询“CS”系学生年龄不在19到21之间的学生的学号、姓名; 4. 找出最大年龄; 5. 找出“CS”系年龄最大的学生,显示其学号、姓名; 6. 找出各系年龄最大的学生,显示其学号、姓名; 7. 统计“CS”系学生的人数; 8. 统计各系学生的人数,结果按升序排列; 9. 按系统计各系学生的平均年龄,结果按降序排列; 10. 查询每门课程的课程名; 11. 查询无先修课的课程的课程名和学时数; 12. 统计无先修课的课程的学时总数; 13. 统计每位学生选修课程的门数、学分及其平均成绩; 14. 统计选修每门课程的学生人数及各门课程的平均成绩; 15. 找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列; 16. 查询选修了“1”或“2”号课程的学生学号和姓名; 17. 查询选修了“1”和“2”号课程的学生学号和姓名; 18. 查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩; 19. 查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩); 20. 查询没有选修课程的学生的基本信息; 21. 查询选修了3门以上课程的学生学号; 22. 查询选修课程成绩至少有一门在80分以上的学生学号; 23. 查询选修课程成绩均在80分以上的学生学号; 24. 查询选修课程平均成绩在80分以上的学生学号; 25. 选做:针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。 26. 将数据分别插入表S、C、SC; 27. 将表S、C、SC中的数据分别以.SQL文件和.txt文件的形式保存在磁盘上。 28. 在表S、C、SC上练习数据的插入、修改、删除操作。(比较在表上定义/未定义主码(Primary Key)或外码(Foreign Key)时的情况) 29. 将表S、C、SC中的数据全部删除,再利用磁盘上备份的数据来恢复数据。 30. 如果要在表SC中插入某个学生的选课信息(如:学号为“200215121”,课程号为“c123”,成绩待定),应如何进行? 31. 求各系学生的平均成绩,并把结果存入数据库; 32. 将“CS”系全体学生的成绩置零; 33. 删除“CS”系全体学生的选课记录; 34. 删除学号为“S1”的相关信息; 35. 将学号为“S1”的学生的学号修改为“S001”; 36. 把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S——GRADE(SNO,AVG——GRADE); 37. 把选修了课程名为“数据结构”的学生的成绩提高10%; 38. 把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%; 39. 把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉; 40. 选做:将数据插入SPJ数据库中的四个表S,P,J,SPJ中,并以.SQL文件和.txt文件的形式保存在磁盘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芷汀若静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值