电子科技大学数据库与软件工程实验报告二

适用于网工和物联网专业(信通)

本实验也是期末考试的内容

目录

适用于网工和物联网专业(信通)

一、实验目的

二、实验内容

三、实验软件

四、实验步骤及数据记录

1.使用SQL Developer导入表

2.数据库表和字段的基本操作

3. 简单查询

4.高级查询

五、实验结论及思考题

六、总结及心得体会

七、对本实验过程及方法、手段的改进建议


一、实验目的

1、熟悉 Oracle 的环境,学习使用 SQL Developer 与 Oracle 进行交互;

2、建立基本的数据库表,表结构的查看、修改与删除;

​3、学习对表中数据进行插入,删除,修改及查询操作。

二、实验内容

在SQL Developer中使用学生用户连接Oracle数据库,导入4张表:BONUS、 DEPT(部门表)、EMP(员工表)和 SALGRADE(工资等级表),进行简单查询以及高级查询操作;创建学生信息表(INFOS)和成绩表(SCORES),进行数据库表及数据的插入、查询、更新、删除等基本操作。

三、实验软件

Oracle 数据库、SQL Developer

四、实验步骤及数据记录

1.使用SQL Developer导入表

​ (1) 使用学生用户连接数据库,此时角色选择“默认值”。

​ (2) 将SQL 脚本粘贴进工作表窗口中,点击“运行脚本”按钮,导入成功后查询到的DEPT,EMP和SALGRADE表的数据内容如下图所示。

相关截图如下:

图1

图2

图3

2.数据库表和字段的基本操作

2.1 创建学生信息表和约束

插入脚本之后,就可以得到关系表。

查看 INFOS 表创建成功后的“列”和“约束条件”内容,如下图所示。

图4

图5

2.2 创建成绩表和约束

插入脚本

查看 SCORES 表创建成功后的“列”和“约束条件”内容,结果如图所示

图6

图7

2.3 插入数据

使用insert命令插入数据。

查看插入数据成功后 INFOS 表如图所示。

图8

2.4 简单查询数据

用 SELECT 命令查询学生信息表(INFOS),获取所有性别(GENDER)为 “男”的学生姓名(STUNAME)、性别(GENDER)、年龄(AGE)和住址 (STUADDRESS)信息,并按年龄排序。

查询命令为:SELECT STUNAME,GENDER,AGE,STUADDRESS FROM INFOS WHERE GENDER=‘男’ ORDER BY AGE;

结果如下:

图9

2.5 更新数据

用 UPDATE 命令更新学生信息表(INFOS)中学生姓名(STUNAME)为“阮小二”的以下信息:

班号(CLASSNO)改为“1002” 住址(STUADDRESS)改为“山东莱芜”

查询命令为:UPDATE INFOS SET CLASSNO=‘1002’,STUADDRESS=‘山东莱芜’ WHERE STUNAME=‘阮小二’;

查询结果如图所示

图10

2.6 删除某条数据

用 DELETE 命令删除学生信息表(INFOS)中学号(STUID)为“s100102”的学生信息;然后用 SELECT 命令查询学生信息表(INFOS)的所有信息。

删除命令:DELETE FROM INFOS WHERE STUID=‘s100102’;

删除后的结果如图所示:

图11

3. 简单查询

 使用 Oracle 自带的三张表:EMP 表(员工表)、DEPT 表(部门表)和SALGRADE 表(工资等级表)。

​ 1)每名员工年终奖是 2000 元,请在 EMP 表中查询获取基本工资在 2000 元以上的员工姓名及其工资和不含奖金的年总工资信息。

相关命令:

SELECT ENAME,SAL,12*SAL FROM EMP WHERE SAL>2000;

查询结果:

图12

 2)请在 EMP 表中查询获取工资在 2000 元以上的员工姓名及其工作信息。

4.高级查询

1)查询 EMP 表中的员工所在部门编号

