oracle操作题——试卷题
oracle操作题——试卷题
- 一、创建一个新用户john,密码为john123。其默认表空间为users,分配表空间配额为20m(5分)
- 二、给该用户授予connect和rescource两个角色(3分)
- 三、以该用户身份连接数据库。(2分)
- 四、在该用户方案下建立新表,表要求和约束要求如下:表结构中数据类型根据数据值自定义。(10分)
- 五、根据要求写命令(每小题2分)
- 1. 将john方案下的仓库表中面积大于300的记录复制成新表仓库1
- 2. 向仓库1中插入一条记录(wh5,济南,420)
- 3. 删除仓库1中,仓库号为wh4的记录
- 4. 对仓库1表按面积建立索引,索引名为area_index
- 5. 根据仓库表和职工表建立一个视图view1,通过它可以查询北京和上海的仓库职工的工资总和
- 6. 创建一个角色role1,通过该角色将仓库1表的增删改查权限授予所有用户。
- 7. 自定义一个异常,根据职工的员工号查询该职工的工资,如果工资小于1200,则抛出异常信息:“你的工资太低了!”
- 8. 查看john用户的所有表
- 六、用sql命令完成下面的查询(每小题3分)
- 1. 从职工表中检索所有工资值,要求结果中没有重复值,并按工资降序排列。
- 2. 检索工资多于1230元的职工号。
- 3. 检索哪些仓库有工资多于1210元的职工。
- 4. 给出在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。
- 5. 找出工资多于1230元的职工号和他们所在的城市。
- 6. 哪些城市至少有一个仓库的职工工资为1250元。
- 7. 查询所有职工的工资都多于1210元的仓库的信息。
- 8. 找出和职工e4挣同样工资的所有职工。
- 9. 检索出工资在1220元到1240元范围内的职工信息。
- 10. 求在wh2仓库工作的职工的最高工资值。
- 11. 检索没有职工的仓库的信息
- 12. 求至少有两个职工的每个仓库的平均工资。
- 七、PL/SQL编程
- (一) 利用case语句,根据grade变量的值ABCD分别输出“优秀”、“良好”、“合格”、“不合格”(4分)
- (二) 使用whie循环编程计算,输出n!,n值从键盘录入(5分)
- (三) 编写存储过程,输出在仓库wh1工作的职工信息,并调用该过程。过程名自定。(6分)
- (四)编写存储过程,统计职工表中各部门的平均工资,并只显示平均工资超过1230元的仓库信息。调用此过程。过程名自定(6分)
- (五) 已有表example,要求创建一个序列myseq,再创建一个触发器,可以自动为example主键赋值,并进行测试。(7分)
- 八、标准答案
一、创建一个新用户john,密码为john123。其默认表空间为users,分配表空间配额为20m(5分)
create user c##john identified by john123 default tablespace users quote 20M on users;
二、给该用户授予connect和rescource两个角色(3分)
grant connect,resource to c##john;
三、以该用户身份连接数据库。(2分)
conn c##john/john123
四、在该用户方案下建立新表,表要求和约束要求如下:表结构中数据类型根据数据值自定义。(10分)
create table cangku(ckid varchar2(10) constraint pk_id primary key,city varchar2(10),area varchar2(10) constraint ck_area check(area<=1000)
);create table zhigong(ckid varchar2(10) constraint fk_id references cangku(ck_id),zhgid varchar2(10) constraint pk_zhgid primary key,sal number constraint ck_sal check(sal between 1200 and 2000)
);
五、根据要求写命令(每小题2分)
1. 将john方案下的仓库表中面积大于300的记录复制成新表仓库1
create table cangku1 as select * from cangku where area>3000;
2. 向仓库1中插入一条记录(wh5,济南,420)
insert into cnagku1 values('wh5','济南',420);
3. 删除仓库1中,仓库号为wh4的记录
delete from cangku1 where ckid='wh4';
4. 对仓库1表按面积建立索引,索引名为area_index
create index area_index on cangku1(area);
5. 根据仓库表和职工表建立一个视图view1,通过它可以查询北京和上海的仓库职工的工资总和
create or replace view view1 as select sum(sal) from zhigong where ck_id in(select ck_id from cangku where city in('北京','上海'));create or replace view view1 as select sum(sal) from zhigong where ckid in(select ckid from cangku where city='北京' or city='上海');
6. 创建一个角色role1,通过该角色将仓库1表的增删改查权限授予所有用户。
system/root
create role role1;
grant all on cangku1 to role1;
grant role1 to public;
7. 自定义一个异常,根据职工的员工号查询该职工的工资,如果工资小于1200,则抛出异常信息:“你的工资太低了!”
declaremyexception exception;vno zhigong.zhgid%type := &no;vsal zhigong.sal%type;
beginselect sal into vsal from zhigong where zhgid=vno;if v_sal<1200 thenraise myexceptionend if;exceptionwhen myexception thendbms_output.put_line('你的工资太低了');
end;
8. 查看john用户的所有表
select table_name, tablespace_name, status from user_tables;
六、用sql命令完成下面的查询(每小题3分)
1. 从职工表中检索所有工资值,要求结果中没有重复值,并按工资降序排列。
select distinct sal from zhigong order by sal desc;
2. 检索工资多于1230元的职工号。
select zhgid from zhigong where sal>1230;
3. 检索哪些仓库有工资多于1210元的职工。
select ckid,zhgid,sal from zhigong where sal>1210;
4. 给出在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。
select zhgid from zhigong where ckid in('wh1','wh2') and sal<1250;
5. 找出工资多于1230元的职工号和他们所在的城市。
select zhgid,city from zhigong z,cangku c where z.ckid=c.ckid and sal>1230;
6. 哪些城市至少有一个仓库的职工工资为1250元。
select city from zhigong z,cangu c where z.ckid=c.ckid and sal=1250;
7. 查询所有职工的工资都多于1210元的仓库的信息。
select * from cangku where ckid in (select ckid from zhigong group by ckid having min(sal)>1210);
8. 找出和职工e4挣同样工资的所有职工。
select * from zhigong where sal=(select sal from zhigong where zhgid='e4');
9. 检索出工资在1220元到1240元范围内的职工信息。
select * from zhigong where sal between 1220 and 1240;
10. 求在wh2仓库工作的职工的最高工资值。
select max(sal) from zhigong where ckid='wh2';
11. 检索没有职工的仓库的信息
select * from cangku where ckid not in(select ckid from zhigong);
12. 求至少有两个职工的每个仓库的平均工资。
select ckid,avg(sal) from zhigong group bu ckid having count(zhgid)>=2;
七、PL/SQL编程
(一) 利用case语句,根据grade变量的值ABCD分别输出“优秀”、“良好”、“合格”、“不合格”(4分)
declarevgrade char(1):='&no';
begincase vgradewhen 'A' then dbms_output.put_line('优秀');when 'B' then dbms_output.put_line('良好');when 'C' then dbms_output.put_line('合格');when 'D' then dbms_output.put_line('不合格'); elsedbms_output.put_line('输入不符合要求');end case;
end;
(二) 使用whie循环编程计算,输出n!,n值从键盘录入(5分)
declarevn number := &n;result vn%type :=1;
beginwhile vn>=1 loopresult := result*vn;vn := vn-1;end loop;dbms_output.put_line(vn||'的阶层为:'||result);
end;
(三) 编写存储过程,输出在仓库wh1工作的职工信息,并调用该过程。过程名自定。(6分)
create or replace procedure mydure
iscursor mycur is select * from zhigong where ckid='wh1';
beginfor my in mycur loopdbms_output.put_line(my.ckid|| ' ' ||my.zhgid|| ' ' ||my.sal);end loop;
end;beginmydure();
end;
(四)编写存储过程,统计职工表中各部门的平均工资,并只显示平均工资超过1230元的仓库信息。调用此过程。过程名自定(6分)
create or replace procedure mydure
iscursor mycur is select ckid,avg(sal) from zhigong group by ckid having avg(sal)>1230;
beginfor my in mycur loopdbms_output.put_line(my.ckid || ' ' || my.avg(sal));end loop;
end;beginmydure();
end;
(五) 已有表example,要求创建一个序列myseq,再创建一个触发器,可以自动为example主键赋值,并进行测试。(7分)
表:create table example(id number(2) primary key,ename varchar2(20),address varchar2(30));
序列要求:初始值为1,增量为1,无最大值,不循环,没有缓冲区。
create sequence myseq start with 1 increment by 1 nocycle nocache;create table example(id number(2) primary key,ename varchar2(20),address varchar2(30)
);create or replace trigger mytrig before insert on example for each row
beginif :new.id is null thenselect myseq.nextval into :new.id from dual;end if;
end;insert into example(ename,address) values('张三','北京时代胡同');
八、标准答案
--一、
CREATE user john identified by john123 DEFAULT tablespace users quota 20m on users;--二、
grant connect,resource to john;--三、
conn john/john123--四、
create table cangku(ckid char(3) primary key,city varchar2(10),area number(3) check (area<=1000));
create table zhigong(ckid char(3) references cangku(ckid),zhgid char(2),sal number(4) check (sal>=1200 and sal<=2000));
insert into cangku values('wh1','北京',370);
insert into cangku values('wh2','上海',500);
insert into cangku values('wh3','广州',200);
insert into cangku values('wh4','武汉',400);
insert into zhigong values('wh2','e1',1220);
insert into zhigong values('wh1','e3',1210);
insert into zhigong values('wh2','e4',1250);
insert into zhigong values('wh3','e6',1230);
insert into zhigong values('wh1','e7',1250);--五、
--1.
create table cangku1 as select * from cangku where area>300;
--2.
insert into cangku1 values('wh5','济南',420);
--3.
delete from cangku1 where ckid='wh4';
--4.
create index area_index on cangku1(area);
--5.
create or replace view view1 as select sum(sal) from zhigong where ckid in(select ckid from cangku where city='北京' or city='上海');
--6. 连接system
create role role1;
grant all on john.cangku1 to role1;
grant role1 to public;--7.
DECLAREsal_exception EXCEPTION;v_no zhigong.zhgid% TYPE:='&no';v_sal zhigong.sal%type;
beginselect sal into v_sal from zhigong where zhgid= v_no;if v_sal<1200 THENraise sal_exception;end if;EXCEPTIONwhen sal_exception THENdbms_output.put_line('你的工资太低了');
end;--8.
select table_name, tablespace_name, status from user_tables;--六、用sql命令完成下面的查询
--1. 从职工表中检索所有工资值,要求结果中没有重复值,并按工资降序排列。
select distinct sal from zhigong order by sal desc;
--2. 检索工资多于1230元的职工号。
select zhgid from zhigong where sal>1230;
--3. 检索哪些仓库有工资多于1210元的职工。
select ckid, zhgid,sal from zhigong where sal>1210;
--4. 给出在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。
select zhgid from zhigong where sal<1250 and ckid in('wh1','wh2');
--5. 找出工资多于1230元的职工号和他们所在的城市。
select zhgid,city from cangku c, zhigong z where c.ckid= z.ckid and sal>1230;
--6. 哪些城市至少有一个仓库的职工工资为1250元。
select c.ckid,city from cangku c, zhigong z where c.ckid= z.ckid and sal=1250;
--7. 查询所有职工的工资都多于1210元的仓库的信息。
select * from cangku c where 1210<all(select sal from zhigong where c.ckid=ckid) and ckid in (select ckid from zhigong);
--8. 找出和职工e4挣同样工资的所有职工。
select * from zhigong where sal=(select sal from zhigong where zhgid='e4');
--9. 检索出工资在1220元到1240元范围内的职工信息。
select * from zhigong where sal between 1220 and 1240;
--10. 求在wh2仓库工作的职工的最高工资值。
select zhgid,sal from zhigong where ckid='wh2' and sal=(select max(sal) from zhigong where ckid='wh2');
--11. 检索没有职工的仓库的信息
select * from cangku where ckid not in(select ckid from zhigong);
--12. 求至少有两个职工的每个仓库的平均工资。
select ckid,avg(sal) from zhigong group by ckid having count(zhgid)>=2;--七、PL/SQL编程
--(一)
set serveroutput on
declaregrade char:='&no';
BEGINcase gradeWHEN 'A' THENdbms_output.put_line('优秀');WHEN 'B' THENdbms_output.put_line('良好');WHEN 'C' THENdbms_output.put_line('合格');WHEN 'D' THENdbms_output.put_line('不合格');ELSEdbms_output.put_line('输入不符合要求');END CASE;
end;--(二)
declarev_no int:=&no;v_jch int:=1;i int:=1;
beginwhile i<=v_no loopv_jch:= v_jch*i;i:=i+1;end LOOP;dbms_output.put_line(v_no||'的阶乘是:'||v_jch);
end;--(三)
--创建过程
create or REPLACE procedure zhg_proc
asCURSOR mycursor is select * from zhigong where ckid='wh1';rec_zhigong zhigong%rowtype;
beginopen mycursor;loopFETCH mycursor into rec_zhigong;exit when mycursor%notfound;dbms_output.put_line(rec_zhigong.ckid||' '||rec_zhigong.zhgid||' '|| rec_zhigong.sal);END LOOP;close mycursor;
end;
--调用过程
set serveroutput on
beginzhg_proc();
end;--(四)
create or replace procedure zhig_proc
ascursor ckcur is select ckid,avg(sal) avgsal from zhigong group by ckid having avg(sal)>1230;rec_zhig ckcur%rowtype;
beginopen ckcur;loop FETCH ckcur into rec_zhig;exit when ckcur%notfound;dbms_output.put_line(rec_zhig.ckid||' ' || rec_zhig.avgsal);END LOOP;close ckcur;
end;
--调用过程
set serveroutput on
beginzhig_proc();
end;--(五)
--创建表:
create table example(id number(2) primary key,ename varchar2(20),address varchar2(30));
--创建序列:
create sequence myseq start with 1 increment by 1 nomaxvalue nocycle nocache;
--创建触发器:
create or REPLACE trigger exam_trig
before insert on example
for each row
beginif new.id is nullselect myseq.nextval into :new.id from dual;end if;
end;
--测试:
insert into example(ename, address) values('aaa','nanjing');
select * from example;
oracle操作题——试卷题相关推荐
- 某高校计算机系举办了一场,国家二级MS+OFFICE高级应用机试(操作题)-试卷25
国家二级MS OFFICE高级应用机试(操作题)-试卷25 (总分:6.00,做题时间:90分钟) 一. Word字处理软件的使用(总题数:1,分数:2.00) 1.请在"答题"菜 ...
- Oracle(11g)数据库教程之十:Oracle操作题 (复习课)
Oracle(11g)数据库教程之十:Oracle操作题 (复习课) 操作题 Sutdent表的定义 字段名 字段描述 数据类型 主键 非空 Id 学号 INT(10) 是 是 Name 姓名 VAR ...
- 一级计算机上字处理题的替换题步骤,一级计算机练习题计算机一级计算机基础及+MS+OFFICE+应用(操作题)-试卷6...
计算机一级计算机基础及 MS OFFICE 应用(操作题)-试卷6 (总分:14.00,做题时间:90分钟) 一.基本操作题(总题数:1,分数:2.00) 1.1.在考生文件夹下CCTVA文件夹中新建 ...
- 计算机统考多媒体技术操作题,2020年9月网络教育统考《计算机应用基础》多媒体技术模拟题试卷操作题...
2020年9月网络教育统考<计算机应用基础>多媒体技术模拟题试卷操作题 操作题: 1.在考生文件夹中,有一个"Test.rar"压缩文件,其中包括"Test1 ...
- 计算机表格应用试卷,2020年7月网络教育统考《计算机应用基础》电子表格模拟题试卷操作题...
2020年7月网络教育统考<计算机应用基础>电子表格模拟题试卷操作题 操作题: 1.打开考生文件夹下的Excel工作簿"EXCEL考题6.xlsx",在Sheet1工作 ...
- 计算机网络统考outlook操作视频,2020年9月网络教育统考《计算机应用基础》Outlook模拟题试卷...
网络教育统考一般都需要考计算机应用基础. 大学英语等科目,其中计算机应用基础考试分很多题型,比如Outlook.基础知识.计算机安全等等,现在我们提供Outlook的模拟试卷,学生们可以根据题目进行复 ...
- 计算机表格应用试卷,2020年9月网络教育统考《计算机应用基础》电子表格模拟题试卷操作题...
网络教育统考一般都需要考计算机应用基础. 大学英语等科目,其中计算机应用基础考试分很多题型,比如电子表格.基础知识.计算机安全等等,现在我们提供电子表格操作题的模拟试卷,学生们可以根据题目进行复习,多 ...
- 一级计算机赵州桥,一级计算机练习题计算机一级计算机基础及+MS+OFFICE+应用(操作题)-试卷8...
计算机一级计算机基础及 MS OFFICE 应用(操作题)-试卷8 (总分:14.00,做题时间:90分钟) 一.基本操作题(总题数:1,分数:2.00) 1.1.将考生文件夹下的LOBA文件夹中的T ...
- 2020年9月计算机应用基础统考真题,2020年9月网络教育统考《计算机应用基础》电子表格模拟题试卷操作题...
网络教育统考一般都需要考计算机应用基础. 大学英语等科目,其中计算机应用基础考试分很多题型,比如电子表格.基础知识.计算机安全等等,现在我们提供电子表格操作题的模拟试卷,学生们可以根据题目进行复习,多 ...
最新文章
- Java学习笔记11
- tensorboard ckpt pb 模型的输出节点_PyTorch 1.1.0发布,官方支持TensorBoard,还有更多性能提升!...
- c# 正则表达式 html标签,C#匹配HTML标签,正则表达式谁会?
- java中抽象类继承抽象类_Java中的抽象类用示例解释
- 基于界面自动化测试框架的发展
- php fpm 平滑重启,nginx、php-fpm平滑重启和重载配置
- 190521每日一句
- 最大公约数与最小公倍数求法 C语言版
- Python 爬取拉钩网工作岗位
- Linux下查看电脑配置信息
- 管理储存组和邮箱数据库
- 学习笔记:使用requests+Beautiful4爬取优美图库
- Android游戏开发+实战开发教程视频
- qml 文本框获取焦点
- 计算机设备选型的基本原则,设备选型的概念和选型依据
- 计算机由硬件和软件组成
- Arthas-thread命令定位线程死锁
- C字符串操作strlen/strnlen_s详解
- python数据集_【Python数据分析实战】divorce数据集
- 动态规划+状态压缩思路解决旅行者问题
热门文章
- 计算机网络实验35步骤,计算机网络模拟器实验报告(1).(35页)-原创力文档
- 基于springboot在线考试报名系统 毕业设计-附源码031706
- kotlin “${ }”是什么意思?
- 考据党伤不起 - 东京首都大学发表《新世纪福音战士: Q》解说
- 怎么退出python
- 1060显卡支持dx12吗_GTX1660和GTX1060哪个性价比高?GTX1060和GTX1660显卡区别对比
- 网络工程师速记100条知识点
- Matlab中switch_case_otherwise语句详解
- Android使用SO库时要注意的一些问题
- GMT 时间格式转换到 TDateTime (Delphi)