oracle入门(6)

2019-03-09 23:13

Oracle讲解

导出数据/导入数据

6.1 导出数据

导出整个数据库中的对象,需要特定的权限,比如管理员 DOS命令行完成导入导出

Exp system/manager@accp file=FULLDB full=y buffer=32768; 导出SCOTT模式下的所有对象

Exp scott/tiger@accp file=scott_back owner=scott; 以表的形式把数据导出成文件

EXP scott/tiger@accp tables=(emp,dept) file=文件路径 ;*.dmp

6.2 导入数据

IMP accp/accp@accp file=item_back.dmp ignore=y full=y; 导入文件:

imp accp/accp@orcl tables=(t1,t2,...) file=文件路径 ignore=y // ignore=y如果表存在就不用创建,而是直接导入数据到此表 将SCOTT用户的表导入MARTIN用户

Imp system/aptech@accp file=scott_back fromuser=scott touser=martin tables=(emp,dept)

在.net中使用ORACLE 首先给项目添加引用

System.Data与System.Data.OracleClient OracleConnection conn = new OracleConnection();

conn.ConnectionString = \; conn.Open();

OracleCommand command = conn.CreateCommand(); command.CommandText = \; OracleDataReader reader = command.ExecuteReader(); while (reader.Read()) {

Console.WriteLine(\, reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3)); }

reader.Close(); conn.Close();

在JAVA中使用Oralce,需要添加oracle的jar包

Class.forName(\); Connection

conn=DriverManager.getConnection(\

26

Oracle讲解

orcl\,\,\);

System.out.println(conn);

CallableStatement stm=conn.prepareCall(\); stm.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); stm.execute();

ResultSet rs=(ResultSet)stm.getObject(1); while(rs.next()){ System.out.println(rs.getInt(1)+\ \+rs.getString(2)); }

conn.close();

Oracle9i的做法:

学校机房里的ORACLE不能启动监听器解决办法需要先通过

Oracle Net Configuration Assistant删除现有监听器,再添加一个新的监听器, 那么新的监听器服务会自动启动。

另外如果需要用程序连接则还要修改net Manager里的服务名称name下的地址为本机IP地址

Oracle10g的做法:

找到C:\\oracle\\product\\10.1.0\\DB_1\\ NETWORK\\ADMIN\\目录下的listener.ora和tnsnames.ora文件里的(HOST=自己计算机的名称),然后重启ORACLE服务

创建学员信息表(student)表 列名 stuId stuName stuAge stuEmail stuAddress 课程表(course) 列名 courseId 成绩表(score) 列名 scoreId stuId courseId score 类型 NUMBER(4) NUMBER(4) NUMBER(2) NUMBER(4,2) 描述 从1开始,自动增长1,主键 外键,引用student表的主键 外键,引用course表的主键 1到100之间 类型 NUMBER(2) 描述 从1开始,自动增长1,主键 类型 NUMBER(4) NUMBER(2) 描述 从1001开始,自动增长1,主键 16到45之间的数字 VARCHAR2(20) 非空 VARCHAR2(20) Email地址必须包含@ VARCHAR2(50) 默认值为’荆州’ courseName VARCHAR2(20) 非空 --查询每个学员的总成绩 27

Oracle讲解

SELECT stuId 学号,SUM(score) 总成绩 FROM score GROUP BY stuId ORDER BY 总成绩 DESC;

--查询JAVA成绩的前三名

SELECT score java成绩 FROM score WHERE courseId=1 AND rownum<=3; --查询地址为空的学员

SELECT * FROM stduent WHERE stuAddress IS NULL;

--查询学员的SQL成绩并显示学号、SQL成绩、以及学员姓名 SELECT sco.score SQL成绩,sco.stuId 学号,stu.stuName 姓名 FROM student stu INNER JOIN score sco

ON(stu.stuId=sco.stuId) WHERE sco.courseId=2; --查询哪些学生没有参加考试

SELECT sco.score HTML成绩,sco.stuId 学号,sco.courseId 课程编号,stu.stuName 姓名 FROM student stu LEFT JOIN score sco

