A、基础安装和应用:
一、在一台win7或win10下安装数据库oracle10或11服务器端,实例名称:orcl。(一定要检查之前是否安装过oracle,如安装过,不需再安装)
二、安装plsql,并用system用户,连接刚安装好的oracle数据库。
三、在system用户下,创建bestvike用户,赋予dba的权限,并应用命令赋予权限。
四、在system用户下,创建表空间APP_DAT_TBS,路径和大小自定义,并手工应用命令创建。
五、具体应用如下,其应用都是在bestvike用户下操作进行。
B、基础开发应用和技能:
(一)、基础应用操作,DDL和DML测试题:
练习1、使用命令create table,新建部门表和员工岗位表。
部门表要求:表为tmp_dept ,主键为:部门号, 字段包括:deptno 部门号(字符型2位) deptname 部门名称(字符型60位)
其中部门号和部门名称的字典为:01(产品部),02(金融部),03(技术部),04(开发部),并分别应用insert into 命令写入部门表中。
员工岗位表要求:表为tmp_leve ,主键为:岗位号, 字段包括:leveno 岗位号(字符型2位) levename 岗位名称(字符型20位)
其中岗位号和岗位名称字典:P1(实习/试用期),P2(助理工程师),P3(初级工程师),P4(工程师),P5(高级工程师),P6(资深工程师),并分别应用insert into 命令写入员工岗位表中。
练习2、使用命令create table,新建员工表,要求:表为tmp_emp ,主键为:员工号, 字段包括:
empno 员工号(字符3位)
ename 员工名称(字符20位)
age 年龄(数字2位)
sex 性别(字符4位)
deptno 部门号
leveno 岗位号
flag 员工状态(字符1位)(字典0:在职 1:离职)
练习3、使用命令create table,新建员工工资表,要求:表为tmp_sala ,唯一性主键为:月份+员工号, 字段包括:
emp_month 月份(字符10位,格式:yyyy-mm-dd)
empno 员工号(字符3位)
base_pay 基本工资(数字(10,2)位)
merit_pay 绩效工资(数字(10,2)位)
练习4、用Insert语句,向表tmp_emp写入15条记录,并提交;
练习5、用Insert语句,向tmp_sala写入20条记录,并提交,其中2021-12-31和2022-03-31各10条,且与tmp_emp的前10条记录的员工信息一样;
练习6、使用命令建立一个表(表名tmp_emp_test),表结构与tmp_emp相同且员工信息也完全一致。
练习7、在表tmp_emp_test中,使用命令删除员工号为010的所有员工。
练习8、查看tmp_emp与tmp_emp_test在表结构上,有何不一致的地方,并应用命令让两表在完整性约束上保持一致。
练习9、将表tmp_sala员工号为003且月份为2021-12-31的员工基本工资加300,绩效工资加600。
练习10、应用命令alter table,在表tmp_sala中,新增列“工资描述(pay_desc)”,字符型200位。
练习11、使用命令,让员工表中的列"部门号"做为部门表中的列"部门号"的外键,让员工表中的列"级别号"做为员工级别表中的"列级别号"的外键。
练习12、查询去年年底的在职员工信息,展示列为:员工号、员工名称、部门名称、岗位名称、基本工资、绩效工资,并按照员工号降序展示。
练习13、查询统计每个部门的在职员工的基本工资之和、绩效工资之和,展示列为:月份、部门名称、基本工资之和、绩效工资之和,并按月份升序、绩效工资之和降序展示。
练习14、查询统计第一季度末的每个部门的在职员工的各岗位的基本工资与绩效工资之和,展示列为:部门名称、岗位名称、基本工资与绩效工资之和,并按之和升序展示。
练习15、查询统计第一季度末的每个部门的基本工资与绩效工资之和的最大值和最小值,展示列为:月份、部门名称、最大值、最小值。
练习16、查询统计去年年底员工的基本工资与绩效工资之和大于5000的员工信息,展示列:员工号、员工名称、部门名称、岗位名称、基本工资与绩效工资之和。
练习17、查询统计每个部门的在职员工岗位的基本工资和绩效工资,
展示列为:月份、部门名称、P1岗位基本工资、P1岗位绩效工资、P2岗位基本工资、P2岗位绩效工资、P3岗位基本工资、P3岗位绩效工资,并按月份和部门号升序展示。
(二)、中级应用操作,统计查询测试题:
应用plsql,将qdfh_branch.dmp、qdfh_data_manage2.dmp导入数据库,连接用户为bestvike。
练习1、统计查询表bestvike.qdfh_data_manage2中数据日期为2017-08-31号且支行名称为“青岛城阳支行营业部”的网点号、网点名称、资产金额、存款金额。
练习2、统计查询表bestvike.qdfh_data_manage2中数据日期为2017-08-31号和2017-06-30号且客户号为380300061055410的支行号、支行名称、网点号、网点名称、资产金额、存款金额。
练习3、统计查询表bestvike.qdfh_data_manage2中数据日期为2017年且网点名称为青岛南京路支行的资产金额、存款金额、理财金额、贵金属金额。
练习4、统计查询表bestvike.qdfh_data_manage2中数据日期为2017-08-31号且支行名称包含“山东路”的网点号、网点名称、资产金额、存款金额、资产金额占比(网点合计/网点所属支行的合计)。
练习5、统计查询数据日期是2017-08-31且资产金额大于200000的所有机构的支行号、支行名称、资产金额、存款金额、存款金额占比(支行合计/全辖合计)的信息,并按存款金额升序排列。
练习6、统计查询数据日期是2017-08-31且支行名称为即墨支行营业部的网点号、网点名称、资产金额、存款金额的信息,并按资产金额降序排列。
练习7、统计查询数据日期是2017-08-31且资产金额最大的客户号、支行号、支行名称、网点号、网点名称、资产金额、存款金额、资产金额占比(客户/支行合计)。
练习8、统计查询数据日期是2017-08-31的所有机构的支行号、支行名称、网点号、网点名称、存款金额、国债金额、存款金额与国债金额之和,且金额单位为万元并保留2位小数。
练习9、统计查询数据日期是2016-12-31的支行号、支行名称、资产金额、存款金额、三方存管金额、保险金额,并按照支行的“资产金额总额”做排名展示(从大到小)。
练习10、统计查询数据日期是2017-08-31的且支行名称包含“市南”的资产金额、存款金额、资产金额较上月、存款金额较上月、资产金额较年初、存款金额较年初。
(三)、高级应用操作,测试题:
练习1、编写一个PL/SQL,应用FOR游标,把员工表中级别号为P5的部门名称、员工号、员工名称、年龄、性别、绩效工资输出。
练习2、建立一个自定义函数,实现输入“任一参数日期(yyyy-mm-dd)”,输出一组日期字符串(自“任一参数日期”的去年底日期和“任一参数日期”的自年初每月底日期,且日期格式为:yyyy-mm-dd),
如输入:'2020-05-20',得到一串日期:'2019-12-31','2020-01-31','2020-02-29','2020-03-31','2020-04-30','2020-05-20' 。
练习3、建立一个存储过程,在员工表中,利用游标实现:若部门号为01,则基本工资加100;部门号为02,基本工资加200;部门号为03,绩效工资加300;部门号为04,绩效工资加400;
其他部门,基本工资和绩效工资都加400。