oracle习题-简单查询

题一

1 实现将已知表中的数据插入到另一个表中

学生表:stu1

 

 

向表中插入两条数据

 

 

学生信息表2:stuinfo

 

 

将stu1表中的两条数据导入到stuinfo表中,执行下列语句

 

 

此时查看一下stuinfo表,select * from stuinfo,会发现多了两条数据。

 

2.

 

1)创建如图所示的一张表animal,其中name字段是主键,owner、species、birth三个字段非空

Create table animal(name varchar2(20) primary key, owner varchar2(20) not null,species varchar2(10) not null,sex char(2),age number(3),birth date not null);

2)使用insert语句插入如上表所示数据

3)添加adress字段,该字段类型为varchar2

Alter table animal add address varchar2(20);

4)将address字段全部修改为“惠普洛阳基地”

Update animal set address=’惠普洛阳基地’;

5) 查找18岁到21岁之间的宠物,将他们的name和owner字段显示出来

Select name,owner from animal where age between 18 and 21;

Select name,owner from animal where age>=18 and age<=21;

6) 将小于20岁的宠物的出生日期设置为2010-01-01

Update animal set birth=’01-1月-2010’ where age<20;

Update animal set birth=to_date(‘2010-01-01’,’yyyy-mm-dd’) where age<20;

7) 将大于20岁的宠物信息删除

Delete from animal where age>20;

3.

序列号

姓名

年龄

地址

毕业院校

java成绩

数据库成绩

1001

李明

20

洛阳

河南大学

80

70

1002

张红

19

周口

郑州大学

85

80

1003

赵潘

21

商丘

山东大学

59

63

1)      创建一个员工表woker, 包含以下列:序列号ID,姓名name,年龄age,地址addr,毕业院校school,java成绩javascore,数据库成绩dbscore,其中name为主键;

2)      将表中毕业院校为山东大学的员工毕业院校修改为烟台大学。

Update worker set school=’烟台大学’ where school=’山东大学’;

3)      将表中数据库成绩小于70分的都加5分。

Update worker set dbscore=dbscore+5 where dbscore<70;

4)      查找毕业院校为郑州大学的的学生的序号,以及JAVA成绩与数据库成绩之和。

Select id as 序列号, javascore+dbscore as “成绩” from woker where school=’郑州大学’;

5)      查找表中有一门成绩不合格的员工姓名及其毕业院校。

Select name,school from worker where (javascore<60 and dbscore>=60) or (javascore>=60 and dbscore<60);

6)      查找表中地址为洛阳和商丘的员工姓名和地址。

Select name,addr from worker where addr=’洛阳’ or addr=’商丘’;

Select name,addr from worker where addr in(‘洛阳’,’商丘’);

7)      查找表中姓张的员工的姓名,毕业院校,年龄。

Select name,school,age from worker where name like ‘张%’;

8)      查询数据库成绩合格的员工信息。

Select * from worker where dbscore>=60;

题二 EMP表练习

 

 

 

  1. 1.       选择在部门30中员工的所有信息

请写出sql语句并核对是否跟下图一致

 

 

  1. 2.       列出职位为(MANAGER)的员工的编号,姓名

请写出sql语句并核对是否跟下图一致

 

 

  1. 3.       找出奖金高于工资的员工

请写出sql语句并核对是否跟下图一致

 

 

  1. 4.       找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK

请写出sql语句并核对是否跟下图一致

 

 

  1. 5.       找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工

请写出sql语句并核对是否跟下图一致

 

 

 

  1. 6.       找出没有奖金或者奖金低于500的员工

请写出sql语句并核对是否跟下图一致

 

 

  1. 7.       显示雇员姓名,根据其服务年限,将最老的雇员排在前面

请写出sql语句并核对是否跟下图一致

 

 

  1. 8.       每名员工的年终奖是2000,请显示基本工资在2000元以上的员工的月工资,年总工资(12月工资+年终奖)

请写出sql语句并核对是否跟下图一致

 

 

  1. 9.       在emp表中,查询工资在2000元以上的姓名以及工作,使用字符串连接符显示,如下图所示

请写出sql语句并核对是否跟下图一致

答案

--1.  选择在部门30中员工的所有信息
select *from emp4 where deptno=30;
--2.    列出职位为(MANAGER)的员工的编号,姓名
select empno name from emp4 where job='MANAGER';
--3.    找出奖金高于工资的员工
select *from emp4 where comm>=sal;
--4.    找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK)
select *from emp4 where (deptno=10 and job='MANAGER' ) or (deptno=20 and job='MNAAGER')
--5.    找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工
select *from emp4 where (deptno = 10 and (job !='MANAGER'and job !='CLERK')) and sal>=2000;
--6.    找出没有奖金或者奖金低于500的员工
select *from emp4 where comm is null or comm<500;
--7.    显示雇员姓名,根据其服务年限,将最老的雇员排在前面
select ename  from emp4 order by hiredate desc
--8.    每名员工的年终奖是2000,请显示基本工资在2000元以上的员工的月工资,年总工资(12月工资+年终奖)
select ename, sal, sal*12+2000 from emp4 where sal>2000;
--9.    在emp表中,查询工资在2000元以上的姓名以及工作,使用字符串连接符显示
select ename||'is a '||job from emp4 where sal >2000;

 

posted @ 2018-01-10 10:35  8亩田  阅读(1199)  评论(0编辑  收藏  举报