电子科技大学数据库与软件工程三
适用于网工和物联网专业
目录
一、实验目的
二、实验内容
三、实验软件
四、实验步骤及数据记录
1.子查询
2. 伪列
3.数据库对象
4. 块、存储过程和触发器
五、实验结论及思考题
实验结论:
思考题:
六、总结及心得体会
七、对本实验过程及方法、手段的改进建议
一、实验目的
1、学习子查询和常用函数;
2、了解数据库视图的操作;
3、学习 PL/SQL 语言实现对数据库存储过程、触发器等操作。
二、实验内容
在 SQL Developer 中使用学生用户连接 Oracle 数据库,使用实验二导入的 EMP 表(员工表)、DEPT 表(部门表)和 SALGRADE 表(工资等级表),实现数据库子查询、视图、存储过程、触发器等的操作过程。
三、实验软件
Oracle 数据库、SQL Developer
四、实验步骤及数据记录
1.子查询
1)查询出销售部(SALES)下面的员工姓名、工作、工资。
| SELECT NAME,JOB,SAL FROM EMP WHERE DEPTNO=(SELECT DEPTNO FROM WHERE DNAME='SALES'); |
结果如下:
|
图1 |
2)查询出 EMP 表中比任意一个销售员(SALESMAN)工资低(比销售员工资查询结果中的最大值小)的员工姓名、工作和工资。
| SELECT ENAME,JOB,SAL FROM EMP WHERE SAL<ANY(SELECT SAL FROM EMP WHERE JOB='SALESMAN'); |
结果如下:
|
|
2. 伪列
1)查询出员工表中前 5 名员工的姓名、工作和工资。
| SELECT ROWNUM,ENAME,JOB,SAL FROM EMP WHERE ROWNUM<=5; |
结果如下:
|
|
2)查询出工资最高的前 5 名员工的姓名、工资和工资。
| SELECT ROWNUM,T.* FROM (SELECT ENAME,JOB,SAL FROM EMP ORDER BY SAL DESC) T WHERE ROWNUM<=5; |
结果如下:
|
|
3.数据库对象
1)基于 EMP 表和 DEPT 表创建一个只读视图,该视图中只包含员工编号、姓名、工作、入职日期和部门名称,隐藏了员工的工资、奖金、部门编号等信息。
| CREATE OR REPLACE VIEW EMPDETAIL AS SELECT EMPNO,ENAME,JOB,HIREDATE,DNAME FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO WITH READ ONLY; |
查询创建的 EMPDETAIL 视图:
结果如下:
|
|
2)为 EMP 表的 ENAME 列创建唯一索引,为 EMP 表的工资列创建普通索引,把 JOB 列先变为小写再创建索引。
| CREATE UNIQUE INDEX UQ_ENAEM_IDX ON EMP(ENAME); CREATE INDEX IDX_SAL ON EMP(SAL); CREATE INDEX IDX_JOB_LOWER ON EMP(LOWER(JOB)); |
使用下面的 SELECT 命令查看表 EMP 的索引:
| SELECT INDEX_NAME,INDEX_TYPE,TABEL_OWNER,TABLE_NAME,UNIQUENESS FROM USER_INDEXES WHERE TABLE_NAME='EMP'; |
结果如下:
|
|
4. 块、存储过程和触发器
1)声明一个名为sname 的变量
| DECLARE SNAME VARCHAR2(20):='jerry'; BEGIN SNAME:SNAME||'and tom'; DBMS_OUTPUT.PUT_LINE(sname); END; |
在SQL *Plus 中输出数据时,可能没有结果显示,可以使用命令:set serveroutput on设置输出到 SQL *Plus 控制台上。
输出结果如图所示
|
|
2)创建一个显示雇员总人数的存储过程。
| CREATE OR REPLACE PROCEDURE EMP_COUNT AS V_TOTAL NUMBER(10); BEGIN SELECT COUNT(*) INTO V_TOTAL FROM EMP; DBMS_OUTPUT.PUT_LINE('雇员总人数为:'||V_TOTAL); END; |
存储过程需要点击 SQL Developer 的“运行”按钮才能执行,如果存在错误,就会显示:“警告:创建的过程带有编译错误”。如果存在错误,对脚本进行修改,直到没有错误产生。如果编译结果正确,将显示:“过程已编译”。
调用存储过程,在工作表中输入以下语句并执行:
结果如下:
|
|
3)制作一个数据库触发器。记录所有对 EMP 表进行的 INSERT、UPDATE和DELETE 操作。
| CREATE TABLE EMP_LOG( who varchar2(30), when date); CREATE OR REPLACE TRIGGER EMP_OP BEFORE INSERT OR UPDATE OR DELETE ON EMP BEGIN INSERT INTO EMP_LOG (who,when) VALUES(user,sysdate); END EMP_OP; |
执行 EMP 表更新操作,查看日志表,结果如下:
|
图9 |
五、实验结论及思考题
实验结论:
SQL语言变化要灵活运用,对查询和视图,存储触发器的代码使用和运用更要更加的灵活。
对于一些的查询自己要运用数据库中的笛卡尔相关运算进行解决。
思考题:
- 查询出比所有销售员的工资都高的员工姓名、工作和工资。请写出 SELECT命令,并给出查询结果截图
| SELECT ENAME,JOB,SAL FROM EMP WHERE SAL>ALL (SELECT SAL FROM EMP WHERE JOB='SALESMAN'); |
查询结果如下:
|
|
2、查询出 EMPDETAIL 视图中第 5 条到第 10 条之间的记录。请写出 SELECT命令,并给出查询结果截图。
| SELECT *FROM (SELECT rownum no, EMPNO, ENAME, JOB, HIREDATE, DNAME FROM EMPDETAIL WHERE rownum<=10 ORDER BY rownum ASC) WHERE no>=5; |
结果如下:
|
|
3、创建一个存储过程,显示工资最低的雇员名字。请写出创建存储过程的代码,并给出存储过程的执行结果截图。
| CREATE OR REPLACE PROCEDURE SAL_LOW AS V_LOW STRING(20); BEGIN SELECT ENAME INTO V_LOW FROM EMP WHERE ROWNUM=1 ORDER BY SAL ASC; DBMS_OUTPUT.PUT_LINE('最低工资:'||V_LOW); END; |
结果如下:
|
|
六、总结及心得体会
- 实验过程中会遇到一些命令执行失败,之后发现是自己的相关命令的用法出现错误。
- 在实验过程中要融汇变通,对课堂上讲述的命令进行变换和总结。
- 同时在实验过程中要认真仔细,对出问题的每一个过程进行分析总结,运用课堂知识进行解决。
七、对本实验过程及方法、手段的改进建议
1.另外,可以适当增加一些SQL语言的练习,以便对学习的知识进行掌握。
2.建议实验步骤相关部分可以不给出代码,让学生们自己撰写。
相关文章:
电子科技大学数据库与软件工程三
适用于网工和物联网专业 目录 一、实验目的 二、实验内容 三、实验软件 四、实验步骤及数据记录 1.子查询 2. 伪列 3.数据库对象 4. 块、存储过程和触发器 五、实验结论及思考题 实验结论: 思考题: 六、总结及心得体会 七、对本实验过程及方…...
华为开源自研AI框架昇思MindSpore数据变换:Transforms
目录一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例二、数据变换 TransformsCommon TransformsComposeVision TransformsRescaleNormalizeHWC2CWHText TransformsBasicTokenizerLookupLambda Transforms通常情况下,直接加载的原始数据并不能直接送入…...
软件测试之边界值测试法
边界值测试法 1. 介绍 边界值分析法就是对输入或输出边界值进行测试的,也是一种黑盒测试. 边界值分析法通常作为等价类划分法的补充,其测试用例来自等价类的边界;长期的经验得知,大量的错误是发现在输入或输出范围的边界上,而不是发生再输入输出范围的内部&#…...
【华为OD机试模拟题】用 C++ 实现 - 最近的点(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最近的点题目输入输出示例一输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址…...
Qt windeployqt.exe 打包qml
Qt系列文章目录 文章目录Qt系列文章目录前言一、遇到的坑二、参考前言 我们在QtCreator下面开发程序,一般都会遇到工程发布给客户使用的情况。我们通常会使用Qt自带的打包工具:windeployqt.exe。 windeployqt.exe是Qt自带的工具,用于创建应用…...
【人脸识别】CurricularFace:自适应课程学习人脸识别损失函数
论文题目:《CurricularFace: Adaptive Curriculum Learning Loss for Deep Face Recognition》 论文地址:https://arxiv.org/pdf/2004.00288v1.pdf 代码地址:https://github.com/HuangYG123/CurricularFace 建议先了解下这篇文章:…...
springmvc之rest风格(RESTFUL)
目录 一、介绍 1.什么是REST? 2.REST的实质 3.REST风格的优点 4.REST风格的缺点 3.什么是RESTful? 二、代码理解 一、介绍 1.什么是REST? 答:REST(Representational State Transfer) ,表现形式转…...
django项目实战十四(django+bootstrap实现增删改查)进阶混合数据使用modelform上传
目录 一、启用media 1、URL设置 2、settings.py配置 二、url 三、upload.py 新增upload_modelform方法 四、form.py新增UpModelForm 五、创建city表 六、创建city_list.html 接上一篇《django项目实战十三(djangobootstrap实现增删改查)进阶混合数据f…...
2023年CDGA考试模拟题库(1-100)
2023年CDGA考试模拟题库(1-100) 1.以下哪种活动中 ,混淆是不足以保护数据 的?[1分] A.数据共享 B.数据转换 C.数据脱敏 D.以上都正确 答案C 2.关于受控词表描述不正确的是?[1分] A.系统地组织文件档案和内容离不开受控词表 B.受控词表的一个例子是用于出版物分类的都…...
HTML常用基础内容总结
文章目录一、对HTML的感性认知前置知识什么是web前端,什么是web后端前端技术栈、后端技术栈开发与运行的区别浏览器的功能是什么简介写一个简单可运行的的html代码前端开发方式二、VSCode的简单使用三、常用的HTML标签最最基本的HTML结构HTML代码特点注释标签标题标…...
Gorm-学习笔记
1 基本使用 2 创建数据 2.1 如何使用Upsert 使用clause.OnConflict处理数据冲突 2.2 如何使用默认值 通过使用default标签为字段定义默认值 3 查询数据 3.1 First与Find 使用First时,需要注意查询不到数据会返回ErrRecordNotFound。 使用Find查询多条数据&#x…...
【Neo4j】图数据库CypherQueryLanguage随笔
CQL语言随笔 一、Cyther关系描述 如图:唐僧,孙悟空,白骨精三者的关系图: Cypher语言描述他们的关系: (孙悟空)<-[:赶走]-(唐僧)-[:被骗]->(白骨精)-[:被打死]->(孙悟空) 二、CQL语言的使用案例 创建结点…...
STM32Cube串口USART发送接收数据
本文代码使用 HAL 库。 文章目录前言一、USART 同步/异步串行接收/发送器二、USART 原理图三、CubeMX 创建工程四、usart.c 文件解析五,设计实验:在 串口输入字符点亮led实验现象:总结前言 这篇文章介绍 实现 USART 异步模式下 通过 串口助手…...
OpenFeign详解
OpenFeign是什么? OpenFeign: OpenFeign是Spring Cloud 在Feign的基础上支持了SpringMVC的注解,如RequesMapping等等。OpenFeign的FeignClient可以解析SpringMVC的RequestMapping注解下的接口,并通过动态代理的方式产生实现类&am…...
python多线程网络编程
背景 使用过flask框架后,我对request这个全局实例非常感兴趣。它在客户端发起请求后会保存着所有的客户端数据,例如用户上传的表单或者文件等。那么在很多客户端发起请求时,服务器是怎么去区分不同的request对象呢?当查看了大量的…...
BFS-走迷宫
题目描述 给定一个 NM 的网格迷宫 G。G 的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示)。 已知迷宫的入口位置为 (x1,y1),出口位置为 (x2...
【蓝牙mesh】Lower协议层介绍
【蓝牙mesh】Lower协议层介绍 Lower层简介 Lower协议层用于处理网络层以下的功能,包括节点的广播、重传、路由和网络拓扑等,是实现蓝牙mesh网络的关键协议之一。其中Lower协议层中最主要的一部分工作就是mesh数据的分片和组包。 Lower层是将Upper层发过…...
Java-重排序,happens-before 和 as-if-serial 语义
目录1. 如何解决重排序带来的问题2. happens-before1. 如何解决重排序带来的问题 对于编译器,JMM 的编译器重排序规则会禁止特定类型的编译器重排序。对于处理器重排序,JMM 的处理器重排序规则会要求编译器在生成指令序列时,插入特定类型的内…...
Nginx安装及介绍
前言:传统结构上(如下图所示)我们只会部署一台服务器用来跑服务,在并发量小,用户访问少的情况下基本够用但随着用户访问的越来越多,并发量慢慢增多了,这时候一台服务器已经不能满足我们了,需要我们增加服务…...
【华为OD机试模拟题】用 C++ 实现 - 寻找路径 or 数组二叉树(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明寻找路径 or 数组二叉树题目输入输出描述示例一输入输出示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...
高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...


图2
图3
图4
图5
图6
图7
图8
图10
图11