数据库习题1附答案

发布 2022-07-08 09:56:28 阅读 5589

创建emp_info表完成下列练习,表的结构说明如下。

empno 员工号。

empname 员工姓名。

job 工作。

mgr 上级编号。

hiredate 受雇日期。

sal 薪金。

comm 佣金。

deptno 部门编号。

创建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*0.6);

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')or (deptno =20 and 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((months_between(sysdate,hiredate))/12,0)*12)))as 月,round((months_between(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条,按时间倒序排列。(**记录表里有down_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 varchar2(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的j**a书,由于已归还,所以不要查出来。

SQL数据库习题答案

1 模型中,同一个关系中的不同属性,其属性名 b a.可以相同 b.不能相同 c.可以相同,但数据类型不同 d.必须相同。2 数据库系统由数据库 a 组成。a dbms 应用程序 支持数据库运行的软硬件环境和dba 3 计算机数据管理技术的发展可以划分为三个阶段,在某个阶段数据是以文件形式长期存储在...

数据库实验1答案

数据库上机实验答案。下面的示例创建名为sales的数据库。因为没有使用关键字primary,第一个文件 sales dat 成为主文件。因为sales dat文件的size参数没有指定mb或kb,因此默认为mb,以兆字节为单位进行分配。sales log文件以兆字节为单位进行分配,因为size参数中...

数据库实验1答案

仲恺农业工程学院实验报告纸。计算机科学与工程学院 院 系 计算机科学与技术专业计机084 班组课。学号200810214425 姓名薛丽华实验日期 2010.10.12 教师评定。一 实验目的。sql server 2000的启动和管理工作由服务管理器和企业管理器来实现。本次实验了解sql serv...