一、实验目的
SQL语言的数据操纵功能通过DML(数据维护语言)实现。DML包括数据查询和数据更新两种数据操纵语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、更新和删除等数据维护操作。
本次实验了解 DML语言的INSERT、UPDATE、DELETE等数据维护语言,掌握在 Oracle SQL Developer中用 DML语言的 INSERT、UPDATE、DELETE对表进行数据插入、更新和删除。
二、实验要求
1、实验前:预习实验内容,学习相关知识。
2、实验中:按照实验内容要求进行实验,实验时注意每种SQL语句的基本命令及各个关键字的含义,做好实验记录。
3、实验后:分析实验结果,总结实验知识,得出结论,按格式写出实验报告。
4、在整个实验过程中,要独立思考、独立按时完成实验任务,不懂的要虚心向教师或同学请教。
5、要求按指定格式书写实验报告,且报告中应反映出对本次实验的总结,下次实验前交实验报告。
三、实验的重点与难点
1、重点:
(1)用INSERT语句向表中插入数据。
(2)用UPDATE语句更新(修改)表中已有数据。
(3)用DELETE语句删除表中数据。
2、难点:
UPDATE语句和DELETE语句的WHERE子句。
四、仪器设备及用具
硬件:每位同学分配已连接校园网 PC机一台。
软件:数据库服务器已安装 Oracle 10g数据库平台。
五、教学过程
(一)实验预习
(1)熟悉SQL中的INSERT、UPDATE、DELETE语句的格式及所用的关键字含义及用法。
(2)掌握INSERT语句的两种不同插入数据方式。
(3)掌握UPDATE语句和DELETE的一般用法。
(二)实验原理
在 SQL Developer中使用INSERT语句向表中插入数据。使用UPDATE语句更新(修改)表中已有数据。使用DELETE语句删除表中数据。
(三)实验内容
1.启动Oracle SQL Developer,用INSERT语句对表进行单条数据插入操作,
语法格式如下:
Insert Into <表名> [(<属性列1>[,<属性列2>]…)] Values (<常量1>[,<常量 2>]…);其中,INSERT INTO指明要插入的表以及表中的属性列(字段),VALUES指明要插入相应属性列(字段)的值。
例如:
Insert into test (name,age,score,address) values ('吴 思 远',35,590.00,'重庆邮电大学计算机学院');用 INSERT语句对表进行批量数据插入操作,语法格式如下:
Insert Into <表名1> [(<属性列1>[,<属性列2>]…)] Select [(<属性列1>[,<属性列2>]…)] From <表名2>;INSERT语句的批量插入,把从其他表中查询出来数据插入到当前表中。
例如:
Insert into test (name,age,score,address) Selectname,age,score,address from test_temp;
2.在Oracle SQL Developer中,用UPDATE语句对表中已有的数据进行修改,
语法格式如下:
Update <表名> Set <属性列>=<表达式>[,<属性列>=<表达式>][,…n][Where <条件>];其中,表名指定要更新的表,SET指定要更新的属性列(字段)及其相应的值,WHERE指定更新条件。
例如:
Update test set age = 37 where name='吴思远' and address='重庆邮电大学计算机科学与技术学院';
3.在Oracle SQL Developer中,用DELETE语句对表中已有的数据进行删除,
语法格式如下:
Delete From <表名> [Where <条件>];其中,FROM指定要删除数据的表,WHERE指定要删除数据的条件。
例如:
Delete From test Where age>=35;
(四)注意事项
1、INSERT语句中,无论是哪一种用法,都应该注意要插入的值与要插入的字段相互对应。
2、UPDATE语句中,如果没有指定更新条件WHERE子句,则对表中所有记录进行更新。
3、DELETE语句中,如果没有指定删除条件WHERE子句,则对表中所有记录进行删除。使用 DELETE语句删除表中数据时,并不能释放被占用的数据块空间,它只是把那些被删除的数据块标记为 Unused,将来还可以使用回退(Rollback)操作。
六、实验步骤:
执行以下内容:
1.启动SQL Developer登录到scott账户。
2.首先用Create Table语句建立test表,test表定义如下所示:
5.用UPDATE语句将test表中年龄小于等于20的数据,将成绩更新为原来的成
绩加 5分。
6.用UPDATE语句将test表中居住在南福苑所有学生的年龄减少1岁。
7.用DELETE语句将test表中年龄大于等于21并且成绩大于等于500的学生数据删除掉。
8.用DELETE语句将test表中成绩小于550并且居住在重邮宿舍的学生数据删
除掉。
以上 SQL语句请保存,以备老师检查和写实验报告之用。
七、实验报告要求
参见实验报告模版。
实验步骤代码:
/*2.首先用 Create Table 语句建立 test 表,test 表定义如下所示:*/
create table test(
name varchar2(20),
age int,
score number(10,2),
address varchar2(60)
);
drop table test;
select * from test;
/*用insert语句对表test插入数据*/
insert into test(name,age,score,address)
values('赵一','20','580.00','重邮宿舍 12-3-5');
insert into test(name,age,score,address)
values('钱二','19','540.00','南福苑 5-2-9');
insert into test(name,age,score,address)
values('孙三','21','555.50','学生新区 21-5-15');
insert into test(name,age,score,address)
values('李四','22','505.00','重邮宿舍 8-6-22');
insert into test(name,age,score,address)
values('周五','20','495.50','学生新区 24-4-8');
insert into test(name,age,score,address)
values('吴六','19','435.00','南福苑 2-5-12');
/*5.用 UPDATE 语句将 test 表中年龄小于等于 20 的数据,将成绩更新为原来的成绩加 5 分。*/
update test set score=score+5 where age<=20;
/*6.用 UPDATE 语句将 test 表中居住在南福苑所有学生的年龄减少 1 岁。 */
update test set age=age-1 where address like '南福苑%';
/*7.用 DELETE 语句将 test 表中年龄大于等于 21 并且成绩大于等于 500 的学生数据删除掉。 */
delete from test where age>=21 and score>=500;
/*8.用 DELETE 语句将 test 表中成绩小于 550 并且居住在重邮宿舍的学生数据删除掉。*/
delete from test where score<500 and address like '重邮宿舍%';