Advertisement

实验报告已发布。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
实验一 SQL*PLUS练习 【实验目的】(1) 了解Oracle的工作环境和基本使用方法。(2) 练习标准SQL的数据操作,查询命令及其查询优化。(3) 学会使用高级SQL命令,排序、分组、自连接查询等。(4) 学会使用SQL*PLUS命令显示报表,存储到文件等。【实验内容】一、 准备使用SQL*PLUS1. 进入SQL*PLUS2. 退出SQL*PLUS3. 显示表结构命令DESCRIBE SQL>DESCRIBE emp使用DESCRIBE(缩写DESC)可以列出指定表的基本结构,包括各字段的字段名以及类型、长度、是否非空等信息。4. 使用SQL*PLUS显示数据库中EMP表的内容 输入下面的查询语句:SQL>SELECT * FROM emp;按下回车键执行查询5. 执行命令文件START或@命令将指定文件调入SQL缓冲区中,并执行文件内容。SQL>@ 文件名(文件后缀缺省为.SQL)或SQL>START 文件名文件中每条SQL语句顺序装入缓冲区并执行。二、 数据库命令——有关表、视图等的操作1. 创建表employee 例1 定义一个人事信息管理系统中存放职工基本信息的一张表。可输入如下命令:SQL>CREATE TABLE employee (empno number(6) PRIMARY KEY, /* 职工编号 name varchar2(10) NOT NULL, /* 姓名deptno number(2) DEFAULT 10, /* 部门号salary number(7,2) CHECK(salary<100000), /*工资birth_date date, /*出生年月soc_sec_num char(9) U NIQUE, /*内部序列号foreign key(deptno) references dept(deptno));例2 复制一个与emp表的表结构相同的新空表emp2.可输入如下命令:SQL>create table emp2 asselect * from empwhere 1=2;在命令的where子句中给出1=2,表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到新表中去。另外,还可以复制一个表的部分列定义或部分列定义及其数据。三、 Oracle数据库数据查询 1、单表查询2、多表查询四、 SQL*PLUS常用命令表1 常用报表格式化名命令命令 定义Btitle 为报表的每一页设置底端标题Column 设置列的标题和格式Compute 让SQL*PLUS计算各种值Remark 将某些字标记为注释Set linesize 设置报表的行宽字符数Set newpage 设置报表各页之间的行数Spool 使SQL*PLUS将输出写入文件中Start 使SQL*PLUS执行一个sql文件Ttitle 设置报表每页的头标题Break 让SQL*PLUS进行分组操作例3 建立一个批命令文件对查询到的数据以报表的形式输出并将其保存到指定的文件中。处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”中建立SCGB.SQL文件。SCGB.SQL文件中的命令组如下:SQL>EDIT E:\ SCGB.SQL SET echo off SET pagesize 30 SET linesize 75 TTITLE’2008年4月10号’CE’公司职员基本情况登记表’R’Page:’ FORMAT 99->SQL.PNO SKIP 1 CE’===========================’ BTITLE COL 60 ’制标单位’ TAB 3 ‘人事部’ COLUMN empno heading ‘职工|编号’ COLUMN ename format a10 heading ‘姓 名’COLUMN job heading ‘工 种’COLUMN sal format $99,990 heading 工 资’COLUMN comm Like sal heading ‘奖 金’COLUMN deptno format 9999 heading ‘部门|编号’COLUMN hiredate heading ‘参加工作时间’ SPOOL e:\sjbb /*在E盘中建立格式报表输出文件,默认属性为LST BREAK on deptno skip 1 COMPUTE sum of sal comm on deptno SELECT empno,ename,job,hiredate,sal,comm,deptno from empORDER BY deptno,sal;SPOOL off /*终止SPOOL功能,关闭其文件。注意,此命令不可省,否则将建立空文件。五、 实验内容1、以cs+学号为用户名创建用户,并授予用户创建数据对象的权限。2、复制emp表,复制表名为emp_学号,然后将emp表中工资低于$2000的职工插入到复制的表中。3、对复制的emp表插入一行只包含有职工号,职工名,工资与部门号四个数据项值的记录。4、在复制的emp表中将雇员ALLEN提升为经理,工资增至$2500,奖(佣 )金增加40%。5、删除复制的emp表中工资低于500的记录行。6、列出10号部门中既不是经理,也不是秘书的职工的所有信息。7、查找出部门所在地是CHICAGO的部门的职工姓名、工资和工种。8、统计各部门中各工种的人数、工资总和及奖金总和。9、查找出工资比其所在部门平均工资高的职工姓名、工种与工资情况。实验3 Oracle数据库开发环境下PL/SQL编程 【实验目的】 (1)掌握 PL/SQL 的基本使用方法。(2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用 PL/SQL 解决实际问题 【实验内容与步骤】 PL/SQL块中的可执行部分是由一系列语句组成的(包括对数据库进行操作的SQL语句,PL/SQL语言的各种流程控制语句等)。在块中对数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL块中,可以使用SQL的数据查询命令,数据操纵命令和事务控制命令。可使用全部SQL函数。PL/SQL中的SQL语句,可使用SQL的比较操作等运算符。但不能使用数据定义语句。在PL/SQL块中使用SELECT语句时注意几点:(1)SELECT语句必须含有INTO子句。(2)INTO子句后的变量个数和位置及数据类型必须和SELECT命令后的字段名表相同。(3)INTO子句后可以是简单类型变量或组合类型变量。(4)SELECT语句中的WHERE条件可以包含PL/SQL块中定义的变量及表达式,但变量名不要同数据库表列名相同。(5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。[例3-1] 问题:编写一个过程,求和运算。 SET SERVEROUTPUT ON;DECLARE a number:=1;BEGIN a:=a+5; DBMS_OUTPUT.PUT_LINE(和为:||TO_CHAR(a));END;/【例3-2】:使用%TYPE声明变量,输出制定表中的相关信息。DECLARE my_name student.sname%TYPE;BEGIN SELECT sname INTO my_name FROM student WHERE no=’01203001’; DBMS_OUTPUT.PUT_LINE(my_name); END;/【例3-3】问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 declare v_sal emp.sal%type; begin select sal into v_sal from emp where ename=spName; if v_sal<2000 then update emp set sal=sal+sal*10% where ename=spName; end if; end; / 实验内容:1、用PL/SQL实现:输入empno的值,显示emp表中对应记录的内容。2、用PL/SQL完成:读入三个数,计算并输出它们的平均值及三个数的乘积。3、对职工表emp中的雇员SCOTT提高奖金,若工种为MANAGER,则奖金提高其原来的20%;若工种为SALESMAN,则奖金提高其原来的15%;若工种为ANALYST,则奖金提高其原来的10%,其它都按原来的7%提高。4、用PL/SQL块实现下列操作公司为每个职工增加奖金:若职工属于30号部门,则增加$150;若职工属于20号部门,则增加$250;若职工属于10号部门,则增加$350。实验四 PL/SQL存储过程 (2学时)【实验目的】(1)了解存储过程的使用方法。(2)掌握存储过程的使用方法。【实验要求】(1)按照业务要求创建实现特定功能的存储过程。(2)按照业务内容创建实现具有特定功能的函数。【实验内容】1、 写存储过程,显示所指定雇员名所在的部门名和位置。CREATE OR REPLACE PROCEDURE DeptMesg(pename emp.ename%TYPE,pdname OUT dept.dname%TYPE,ploc OUT dept.loc%TYPE) ASBEGINSELECT dname,loc INTO pdname,ploc FROM emp,deptWHERE emp.deptno=dept.deptno AND emp.ename=pename;END;/VARIABLE vdname VARCHAR2(14);VARIABLE vloc VARCHAR2(13);EXECUTE DeptMesg(SMITH,:vdname,:vloc);PRINT vdname vloc;2、 定义一个为修改职工表(emp)中某职工工资的存储过程子程序,职工名作为形参,若该职工名在职工表中查找不到,就在屏幕上提示“查无此人”然后结束子程序的执行;否则若工种为MANAGER的,则工资加$1000;工种为SALESMAN,工资加$500;工种为ANALYST,工资加$200,否则工资加$100。create or replace procedure xggz(name varchar2) isk_job emp.job%type; addsal emp.sal%type;beginselect job into k_job from emp where ename=name;if k_job=’MANAGER’ then addsal:=1000;elsif k_job=’SALESMAN’ then addsal:=500;elsif k_job=’ANALYST’ then addsal:=200;elseaddsal:=100;end if;update emp set sal=sal+addsal where ename=name;exceptionwhen no_data_found thendbms_output.put_line(‘查无此人”);end;3、 通过dept表查询出所有部门号,对每个部门雇员的工资进行调整,将工资高于(包含$2000)$2000的雇员每人增加$500,将工资低于$2000的雇员每人增加到$2000。但应注意雇员工资调整后不应大于$10000,否则显示出错信息,并退出程序。并统计显示各部门人数及工资调整后的总和。4、 以bs123456(bs学号)用户登录orcl数据库,利用PL/SQL编写程序实现下列功能模块。1)、创建一个函数,以客户号微参数,返回该客户订购图书的价格总额。2)、创建一个函数,以订单号为参数,返回该订单购图书的价格总额。3)、创建一个函数,已出版社名为参数,返回该出版社出版的图书的平均价格。4)、创建一个函数,以客户号为参数,返回该客户可以获得的礼品名称。5)、创建一个函数,以图书号为参数,统计该图书被订购的总数量。湖南文理学院实验报告课程名称 大型数据库技术 实验名称 五、PL/SQL触发器 成绩 学生姓名 专 业 年级、学号 同组者姓名 实验日期 一、实验目的: 1. 了解触发器的类型。2. 掌握PL/SQL触发器的使用方法。二、实验要求: 1. 掌握SQL Developer编译功能,使用SQL Developer完成PL/SQL命令。2. 按照业务要求创建实现特定功能的触发器。三、实验步骤:1. 打开SQLDeveloper,建立system链接、bs+学号连接登录ORCL数据库。2. 在SQLDeveloper中,用密码tiger解锁scott账号。3. 触发器注意事项(1)触发器可以声明为在对记录进行操作之前,在之前(检查约束之前和 INSERT,UPDATE 或 DELETE 执行前)或之后(在检查约束之后和完成 INSERT, UPDATE 或 DELETE 操作)触发.。(2)一个 FOR EACH ROW 执行指定操作的触发器为操作修改的每一行都调用一次。(3)SELECT 并不更改任何行,因此不能创建 SELECT 触发器。这种场合下规则和视图更适合。(4)触发器和某一指定的表格有关,当该表格被删除时,任何与该表有关的触发器同样会被删除。(5)在一个表上的每一个动作只能有一个触发器与之关联。(6)在一个单独的表上,最多只能创建三个触发器与之关联,一个INSERT触发器,一个DELETE触发器和一个UPDATE触发器。1. 实例讲解Oracle数据库自带的几个触发器Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: --create or replace trigger MDSYS.sdo_drop_userafter drop on DATABASEdeclare stmt varchar2(200);BEGIN if dictionary_obj_type = USER THEN stmt := DELETE FROM SDO_GEOM_METADATA_TABLE || WHERE SDO_OWNER = || dictionary_obj_name || ; EXECUTE IMMEDIATE stmt; end if;end;---create or replace trigger SYS.aurora$server$startup after startup on database call dbms_java.server_startup -- create or replace trigger SYS.JIS$ROLE_TRIGGER$ after drop on database when (ora_dict_obj_type=ROLE)begin sns_context.role_dropped(ora_dict_obj_name); http_security_cascade.principal_dropped(ora_dict_obj_name); end;--删除前备份数据的器Create Or Replace Trigger YSPJ.T_Bill_reMain_DelBefore delete On bill_remainFOR EACH ROWBeginInsert into BILL_REMAIN_TIGERValues(:old.BILL_REMAINID,:old.BILL_TYPEID,:old.REMAIN_NUM,:old.ADD_TIME,:old.ORG_ID,:old.STATE,:old.BILL_ID,删除记录,Sysdate,user);End;四、实验内容:1、 验证触发器创建触发器,当用户对test表执行DML语句时,将相关信息记录到日志表。--创建测试表CREATE TABLE test(t_id NUMBER(4),t_name VARCHAR2(20),t_age NUMBER(2),t_sex CHAR);--创建记录测试表CREATE TABLE test_log(l_user VARCHAR2(15),l_type VARCHAR2(15),l_date VARCHAR2(30));--创建触发器CREATE OR REPLACE TRIGGER test_triggerAFTER DELETE OR INSERT OR UPDATE ON testDECLAREv_type test_log.l_type%TYPE;BEGINIF INSERTING THEN --INSERT触发 v_type := INSERT; DBMS_OUTPUT.PUT_LINE(记录已经成功插入,并已记录到日志);ELSIF UPDATING THEN --UPDATE触发 v_type := UPDATE; DBMS_OUTPUT.PUT_LINE(记录已经成功更新,并已记录到日志);ELSIF DELETING THEN v_type := DELETE; DBMS_OUTPUT.PUT_LINE(记录已经成功删除,并已记录到日志);END IF;INSERT INTO test_log VALUES(user,v_type, TO_CHAR(sysdate,yyyy-mm-dd hh24:mi:ss));END;/--下面分别执行DML语句INSERT INTO test VALUES(101,zhao,22,M);UPDATE test SET t_age = 30 WHERE t_id = 101;DELETE test WHERE t_id = 101;--然后查看效果SELECT * FROM test;SELECT * FROM test_log;3、创建触发器,它将映射emp表中每个部门的总人数和总工资。--创建映射表CREATE TABLE dept_sal AS SELECT deptno,COUNT(empno) AS total_emp,SUM(sal) AS total_sal FROM emp GROUP BY deptno;DESC dept_sal;--创建触发器CREATE OR REPLACE TRIGGER emp_infoAFTER INSERT OR UPDATE OR DELETE ON empDECLARE CURSOR cur_emp IS SELECT deptno,COUNT(empno) AS total_emp,SUM(sal) AS total_sal FROM emp GROUP BY deptno;BEGIN DELETE dept_sal; --触发时首先删除映射表信息 FOR v_emp IN cur_emp LOOP --DBMS_OUTPUT.PUT_LINE(v_emp.deptno || v_emp.total_emp || v_emp.total_sal); --插入数据 INSERT INTO dept_sal VALUES(v_emp.deptno,v_emp.total_emp,v_emp.total_sal); END LOOP;END;/--对emp表进行DML操作INSERT INTO emp(empno,deptno,sal) VALUES(123,10,10000);SELECT * FROM dept_sal;DELETE EMP WHERE empno=123;SELECT * FROM dept_sal;4、创建触发器,它记录表的删除数据--创建表CREATE TABLE employee( id VARCHAR2(4) NOT NULL, name VARCHAR2(15) NOT NULL, age NUMBER(2) NOT NULL, sex CHAR NOT NULL);DESC employee;--插入数据INSERT INTO employee VALUES(e101,zhao,23,M);INSERT INTO employee VALUES(e102,jian,21,F);--创建记录表CREATE TABLE old_employee AS SELECT * FROM employee;DESC old_employee;--创建触发器CREATE OR REPLACE TRIGGER tig_old_empAFTER DELETE ON employee --FOR EACH ROW --语句级触发,即每一行触发一次BEGIN INSERT INTO old_employee VALUES(:old.id,:old.name,:old.age,:old.sex); --:old代表旧值END;/--进行测试DELETE employee;SELECT * FROM old_employee;5、创建触发器,比较emp表中更新的工资。CREATE OR REPLACE TRIGGER sal_empBEFORE UPDATE ON empFOR EACH ROWBEGIN IF :OLD.sal > :NEW.sal THEN DBMS_OUTPUT.PUT_LINE(工资减少); ELSIF :OLD.sal < :NEW.sal THEN DBMS_OUTPUT.PUT_LINE(工资增加); ELSE DBMS_OUTPUT.PUT_LINE(工资未作任何变动); END IF; DBMS_OUTPUT.PUT_LINE(更新前工资 : || :OLD.sal); DBMS_OUTPUT.PUT_LINE(更新后工资 : || :NEW.sal);END;/--执行UPDATE查看效果UPDATE emp SET sal = 3000 WHERE empno = 7788;6、需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。Create table foo(a number);Create trigger biud_foo Before insert or update or delete On fooBegin If user not in (‘DONNY’) thenRaise_application_error(-20001, ‘You don’t have access to modify this table.’);End if;End;/即使SYS,SYSTEM用户也不能修改foo表。2、 利用PL/SQL编写程序实现下列触发器1)、编写一个数据库触发器,当任何时候某个部门从dept表中删除时,该触发器将从emp表中删除该部门的所有雇员。(要求:emp表、dept表均为复制后的表)2)、创建一个触发器,当客户下完订单后,自动统计该订单的所有图书的价格总额。3)、创建一个触发器,禁止客户在非工作时间(早上8:00前,晚上17:00后)下订单。五、实验心得

全部评论 (0)

还没有任何评论哟~
客服
客服
  • -RMI.docx
    优质
    本文档《分布式实验报告-RMI》详细记录了基于RMI(远程方法调用)技术进行的分布式系统实验过程、实现细节及遇到的问题与解决方案。 本实验旨在让学生了解Java RMI体系结构,并学会使用RMI API开发C/S模式的应用程序。在实验过程中,首先在IHello.java文件中定义了远程服务器接口,然后在HelloTaskImpl.java文件中实现了该接口,并将服务注册到RMI register中。通过本次实验,学生可以深入了解RMI的原理和应用,掌握分布式系统开发的基本技能。
  • WebGIS中的地图服务
    优质
    本实验报告详细介绍了基于WebGIS技术的地图服务发布的流程与方法,包括数据准备、地图瓦片生成及服务器配置等关键步骤。 通过使用GeoServer发布标准OGC地图服务,可以掌握OGC网络服务的原理和应用,包括WFS(Web Feature Service)的发布、原理及应用,以及WMS(Web Map Service)的发布、原理及应用。此外,还能理解WebGIS地图服务器的原理和组成。
  • ASP.NET新闻系统源码及
    优质
    本资源包含ASP.NET新闻发布系统的完整源代码与详细的实验报告。代码实现了一个功能齐全的新闻管理系统,并附带设计思路和开发过程分析。 1. 管理员需要先登录或注册才能进入系统进行相关操作。 2. 提供了基本的登录与注册功能。 3. 登录后的管理员可以查看新闻列表,该列表包含新闻编号、标题、类别、类型及发布时间,并提供了编辑和删除两种操作选项。 4. 通过输入标题关键字或者选择特定类型的新闻,管理员能够快速定位到所需的新闻条目。 5. 点击“编辑”按钮后,可对相关新闻内容及其他属性进行查看或修改。如果有附件,则可以下载该附件。 6. 使用“删除”功能则会移除所选中的具体新闻项。 7. 当点击添加或者发布新消息时,将进入一个专门的页面,在这里填写相关信息即可完成新闻发布,并且还可以上传文件作为附件。 8. 发布过程中管理员可以选择特定用户群体查看此条信息。 9. 在首页上需要验证登录状态并显示当前登录中的管理者身份。 10. 提供了修改密码的功能。
  • 《分式数据库
    优质
    本实验报告详细探讨了分布式数据库的设计与实现,涵盖了数据分布策略、事务处理及并发控制等关键技术,并通过实例分析展示了其在实际场景中的应用效果。 课题名称:书店管理信息系统。 软件功能:该系统是图书管理信息系统,能够实现对图书的录入、修改、删除以及查询的功能;总店可以随时查看各个分店的图书相关信息。此外,系统还支持员工信息的录入、修改、删除和查询,并且会员也可以通过此系统进行相应的管理操作。
  • 综合线分析
    优质
    本实验报告详细分析了综合布线系统的规划、设计与实施过程,包括材料选用、施工技术及质量控制,旨在评估其在实际应用中的性能和效果。 综合布线实验报告采用智能楼宇平台进行编写,内容详尽、记录清晰,并附带了详细的实验总结。
  • 基于MyEclipse的JSP新闻系统开
    优质
    本项目基于MyEclipse平台开发了一个JSP新闻发布系统,并撰写相关实验报告。该系统实现了新闻信息的发布、管理和展示功能,为用户提供便捷的信息交流途径。 MyEclipse开发的JSP新闻发布系统包含实验报告(可直接使用),这是我基于梦想团队发布的新闻发布系统进行改写的版本。文档内详细介绍了安装步骤及实验报告,并包括需求分析、数据流图等内容,非常实用!请勿用于商业用途。
  • 电路板局上机.rar
    优质
    本文件为《电路板布局上机实验报告》,包含学生在电子设计课程中进行PCB布局实践的操作步骤、心得体会及成果展示等内容。 西电《集成电路版图设计》实验报告包括两个实验:实验一是三输入或与门的设计;实验二是针对IO的缓冲器版图设计。要求实验报告要详细涵盖分析计算过程。
  • 华南理工大学分与RMI
    优质
    本报告为《华南理工大学分布式实验与RMI实验》撰写,涵盖Java RMI技术原理、服务器客户端架构设计及实现细节,并分析系统性能。 华南理工大学分布式实验RMI实验及实验报告可供参考。
  • RSA算法
    优质
    本实验报告详细探讨了RSA加密算法的工作原理与实现过程,通过编程实践加深理解,并分析其安全性及应用场景。 RSA算法实验报告包括代码实现、运行图展示以及对实验结果的总结与分析。
  • 丰投针的MATLAB仿真及
    优质
    本项目通过MATLAB编程实现对布丰投针问题的数值模拟,验证了蒙特卡洛方法在计算圆周率中的应用,并探讨了实验中误差产生的原因。 布丰投针实验的原理、仿真过程以及 MATLAB 仿真实验代码和完整的实验报告。