oralce 经典习题系列-查询

oralce 经典习题系列

数据库数据类型

The problem

1在已经创建的employee表中进行如下操作:
(1)计算所有女员工(‘F’)的工龄。
(2)使用ROWNUM查询从第3条记录开始的记录。
(3)查询销售人员(SALSEMAN)的最低工资。
(4)查询名字以字母N或者S结尾的记录。
(5)查询在BeiJing工作的员工的姓名和职务。
(6)使用左连接方式查询employee和dept表。
(7)查询所有2001~2005年入职的员工的信息,查询部门编号为20和30的员工信息并使用UNION合并两个查询结果。
(8)使用LIKE查询员工姓名中包含字母a的记录。
(9)使用REGEXP_LIKE函数查询员工姓名中包含T、C或者M三个字母中任意一个的记录。

The premise condition

创建数据库并插入数据代码

--创建一个部门表
create table dept(
  d_no number(11) GENERATED BY DEFAULT AS IDENTITY primary key,
  d_name varchar(50) not null,
  d_location varchar(100) 
);

--创建一个雇员表
create table employee (
  e_no number(11) primary key,
  e_name varchar2(100) not null,
  e_gender varchar2(1) not null,
  dept_no number(11) not null,
  e_job varchar(100) not null,
  e_salary number(11) not null,
  hireDate date,
  CONSTRAINT fk_dept foreign key(dept_no) REFERENCES dept(d_no) 
);
--插入部门数据
insert into dept values(10,'Accounting','ShanHai');
insert into dept values(20,'Research','BeiJing');
insert into dept values(30,'SALES','ShenZhen');
insert into dept values(40,'OPERATIONS','Fujian');
--插入雇员信息
insert into employee values(1001,'SMITH','m',20,'CLERK',800,'2005-11-12');
insert into employee values(1002,'ALLEN','f',30,'SALESMAN',1600,'2003-05-12');
insert into employee values(1003,'WARD','f',30,'SALESMAN',1250,'2003-05-12');
insert into employee values(1004,'JONES','m',20,'MANAGER',2975,'1998-05-18');
insert into employee values(1005,'MARTIN','m',30,'SALESMAN',1250,'2001-06-12');
insert into employee values(1006,'BLAKE','f',30,'MANAGER',2850,'1997-02-15');
insert into employee values(1007,'CLARK','m',30,'MANAGER',2450,'2002-09-12');
insert into employee values(1008,'SCOTT','m',20,'ANALYST',3000,'2003-05-12');
insert into employee values(1009,'KING','f',10,'PRESIDENT',5000,'1995-01-01');
insert into employee values(1010,'TURNER','f',30,'SALESMAN',1500,'1997-10-12');
insert into employee values(1011,'ADAMS','m',20,'CLERK',1100,'1999-10-05');
insert into employee values(1012,'JAMES','m',30,'CLERK',950,'2008-06-15');

The answer

1.1 实现代码select to_number(to_char(sysdate,'yyyy'))-to_number(to_char(hireDate,'yyyy')) as years,e_no,e_name from employee where e_gender ='f';这里暂时按整体年份算,要精确也可以,转化为天数计算。
1.2 代码实现select * from (select rownum as no,a.* from employee a) where no>3 ;
1.3 代码实现select min(e_salary) from employee where e_job = 'SALESMAN';
1.4 代码实现select * from employee where substr(e_name,1,1)='N' or substr(reverse(e_name),1,1)='S' ;
1.5 代码实现select a.e_name ,a.e_job from employee a inner join dept b on a.DEPT_NO =b.D_NO where b.D_LOCATION ='BeiJing';;
1.6 代码实现select a.*,b.* from employee a left join dept b on a.DEPT_NO =b.D_NO;
1.7 代码实现select * from employee where to_char(hiredate,'yyyy') BETWEEN '2001' and '2005' union select * from employee where dept_no in (20,30);
1.8 代码实现select * from employee where e_name like '%A%';
1.9 代码实现select * from employee where regexp_like(e_name,'[TCM]');

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiaoqiao_teashop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值