《数据库习题1附答案.pdf》由会员分享,可在线阅读,更多相关《数据库习题1附答案.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、创建 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 commsal;4.找出佣金高于薪金的 6
2、0%的员工.select*from myemp where comm(sal*;5.找出部门 10 中所有经理(MANAGER)和部门 20 中所有办事员(CLERK)的详细资料.select*from myemp where(deptno=10 and job=MANAGER)or(deptno=20 and job=CLERK)6.找出部门 10 中所有经理(MANAGER),部门 20 中所有办事员(CLERK),既不是经理又不是办 事员但其薪金大于或等于 2000 的所有员工的详细资料.select*from myemp where(deptno=10 and job=MANAGER)
3、or(deptno=20 and job=CLERK)or(job!=MANAGER and job!=CLERKand sal=2000)7.找出收取佣金的员工的不同工作.select job from myemp where comm is not null;8.找出不收取佣金或收取的佣金低于 100 的员工.select ename from myemp where comm is null or comm=13;11.以首字母大写的方式显示所有员工的姓名.select initcap(ename)from myemp 12.显示正好为 5 个字符的员工的姓名.select ename
4、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
5、)-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.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,
6、若月份相同则将最 早年份的员工排在最前面.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.对于每个员工,显示其加入公司的天数.selec
7、t 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(months_between(sysdate,hiredate)/12,0)*12)as 月,round(months_betw
8、een(sysdate,hiredate)-trunc(months_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条,按时间倒序排列.(下载记录表里有 dow
9、n_date 这个字段,时间格式是 2012-3-7 00:00:00).2.查询昨天被下载的所有应用的价格和上传时间.(应用表里有 price_id 和 app_date 这 2个字段)3.查询下载记录表里所有下载量大于 10 次的用户(下载表里有 log_id 表示用户)4.查询应用表里所有名字中含有中字的应用.(应用表里有 app_name 这个字段表示名字)5.查询应用表中 app_id 字段第五位和第八位的数字(app_id 是一串数字)三、根据表和提供的数据进行操作。1.删除重复记录(当表中无主键时)create table TESTTB(bm varchar(4),mc varc
10、har2(20)insert into TESTTB values(1,aaaa);insert into TESTTB values(1,aaaa);insert into TESTTB values(2,bbbb);insert into TESTTB values(2,bbbb);是用来登记的,不管你是借还是还,都要添加一条记录。请写一个 SQL 语句,获取到现在状态为已借出的所有图书的相关信息,ID 为 3 的 java 书,由于已归还,所以不要查出来。题目:要求查询结果应为:(被借出的书和被借出的日期)create table book(id int,name varchar2(30
11、),PRIMARY KEY(id)insert into book values(1,English);insert into book values(2,Math);insert into book values(3,JAVA);create table bookEnrol(id int,bookId int,dependDate date,state int,FOREIGN KEY(bookId)REFERENCES book(id)ON DELETE CASCADE )insert into bookEnrol values(1,1,to_date(2009-01-02,yyyy-mm-
12、dd),1);insert into bookEnrol values(2,1,to_date(2009-01-12,yyyy-mm-dd),2);insert into bookEnrol values(3,2,to_date(2009-01-14,yyyy-mm-dd),1);insert into bookEnrol values(4,1,to_date(2009-01-17,yyyy-mm-dd),1);insert into bookEnrol values(5,2,to_date(2009-02-14,yyyy-mm-dd),2);insert into bookEnrol values(6,2,to_date(2009-02-15,yyyy-mm-dd),1);insert into bookEnrol values(7,3,to_date(2009-02-18,yyyy-mm-dd),1);insert into bookEnrol values(8,3,to_date(2009-02-19,yyyy-mm-dd),2);