数据库习题1附答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建EMP_INFO表完成下列练习,表的结构说明如下
EMPNO 员工号
EMPNAME 员工姓名
JOB 工作
MGR 上级编号
HIREDATE 受雇日期
SAL 薪金
COMM 佣金
DEPTNO 部门编号
1.选择部门30中的所有员工.
select*from myemp where deptno=30;
2.列出所有办事员(CLERK)的姓名,编号和部门编号.
select ename,empno,deptno from myemp where job= 'CLERK';
3.找出佣金高于薪金的员工.
select*from myemp where comm>sal;
4.找出佣金高于薪金的60%的员工.
select*from myemp where comm>(sal*;
5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
select*from myemp where(deptno=10and job='MANAGER')or(deptno=20and job='CLERK')
6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办
事员但其薪金大于或等于2000的所有员工的详细资料.
select*from myemp where(deptno=10and
job='MANAGER')or(deptno=20and
job='CLERK')or(job!='MANAGER'and job!='CLERK'and sal>=2000)
7.找出收取佣金的员工的不同工作.
select job from myemp where comm is not null;
8.找出不收取佣金或收取的佣金低于100的员工.
select ename from myemp where comm is null or comm<100;
9.找出各月倒数第3天受雇的所有员工.
select ename from myemp where
last_day(hiredate)-hiredate=2
10.找出早于12年前受雇的员工.
select*from myemp where
(to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))> =13;
11.以首字母大写的方式显示所有员工的姓名.
select initcap(ename)from myemp
12.显示正好为5个字符的员工的姓名.
select ename from myemp where length(ename)=5;
13.显示不带有"R"的员工的姓名.
select ename from myemp where ename not
like='%r%'
14.显示所有员工姓名的前三个字符.
select substr(ename,0,3)as s from myemp
15.显示所有员工的姓名,用a替换所有"A"
select replace(ename,'A','a')from myemp
16.显示满10年服务年限的员工的姓名和受雇日期.
select ename,hiredate from myemp where
(to_char(sysdate,'yyyy')
-to_char(hiredate,'yyyy'))>10
17.显示员工的详细资料,按姓名排序.
select*from myemp order by ename;
18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.
select ename,hiredate from myemp order by hiredate;
19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.
select ename,job,sal from myemp order by job desc,sal desc
20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最
早年份的员工排在最前面.
select
ename,to_char(hiredate,'yyyy'),to_char(hiredate,'mm ')from myemp order by
to_char(hiredate,'mm'),to_char(hiredate,'yyyy')
21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.
select ename,trunc(sal/30,0)from myemp
22.找出在(任何年份的)2月受聘的所有员工。
select ename,trunc(sal/30,0)from myemp
23.对于每个员工,显示其加入公司的天数.
select ename,(sysdate-hiredate)from myemp;
24.显示姓名字段的任何位置包含"A"的所有员工的姓名.
select ename from myemp where ename like'%A%'
25.以年月日的方式显示所有员工的服务年限
select
ename,trunc((months_between(sysdate,hiredate))/12,0 )as年,
trunc(((months_between(sysdate,hiredate)-(trunc((mo nths_between(sysdate,hiredate))/12,0)*12))))as月,
round((months_between(sysdate,hiredate)-trunc(month s_between(sysdate,hiredate)))
*to_char(last_day(hiredate),'dd'),0)as日from myemp
现有2个表,一个t_appinfo即应用信息表,另一个t_download即用户下载记录表.
t_download表中的字段:
down_id
down_date
log_id
t_appinfo表中的字段
app_id
price_id
app_date
app_name
1.现要查询下载表里3月7日15点以后的下载记录前5条,按时间倒序排列.(下载记