​分析:可能有多个员工在一个部门的情况,此时只需要查询一个结果即可,不需要查询多条数据。

相关命令为:

SELECT DISTINCT DEPTNO FROM EMP;

图13

2)查询出薪酬少于 2000 且没有发奖金的员工

​ 第一步:查询薪酬少于 2000 的员工。

SELECT ENAME,JOB,SAL,COMM FROM EMP WHERE SAL<2000;

图14

第二步:查询薪酬少于 2000 且没有发奖金的员工

SELECT ENAME,JOB,SAL,COMM FROM EMP WHERE SAL<2000 AND COMM IS NULL;

图15

3)查询工作职责是 SALESMAN、PRESIDENT 或 ANALYST 的员工

SELECT ENAME,JOB,SAL FROM EMP

WHERE JOB IN ('SALESMAN', 'PRESIDENT', 'ANALYST');

图16

4)查询工资从 1000 到 2000 之间的员工

SELECT ENAME,JOB,SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000;

图17

5)查询员工名称以 J 开头以 S 结尾的员工的姓名、工资和工资

SELECT ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE 'J%S';

图18

6)查询出 DEPT 表中没有员工的部门编号

SELECT DEPTNO FROM DEPT MINUS SELECT DEPTNO FROM EMP;

图19

7)查询出月工资大于 2000 元的员工姓名、工作、工资,及其所在部门名称

SELECT e.ENAME,e.JOB,e.SAL,d.DNAME

FROM EMP e,DEPT d  WHERE e.DEPTNO=d.DEPTNO

AND e.SAL>2000;

图20

五、实验结论及思考题

实验结论:

使用SQL语言对数据库中的关系表进行查询、插入、删除等操作,学会了SQL语言的灵活运用,以及加深了对关系表的理解,同时熟悉了数据库的使用。

思考题:

  1. 查询出工作职责不是 SALESMAN、PRESIDENT 或 ANALYST 的员工姓名、 工作、工资,及其所在部门名称。

 命令:

​  SELECT ENAME,JOB,SAL,DNAME FROM EMP,DEPT WHERE JOB NOT IN(‘SALESMAN’, ‘PRESIDENT’, ‘ANALYST’) AND EMP.DEPTNO=DEPT.DEPTNO;

结果如下:

图21

图22

2. 换一种方法查询出工资大于 2000 元的员工姓名、工作、工资,及其所在部门名称。

命令:SELECT ENAME,JOB,SAL,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND SAL>2000;

查询结果如下:

图23

3、查询出每个部门下的员工姓名和工资。请写出 SELECT 命令,并给出查询结果截图。

命令:SELECT ENAME,SAL,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;

结果如下:

图24

4、如果在步骤 2.4 中使用 sys 用户查询学生用户的 INFOS 表,能否查询到学生用户 INFOS 表的添加、删除、修改操作?为什么?如果不同,如何才能让 sys 用户查询到学生用户对 INFOS 表的添加、删除、修改操作?

 不能使用sys用户查询学生用户的INFOS表,因为没有得到dba用户的授权,需要得到dba用户的授权后,才能查询学生用户对INFOS表的添加、删除、修改操作。

六、总结及心得体会

实验中遇到的问题以及解决办法:

  1. 一开始输入脚本进行配置的过程当中,会产生部分错误,然后自己在网上搜索以及在老师的指导之下,解决了这个问题。
  2. 对于实验指导书中没有出现的数据库查询、删除、插入的指令,自己结合课件和网上的一些教程进行学习,最终还是得到了相应的结果。

七、对本实验过程及方法、手段的改进建议

1.在实验中其实相关的脚本也可以适当采取挖空的方式,让学生们进行学习填写。

2.对于插入的关系表,可以适当的增加关系表理解的相关的问题,进行训练。

3.另外,可以适当增加一些SQL语言的练习,以便对学习的知识进行掌握。

猜你喜欢

转载自blog.csdn.net/weixin_53284122/article/details/129219500