Oracle 初级练习题 day1

题目:

员工信息表:姓名、工号、性别、年龄、省、市、县(区)、籍贯、出生日期、入职日期、联系电话、部门、部门编码、科段、科段编码、岗位、岗位编码,工作地点,家庭地址

1、查询员工个人信息并且对部门进行排序,将员工信息中的的部门、科段、岗位、姓名组合为一个字段“职务”,如:"职务:张三/业务分析/流程与IT科/运营管理部";
2、查询员工表中有多少个部门信息
3、修改其中某个部门的员工入职时间,整体往后推迟一个星期
4、查询“运营管理部”的员工年龄段在25~30之间的男性职工
5、查询工作地点为空的员工,并按部门排序
6、查询属于“湖南“、“湖北”的员工
7、查询姓名中有"建"字的员工
8、查询在”2020/01/01“以后入职的员工

薪酬表字段:工号、姓名、部门、岗位、工作天数、矿工次数、工资、年份、月份

1、查询”清理工“这个岗位中,工资大于2000的员工
2、查询各部门的最高、最低工资,按部门排序
3、在”运营管理“查出来的工资基础上加上500

 

ps:表其实是不符合规范的,但是,这里主要是为了写作业,满足需求。暂时不考虑那些,勿学。。

 

代码实现及注解:

 

-- drop table t_employee;
-- 建表 员工信息表

create table t_employee
(empno varchar2(10) PRIMARY KEY,
ename varchar2(20) NOT NULL,
sex varchar2(8),
age number(3),
province varchar2(64),
city varchar2(64),
district varchar2(64),
hometown  varchar2(100),
birthday timestamp,
hiredate timestamp,
tel varchar2(11),
deptname varchar2(20),
deptno varchar2(10),
secname varchar2(20),
secno varchar2(10),
jobname varchar2(20),
jobno varchar2(10),
address varchar2(100),
constraint epm_1 check (sex in ('男','女'))
);

/*
ALTER TABLE t_employee modify (empno varchar(10));

ALTER TABLE t_employee add (age number(3));


ALTER TABLE t_employee modify (hiredate data);
ALTER TABLE t_employee modify (birthday data);
*/
commit;

-- 插入数据

insert into t_employee values('yc00059000','晓明哥','男',18,'湖南省',
'娄底市','双峰县','湖南省娄底市',TO_DATE('18-6月-1998','DD-MON-YYYY'),
TO_DATE('17-4月-2020','DD-MON-YYYY'),'15616500000','支付二','def0002',
'不知道','null001','技术顾问','417','广西壮族自治区玉林市。。。');

insert into t_employee values('yc00059018','鹏程弟弟','男',15,'浙江',
'某某市','某县','某省某市',TO_DATE('18-6月-2020','DD-MON-YYYY'),
TO_DATE('17-4月-2020','DD-MON-YYYY'),'15616500001','支付二','def0002',
'不知道','null001','技术顾问','418','广西壮族自治区玉林市。。。');

insert into t_employee values('yc00059420','刘哥','男',22,'四川省',
'某市','某区','四川省某市',TO_DATE('20-5月-1996','DD-MON-YYYY'),
TO_DATE('13-4月-2020','DD-MON-YYYY'),'15616500000','支付二','def0002',
'不知道','null001','技术顾问','425','广西壮族自治区玉林市。。。');

insert into t_employee values('yc00059001','王总','男',55,'湖南省',
'娄底市','双峰县','湖南省娄底市',TO_DATE('8-8月-1968','DD-MON-YYYY'),
TO_DATE('17-4月-2014','DD-MON-YYYY'),'15616500000','支付二','def0002',
'不知道','null001','技术顾问','417','广西壮族自治区玉林市。。。');

insert into t_employee values('yc00059000','王总','男',56,'湖北省',
'娄底市','双峰县','湖南省娄底市',TO_DATE('8-8月-1968','DD-MON-YYYY'),
TO_DATE('17-4月-2014','DD-MON-YYYY'),'15616500000','交付一','def0001',
'运营管理部','null000','经理','000','广西壮族自治区玉林市。。。');

--update t_employee set hometown='湖北省'where empno='yc90059001';

commit;

--1、查询员工个人信息并且对部门进行排序,将员工信息中的
--部门、科段、岗位、姓名组合为一个字段“职务”,
--如:"职务:张三/业务分析/流程与IT科/运营管理部";

-- select * from t_employee;

select empno,ename,ename||'/'||deptname||'/'|| secname||'/'|| jobname
 as detail from t_employee  order by deptno;

--2、查询员工表中有多少个部门信息

select count(distinct(deptno)) as "部门总数" from t_employee ;


--3、修改其中某个部门的员工入职时间,整体往后推迟一个星期

--select ename,deptno,hiredate,hiredate+7 from t_employee;

update t_employee set hiredate = hiredate+7 where deptno='def0002';


--4、查询“运营管理部”的员工年龄段在25~30之间的男性职工

select ename,age from t_employee where age between 50 and 60;


--5、查询工作地点为空的员工,并按部门排序(少写了一列,换成省为空吧

select empno,ename,deptno from t_employee where province is null order by deptno;


--6、查询属于“湖南“、“湖北”的员工

select empno,ename,hometown from t_employee 
where hometown like '湖南%' or  hometown like '湖北%';


--7、查询姓名中有"总"字的员工

select empno,ename from t_employee where ename like '%总%';


--8、查询在”2020/01/01“以后入职的员工

select empno,ename,hiredate from t_employee 
where hiredate > to_date('2020/01/01','yyyy-mm-dd');


--薪酬表字段:工号、姓名、部门、岗位、工作天数、矿工次数、工资、年份、月份


--创建薪水表

create table t_salary
(empno varchar2(10),
ename varchar2(20),
deptname varchar2(20),
deptno varchar2(10),
secname varchar2(20),
secno varchar2(10),
jobname varchar2(20),
jobno varchar2(10),
workday number(2),
notworkday number(2),
esalary number(10,2),
yyear varchar2(4),
mmonth varchar2(2)
);

select * from t_salary;

ALTER TABLE t_salary modify (esalary number(10,2));

insert into t_salary values('yc00059000','晓明哥','支付二','def0002',
'不知道','null001','技术顾问','417',12,18,120.00,'2020','4');

insert into t_salary values('yc00059018','鹏程弟弟','支付二','def0002',
'不知道','null001','技术顾问','418',8,12,1800.00,'2020','4');

insert into t_salary values('yc00059425','刘哥','支付二','def0002',
'不知道','null001','技术顾问','425',8,12,1800.00,'2020','4');

insert into t_salary values('yc00059001','王总','支付二','def0002',
'不知道','null001','技术顾问','417',8,12,1800.00,'2020','4');

insert into t_salary values('yc00059000','王总','交付一','def0001',
'运营管理部','null000','经理','000',25,5,2800.00,'2020','3');

--1、查询”清理工“这个岗位中,工资大于2000的员工

select ename,esalary,jobname from t_salary where esalary > 2000 and jobname='经理';

--2、查询各部门的最高、最低工资,按部门排序

select deptno,max(esalary) as "最高工资",min(esalary) as "最低工资" from t_salary 
group by deptno;

--3、在”运营管理“查出来的工资基础上加上500

select ename,esalary,esalary + 500 as "加500" from t_salary;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章