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;

 

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