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

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

一、实验目的

​ 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表的数据内容如下图所示。

!!!

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

2.1 创建学生信息表和约束

在这里插入图片描述

在这里插入图片描述

代码解析

​ ① 在 Oracle 代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条

刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独行“/”。

​ ② 创建一个主键约束。

​ ③、④、⑤、⑥、⑦ 一起创建各种 check 约束。其中⑦是唯一约束,表示该 列值是唯一的,列中的值不能重复。

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

!!!!!!!

在这里插入图片描述

2.2 创建成绩表和约束

!!!!!!!

代码解析:

​ ① Oracle 中的自动增长需要借助序列(Sequence)完成。

​ ② Oracle 中的外键约束定义。

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


在这里插入图片描述

2.3 插入数据

​ 使用以下 INSERT 命令,在学生信息表(INFOS)中插入两个学生的信息:

在这里插入图片描述

代码解析:

​ ① 表名后面缺省了列名,默认是表 Infos 中的所有列名,values 中的值要与表中列一一对应,包括顺序和数据类型的对应。

​ ② 在 Oracle 中,日期是国际化的,不同的区域安装的数据库,默认的日期格式不同,因此为了程序便于移植,日期的输入要使用 TO_DATE 函数对日期格式化后输入,采用格式化字符串对日期进行格式化时,格式化字符串中字符不区分大小写,常见的格式化字符如下:

​ yyyy:表示四位年份

​ MM:表示两位月份,比如 3 月表示为 03

​ dd:表示两位日期

​ HH24:24 表示小时从 0-23,HH12 也表示小时从 0-11。

​ mi:表示分钟

​ ss:表示秒

​ ③ 在遇到存在默认值的列时,可以使用 default 值代替。

​ 查看插入数据成功后 INFOS 表的“***数据”,***如图所示。

2.4 简单查询数据

​ 用 SELECT 命令查询学生信息表(INFOS),获取所有性别(GENDER)为 “男”的学生姓名(STUNAME)、性别(GENDER)、年龄(AGE)和住址 (STUADDRESS)信息,并按年龄排序。***记录***本次查询操作使用的相关命令。

​ 相关命令:

SELECT STUNAME,GENDER,AGE,STUADDRESS FROM INFOS WHERE GENDER=‘男’ ORDER BY AGE;

​ 查询结果如图所示:

在这里插入图片描述

2.5 更新数据

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

​ 班号(CLASSNO)改为“1002”

​ 住址(STUADDRESS)改为“山东莱芜”

​ 相关命令:

UPDATE INFOS SET CLASSNO=‘1002’,STUADDRESS=‘山东莱芜’ WHERE STUNAME=‘阮小二’;

​ 查询结果如图所示

在这里插入图片描述

2.6 删除某条数据

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

​ 相关命令:

DELETE FROM INFOS WHERE STUID=‘s100102’;

​ 删除后的结果如图所示:

在这里插入图片描述

3. 简单查询

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

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

​ 相关命令:

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

​ 查询结果如图所示:
在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示:

在这里插入图片描述

4.高级查询

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

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

不需要查询多条数据。
在这里插入图片描述

​ 查询结果如图所示:
在这里插入图片描述

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

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

在这里插入图片描述

​ 查询的结果如图所示

在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示

在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示

在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示

在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示

在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示
在这里插入图片描述

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

在这里插入图片描述

​ 查询结果如图所示

在这里插入图片描述

五、实验结论及思考题

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

​ SELECT命令:

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

​ 查询的结果如图所示

在这里插入图片描述

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

​ SELECT命令:

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

​ 查询结果如图所示

在这里插入图片描述

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

​ SELECT命令:

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

​ 查询结果如图所示:

在这里插入图片描述

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

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

六、总结及心得体会

1、无法连接到服务器

​ 检查数据库IP地址是否输入正确,账号密码是否输入正确

2、在命令行添加表之后,在左边表中找不到添加的表

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

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

六、总结及心得体会

1、无法连接到服务器

​ 检查数据库IP地址是否输入正确,账号密码是否输入正确

2、在命令行添加表之后,在左边表中找不到添加的表

​ 左边有个刷新按钮,点击刷新按钮,新建的表才会显示出来

源文件:
链接:https://pan.baidu.com/s/12g_PZS5F_jqxEi2Lpk14mQ
提取码:lyrt

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值