练习1、请查询表dept中所有部门的情况。
select * from dept;
练习2、查询表dept中的部门号、部门名称两个字段的所有信息。
select deptno,dname from dept;
练习3、请从表emp中查询10号部门工作的雇员姓名和工资。
select ename,sal from emp where -
实验一。练习1、请查询表dept中所有部门的情况。
select * from dept;
练习2、查询表dept中的部门号、部门名称两个字段的所有信息。
select deptno,dname from dept;
练习3、请从表emp中查询10号部门工作的雇员姓名和工资。
select ename,sal from emp where deptno=10;
练习4、请从表emp中查找工种是职员clerk或经理manager的雇员姓名、工资。
select ename,sal from emp where job='clerk' or job='manager';
练习5、请在emp表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。
select ename,deptno,sal,job from emp where deptno between 10 and 30;
练习6、请从表emp中查找姓名以j开头所有雇员的姓名、工资、职位。
select ename,sal,job from emp where ename like 'j%';
练习7、请从表emp中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。
select ename,job,sal from emp where sal<=2000 order by sal desc;
练习8、请从表中查询工作是clerk的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。
select ename,sal, from emp,dept where and job=’clerk’;
练习9、查询表emp中所有的工资大于等于2000的雇员姓名和他的经理的名字。
select from emp a,emp b where and >=2000;
练习10、在表emp中查询所有工资高于jones的所有雇员姓名、工作和工资。
select ename,job,sal from emp where sal>(select sal from emp where ename=’jones’);
练习11、列出没有对应部门表信息的所有雇员的姓名、工作以及部门号。
select ename,job,deptno from emp where deptno not in (select deptno from dept);
练习12、查找工资在1000~3000之间的雇员所在部门的所有人员信息。
select * from emp where deptno in (select distinct deptno from emp where sal between 1000 and 3000);
练习13、雇员中谁的工资最高。
select ename from emp where sal=(select max(sal) from emp);
select ename from (select * from emp order by sal desc) where rownum<=1;
练习14、雇员中谁的工资第二高(考虑并列第一的情况,如何处理)。
select ename from (select ename ,sal from (select * from emp order by sal desc) where rownum<=2 order by sal) where rownum<=1;
实验二。1. 查询所有雇员的姓名、sal与comm之和。
select ename,sal+nvl(comm,0) “sal-and-comm” from emp;
2. 查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字。
select ename,sal,dname from emp,dept where and hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’);
3. 查询各部门中81年1月1日以后来的员工数。
select deptno,count(*)from emp where hiredate>=to_date(‘1981-01-01’,’yyyy-mm-dd’) group by deptno;
4. 查询所有在chicago工作的经理manager和销售员salesman的姓名、工资。
select ename,sal from emp where (job=’manager’ or job=’sales’) and deptno in (select deptno from dept where loc=’chicago’);
5. 查询列出来公司就职时间超过24年的员工名单。
select ename from emp where hiredate<=add_months(sysdate,-288);
6. 查询于81年来公司所有员工的总收入(sal和comm)
select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,’yyyy’)=1981’;
7. 查询显示每个雇员加入公司的准确时间,按×××年××月××日时分秒显示。
select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
8. 查询公司中按年份月份统计各地的录用职工数量。
select to_char(hiredate,'yyyy-mm'),loc,count(*)from emp,dept
where group by to_char(hiredate,'yyyy-mm'),loc;
9. 查询列出各部门的部门名和部门经理名字。
select dname,ename from emp,dept where and job=’manager’;
10. 查询部门平均工资最高的部门名称和最低的部门名称。
select dname from dept where deptno=(select deptno from (select deptno from emp group by deptno order by **g(sal) )where rownum<=1)
union all select dname from dept where deptno=(select deptno from (select deptno from emp group by deptno order by **g(sal) desc ) where rownum<=1);
11. *查询与雇员号为7521员工的最接近的在其后进入公司的员工姓名及其所在部门名。
select ename,dname
from (select ename,deptno from
(select ename,deptno from emp where hiredate>(select hiredate from emp where empno=7521) order by hiredate ) where rownum<=1) e,dept
where
实验三、1. 建立一个表(表名自定),表结构与emp相同,没有任何记录。
create table my_emp as select * from emp;
2. 用insert语句输入5条记录,并提交。
3. 扩大该表的记录数到约40条,并使雇员号不重复;每个雇员都有所属部门,雇员在同一部门的经理是同一人。
insert ….
update …
commit
4. 建立一个与dept表结构和记录完全相同的新表,并与前项新表建立参照完整性约束。
alter table my_dept add( constraint s1 primary key(deptno));
oracle练习 答案
实验一。练习1 请查询表dept中所有部门的情况。select from dept 练习2 查询表dept中的部门号 部门名称两个字段的所有信息。select deptno,dname from dept 练习3 请从表emp中查询10号部门工作的雇员姓名和工资。select ename,sal f...
Oracle练习题附答案
实验一。练习1 请查询表dept中所有部门的情况。select from dept 练习2 查询表dept中的部门号 部门名称两个字段的所有信息。select deptno,dname from dept 练习3 请从表emp中查询10号部门工作的雇员姓名和工资。select ename,sal f...
Oracle答案
已知学生表xs有学号 姓名 毕业院校 成绩 cj 等字段,请写一个sql语句实现按学号末两位数分组显示。结果显示如下 分组号学号姓名。0 20100881203 周荣通。0 20100881206 游连桦。0 20100881209 陈艳。0 20100881212 叶荣林。0 2010088121...