电子科技大学数据库与软件工程实验报告二
电子科技大学数据库与软件工程实验报告二
一、实验目的
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
本文地址:https://blog.csdn.net/weixin_45088166/article/details/109451985