ORACLE数据库的相关习题

本文提供了关于Oracle数据库的一系列选择题、填空题和编程题,涵盖了数据库的特点、SQL语言、游标、触发器与存储过程等内容。题目旨在考察数据库理论知识,如数据模型、主键特点、DML操作等,并通过实例加深对数据库操作的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、选择题:

1. 以下不是数据库特点的是:

A. 高速数据传输 B. 较高的数据独立性

C. 较小的数据冗余 D. 多用户数据共享

2.SQL语言中用来创建、删除及修改数据库对象的部分被称为:

A. 数据库控制语言(DCL) B. 数据库定义语言(DDL)

C. 数据库操纵语言(DML) D. 数据库事务处理语言

3、以下语句的作用是:

SELECT ename,sal FROM emp

WHERE sal<(SELECT min(sal) FROM emp) + 1000;

A. 显示工资低于1000元的雇员信息

B. 将雇员工资小于1000元的工资增加1000后显示

C. 显示超过最低工资1000元的雇员信息

D. 显示不超过最低工资1000元的雇员信息

4、表的主键特点中,说法错误的是:

A. 一个表只能定义一个主键(可以有多个外键

B. 主键可以定义在表级或列级

C. 主键的每一列都必须非空

D. 主键的每一列都必须惟一

5. 用来存放可变长度字符串的函数是:

A. CHAR B. VARCHAR2

C. NUMBER D. BOOLEAN

6、在程序中正确的变量定义语句是:

A. emp_record emp.ename%ROWTYPE

B. emp_record emp%ROWTYPE

C. v_ename emp%TYPE

D. v_ename ename%TYPE

7、以下表达式的结果非空的是:

A. NULL||NULL B. 'NULL'||NULL

C. 3+NULL D. (5>NULL)

8、在程序中必须书写的语句是:

A. SET SERVEROUTPUT ON B. DECLARE

C. BEGIN D. EXCEPTION

9、有关游标的论述,正确的是:

A. 隐式游标属性%FOUND代表操作成功

B. 显式游标的名称为SQL

C. 隐式游标也能返回多行查询结果

D. 可以为UPDATE语句定义一个显式游标

10. 下列有关触发器和存储过程的描述,正确的是:

A. 两者都可以传递参数

B. 两者都可以被其他程序调用

C. 两种模块中都可以包含数据库事务语句

D. 两者创建的系统权限不同

ABDDBBBCDD

二、填空题:

1、数据库系统的发展经历了 层次 模型、 网状 模型及 关系 模型几个阶段。当今应用最普遍的是 关系 数据库管理系统。

2、.如果要求学生关系S(SNO,NAME,SEX,AGE)中存储的学生信息满足下列条件:男生(SEX=‘F’)的年龄在15-60岁之间,女生(SEX=‘M’)的年龄在15-55岁之间。那么在关系S的定义中加入的检查子句正确的是

Check(sex = ‘F’ and (age>=15and age<=60)) or (sex =’M’ and (age>=15and age<=55))

3、.在SQL语言中,用于测试列值非空的语句是(B )

A. IS NOT EMPTY B.IS NOT NULL

C. NOT UNIQUE D.NOT EXISTS

4、.针对数据库系统,写出下面英文缩写的中文名称或含义:

C/S:___客服端与服务器__________ DML:__数据操作语言___________。

5、SELECT ename, job,sal FROM emp WHERE sal>=3000;

该查询语句的功能

6、显示部门10和部门20中工资小于1500的雇员。

Select *from emp where (depno =10 or deptno =20 )and sal <1500

7、显示姓名以“S”开头的雇员信息。

select * from emp where ename like'S%’

8、查询比SCOTT工资高的雇员名字和工资。

Select ename.sal from emp where sal>(select sal from emp where ename =’ SCOTT’);

三、编程题:(10*4)

1、查询和SCOTT同一部门且比他工资低的雇员名字和工资。

Select ename ,sal from emp where deptono =(select deptno from emp where ename = ‘scott’)and sal<(slect sal from emp where ename =’scott);

2、向dept表中插入一条部门信息:部门编号(deptno)为60,部门名称(dname)为“经理部”,部门所在地(loc)“南阳市”

Insert into dept(deptno,dname,loc) values(60,’ 经理部’,’ 南阳市’);

3、编写给雇员增加工资的存储过程CHANGE_SALARY,通过IN类型的参数传递要增加工资的雇员编号和增加的工资额。

Create or replace procedure change_salay(v_empno in number,v_sal in number)

As

Begin

Update emp set sal = sal+v_sal where empno = v_empno;

End;

编写给雇员增加工资的存储过程CHANGE_SALARY,通过IN类型的参数传递要增加工资的雇员编号和增加的工资额。

步骤1:登录SCOTT账户。

步骤2:在SQL*Plus输入区中输入以下存储过程并执行:

CREATE OR REPLACE PROCEDURE CHANGE_SALARY(P_EMPNO IN NUMBER DEFAULT 7788,P_RAISE NUMBER DEFAULT 10)

AS

V_ENAME VARCHAR2(10);

V_SAL NUMBER(5);

BEGIN

SELECT ENAME,SAL INTO V_ENAME,V_SAL FROM EMP WHERE EMPNO=P_EMPNO;

UPDATE EMP SET SAL=SAL+P_RAISE WHERE EMPNO=P_EMPNO;

DBMS_OUTPUT.PUT_LINE('雇员'||V_ENAME||'的工资被改为'||TO_CHAR(V_SAL+P_RAISE));

COMMIT;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('发生错误,修改失败!');

ROLLBACK;

END;

4.创建一个通过雇员编号返回雇员名称的函数GET_EMP_NAME。

Create or replace function get_emp_name(v_empno number)

Return varchar2

As

V_ename varchar2(20);

Begin

Select ename into v_ename from emp where empno = v_empno;

Return v_ename;

End;

创建一个通过雇员编号返回雇员名称的函数GET_EMP_NAME。

步骤1:登录SCOTT账户。

步骤2:在SQL*Plus输入区中输入以下存储函数并编译:

CREATE OR REPLACE FUNCTION GET_EMP_NAME(P_EMPNO NUMBER DEFAULT 7788)

RETURN VARCHAR2

AS

V_ENAME VARCHAR2(10);

BEGIN

SELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO=P_EMPNO;

RETURN(V_ENAME);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('没有该编号雇员!');

RETURN (NULL);

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE('有重复雇员编号!');

RETURN (NULL);

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('发生其他错误!');

RETURN (NULL);

END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值