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. 选择在部门30中员工的所有信息
请写出sql语句并核对是否跟下图一致
- 2. 列出职位为(MANAGER)的员工的编号,姓名
请写出sql语句并核对是否跟下图一致
- 3. 找出奖金高于工资的员工
请写出sql语句并核对是否跟下图一致
- 4. 找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK)
请写出sql语句并核对是否跟下图一致
- 5. 找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工
请写出sql语句并核对是否跟下图一致
- 6. 找出没有奖金或者奖金低于500的员工
请写出sql语句并核对是否跟下图一致
- 7. 显示雇员姓名,根据其服务年限,将最老的雇员排在前面
请写出sql语句并核对是否跟下图一致
- 8. 每名员工的年终奖是2000,请显示基本工资在2000元以上的员工的月工资,年总工资(12月工资+年终奖)
请写出sql语句并核对是否跟下图一致
- 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;
作者:8亩田
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
本文如对您有帮助,还请多帮 【推荐】 下此文。
如果喜欢我的文章,请关注我的公众号
如果有疑问,请下面留言