ON(stu.stuId=sco.stuId) WHERE sco.score IS NULL; --等价于

SELECT sco.score HTML成绩,sco.stuId 学号,sco.courseId 课程编号,stu.stuName 姓名 FROM student stu,score sco WHERE stu.stuId=sco.stuId(+) AND sco.score IS NULL; --查询显示学员的JAVA成绩,如果成绩<60分 显示’不及格’ 60<=成绩<80 显示’三等’ 80<=成绩<90 显示’二等’ 90<=成绩 显示’一等’ --编写程序,显示从2到100之间的素数 SET SERVEROUTPUT ON; DECLARE n NUMBER(4):=1; i NUMBER(4):=1; BEGIN LOOP n:=n+1; i:=1; LOOP i:=i+1; EXIT WHEN mod(n,i)=0; END LOOP; IF n=i THEN DBMS_OUTPUT.PUT_LINE(n); END IF; EXIT WHEN n=100; END LOOP; END; /

--循环加分,JAVA成绩普遍很低,现都给与加分,但是总分不能超过100分,直到所有人都及格,停止加分。

SET SERVEROUTPUT ON;

28

Oracle讲解

DECLARE

num NUMBER:=0; BEGIN

SELECT count(*) INTO num FROM score WHERE courseId=1 AND score<60; WHILE num>0 LOOP

UPDATE score SET score=100 WHERE courseId=1 AND score>=95; UPDATE score SET score=score+5 WHERE courseId=1 AND score<95;

SELECT count(*) INTO num FROM score WHERE courseId=1 AND score<60; END LOOP; COMMIT; END; /

--使用游标查询并显示学员信息 SET SERVEROUTPUT ON; DECLARE

stuName student.stuName%TYPE;

CURSOR stuName_cur IS SELECT stuName FROM student; BEGIN

OPEN stuName_cur; LOOP

FETCH stuName_cur INTO stuName;

DBMS_OUTPUT.PUT_LINE('姓名: '||stuName); EXIT WHEN stuName_cur%NOTFOUND; END LOOP; CLOSE stuName_cur; END; /

--使用参数游标传递学员学号,查询与之相关的信息 SET SERVEROUTPUT ON; DECLARE

stuRow student%ROWTYPE; stuCode student.stuId%TYPE; CURSOR stuName_cur(stu_Id student.stuId%TYPE) IS SELECT * FROM student WHERE stuId=stu_Id; BEGIN

stuCode:=&请输入学号;

OPEN stuName_cur(stuCode); LOOP

FETCH stuName_cur INTO stuRow;

DBMS_OUTPUT.PUT_LINE('姓名: '||stuRow.stuName||' 年龄:'||stuRow.stuAge); EXIT WHEN stuName_cur%NOTFOUND; END LOOP; CLOSE stuName_cur; END;

29

Oracle讲解

/

--编写过程,接收学员的学号,求出此学员的三门课的平均成绩打印输出。 SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE findStudent ( stu_Id NUMBER ) AS stu_Name VARCHAR2(20); BEGIN SELECT stuName INTO stu_Name FROM student WHERE stuId=stu_Id; DBMS_OUTPUT.PUT_LINE('学生姓名:'||stu_Name); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('学号不存在'); END; /

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE findStudent ( stu_Id NUMBER ) AS stu_Age NUMBER(2); stu_Name VARCHAR2(20); CURSOR my_CUR IS SELECT stuName,stuAge FROM student WHERE stuId>stu_Id; BEGIN OPEN my_CUR; FETCH my_CUR INTO stu_Name,stu_Age; WHILE my_CUR%FOUND LOOP FETCH my_CUR INTO stu_Name,stu_Age; DBMS_OUTPUT.PUT_LINE(stu_Name||' '||stu_Age); END LOOP; CLOSE my_CUR; END; /

--编写过程,带输入参数学号和课程编号,输出参数为这个学生这门课的成绩,如果缺考就为0

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE findStudent ( stu_Id IN NUMBER, course_Id IN NUMBER, scoreout OUT NUMBER

30


oracle入门(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南海公司案例分析审计作业

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: