创建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...