一、实验目的
1.熟悉SQL的数据操纵功能并通过DML(数据库操作语言)实现。
DML包括数据查询和数据更新两种数据操作语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、数据维护等操作。
2.了解DML语言的INSERT、UPDATE、DELETE的操作,学会在SQL Server 2019的查询分析器中用DML语言对表中的进行数据插入。
二、实验仪器
计算机、SQL Server 2019软件, U盘(学生自备)。
三、实验原理
在企业管理器中实现表的创建和修改等工作及使用T—SQL语句:INSERT、DELETE及UPDATE来实现数据表数据的插入、修改及删除。
四、实验内容与步骤
1.打开数据库SQL Server 2019的企业管理器,向表xs,kc,xs_kc中插入记录。(自行编辑记录然后进行实验操作,验证并观察结果)
2.打开数据库SQL Server 2019的查询分析器,用INSERT语句向表中插入记录并在查询分析器窗体下完成以下题目,分别运行,观察结果
(1)用INSERT语句向表中插入记录并在查询分析器窗体下完成以下题目,分别运行,观察结果:
将一个新学生记录(学号:95020;姓名:陈冬;性别:男;年龄:18;所在系:IS;)插入到xs表中。
(2)在xscj数据库中利用企业管理器建立TXGC表,表结构与xs表结构相同。
(3)将“通信工程-‘CE’”专业的所有学生的所有信息存入TXGC表中。
3.利用查询分析器用UPDATE语句更改表中数据。完成以下题目,分别运行,观察结果。
(1)将学号为001106的学生的年龄改为22岁。
(2)将所有学生的年龄增加1岁。
(3)将计算机科学系全体学生的成绩置零。
(4)将xs表中学号为001110的学生的备注列值改为“三好学生”。
(5)将xs表中的所有学生的总学分都增加10分
4. 利用查询分析器用DELETE语句删除表中数据。完成以下题目,分别运行,观察结果。
(1)删除学号为001102的学生记录。
(2)删除计算机科学系所有学生的选课记录。
(3)删除xs_kc中成绩不及格的学生记录。
(4)删除所有学生的选课记录。
五、小结
本次实验主要对数据库中的数据进行查询、统计、分组、排序等操作,其中查询操作可以使用select语句,而*指的是全体记录,where子句的使用细化了查询的范围,使用group by子句将查询结果分组可以细化聚集函数的作用对象。还可以使用嵌套查询增强SQL的查询能力。在数据更新时,可以用insert语句插入数据、update语句修改数据、delete语句删除语句。在用语句建表时要注意使用英文符号,否则程序会报错。
实验题目:表的操作与管理
一、实验目的
1.熟悉SQL的数据操纵功能并通过DML(数据库操作语言)实现。
DML包括数据查询和数据更新两种数据操作语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、数据维护等操作。
2.了解DML语言的INSERT、UPDATE、DELETE的操作,学会在SQL Server 2019的查询分析器中用DML语言对表中的进行数据插入。
二、实验内容与步骤
1.打开数据库SQL Server 2019的企业管理器,向表xs,kc,xs_kc中插入记录。(自行编辑记录然后进行实验操作,验证并观察结果)
xs表:
kc表:
xs_kc表:
2.打开数据库SQL Server 2019的查询分析器,用INSERT语句向表中插入记录并在查询分析器窗体下完成以下题目,分别运行,观察结果
(1)用INSERT语句向表中插入记录并在查询分析器窗体下完成以下题目,分别运行,观察结果:
将一个新学生记录(学号:95020;姓名:陈冬;性别:男;年龄:18;所在系:IS;)插入到xs表中。
代码:insert into dbo.xs
values('95020','陈冬','男','18','IS',null);
- 在xscj数据库中利用企业管理器建立TXGC表,表结构与xs表结构相同。
- 将“通信工程-‘CE’”专业的所有学生的所有信息存入TXGC表中。
3.利用查询分析器用UPDATE语句更改表中数据。完成以下题目,分别运行,观察结果。
(1)将学号为001106的学生的年龄改为22岁。
更改前:
更改后:
代码:update dbo.xs
set sbirth=22
where sno='001106';
- 将所有学生的年龄增加1岁。
更改前:
更改后:
代码:update dbo.xs
set sbirth=sbirth+1;
- 将计算机科学系全体学生的成绩置零。
更改后:
代码:update dbo.xs_kc
set grade=0
where sno in
(
select sno
from dbo.xs
where sdept='is'
);
- 将xs表中学号为001110的学生的备注列值改为“三好学生”。
代码:update dbo.xs
set remark='三好学生'
where sno='001110';
- 将xs表中的所有学生的总学分都增加10分
代码:update dbo.xs
set scredit=scredit+10;
4. 利用查询分析器用DELETE语句删除表中数据。完成以下题目,分别运行,观察结果。
(1)删除学号为001102的学生记录。
删除前:
删除后:
代码:delete
from dbo.xs
where sno='001102';
- 删除计算机科学系所有学生的选课记录。
删除前:
删除后:
代码:delete
from dbo.xs_kc
where sno in
(select sno
from dbo.xs
where sdept='is'
);
- 删除xs_kc中成绩不及格的学生记录。
删除后:
代码:delete
from dbo.xs_kc
where grade<60;
- 删除所有学生的选课记录。
代码:delete
from dbo.xs_kc;
三、实验数据的记录及处理
以上操作内容使用SQL语句编程并运行成功后,将程序进行记录,并写在报告纸上。
2.(1)代码:
insert into dbo.xs
values('95020','陈冬','男','18','IS',null);
3.(1)代码:
update dbo.xs
set sbirth=22
where sno='001106';
3.(2)代码:
update dbo.xs
set sbirth=sbirth+1;
3.(3)代码:
update dbo.xs_kc
set grade=0
where sno in
(select sno
from dbo.xs
where sdept='is');
3.(4)代码:
update dbo.xs
set remark='三好学生'
where sno='001110';
3.(5)代码:
update dbo.xs
set scredit=scredit+10;
4.(1)代码:
delete
from dbo.xs
where sno='001102';
4.(2)代码:
:delete
from dbo.xs_kc
where sno in
(select sno
from dbo.xs
where sdept='is'
);
4.(3)代码:
delete
from dbo.xs_kc
where grade<60;
4.(4)代码:
delete
from dbo.xs_kc;
四、思考题
1.drop与delete用法的区别是什么?
答:(1)Drop一般用于删除整体性数据,如表,模式,索引,视图,完整性限制等;delete用于删除局部性数据,如表中的某一元组。drop是数据库定义语言(ddl),操作立即生效;delete语句是数据库操作语言(dml)。
(2)Drop是删除内容和定义,并释放空间。执行drop语句,将使此表的结构一起删除。Delete只删除内容、释放空间但不删除定义,而delete即可以对行数据进行删除,也可以对整表数据进行删除。
Delete语句不影响表所占用的extent,高水线保持原位置不动。Drop语句将表所占用的空间全部释放。
- insert与create用法的区别是什么?
答:create table 是创建表,定义表中有哪些字段,字段的类型,长度等(当然也包括一些约束条件,例如:主键,外键等),也就是定义表的结构;但是,insert into是往定义好的表结构插入实际的数据。
- alter与update用法的区别是什么?
答:alter是DDL语句,update是DML语句
alter多用来更改表的架构, 或者修改存储过程,修改视图
update是用来修改表内的数据.
- 实验过程中遇到的问题及解决方法
本次实验是熟悉SQL的数据操纵功能并通过DML(数据库操作语言)实现并熟练使用delete、insert、update等语句。在插入一组数据时,由于存在空值,导致了在直接插入时不匹配而报错,在查阅了书之后发现空值处要用null表示,因此顺利完成了这个操作。在将计算机科学系全体学生的成绩置零时,由于涉及到的两个表需要用嵌套查询,其中对连接处的语句和格式还有些陌生,因此在这里耽误了很多时间,而嵌套查询也是一个重点,需要多练习从而解决这个难题。