数据库sql查询语句上机练习1_习题_结果(单世民)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
insert into EMP
values(7876,'ADMAS','CLERK',7788,'1987-06-
13',1100,NULL,20);
insert into EMP
values(7900,'JAMES','CLERK',7698,'1981-12-
03',950,NULL,30);
insert
select ename,sal,comm from EMP;
结果:
单表查询 4. 查看EMP表中部门号为10的员工的姓名,职 位,参加工作时间,工资。
命令:select ename,job,hiredate,sal from EMP
where DEPTNO='10';
结果:
5. 查所有已有的职位,要求去除重复项。
命令:select ename,sal from EMP where
JOB='manager';
结果:
9. 显示第3个字符为大写O的所有员工的姓名及 工资。
命令:select ename,sal from EMP where ename like
'__O%';
结果:
10. 显示职位为销售员(SALESMAN)或主管 (MANAGER)的员工的姓名,工资,职位。
7. 查询每个员工每个月拿到的总金额(emp.sal 为工资,emp.comm为补助)。(提示: isnull(ex1,ex2)表示如果ex1为空则返回 ex2)
命令:select ename,sal+isnull(COMM,0) total from
EMP
结果:
8. 显示职位是主管(manager)的员工的姓名, 工资。
命令:select
deptno,AVG(sal)
as
'average',MAX(sal) as 'max' from EMP group by
deptno having AVG(SAL)<2500;
结果:
20. 上一条语句以平均工资升序排序。
命令:select
deptno,AVG(sal)
as
'average',MAX(sal) as 'max' from EMP group by
insert
into
DEPT
values(40,'OPERATIONS','BOSTON');
insert into EMP values(7369,'SMITH','CLERK',7566,'1980-1217',800,NULL,20); insert into EMP values(7499,'ALLEN','SALESMAN',7698,'1981-0220',1600,300,30); insert into EMP values(7521,'WARD','SALESMAN',7698,'1981-0221',1250,500,30); insert into EMP values(7566,'JONES','MANAGER',7839,'1981-0402',2975,NULL,20); insert into EMP values(7654,'MARTIN','SALESMAN',7698,'1981-0928',1250,1400,30); insert into EMP values(7698,'BLAKE','MANAGER',7839,'1981-0501',2850,NULL,30);
insert into EMP values(7782,'CLARK','MANAGER',7839,'1981-0609',2450,NULL,10);
insert into EMP
values(7788,'SCOTT','ANALYST',7566,'1987-06-
13',3000,NULL,20);
SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT);
其中表中包含如下数据: DEPT表:
命令:select b.ename from
a.DEPTNO=b.DEPTNO where b.JOB='manager';
结果:
EMP a join EMP a.ENAME='SCOTT'
b on and
25. 显示部门的部门名称,员工名即使部门没有 员工也显示部门名称。
命令:select dname,ename from EMP right join
命令:select ename,SAL,job from EMP where
JOB='SALESMAN' or JOB='MANAGER';
结果:
11. 显示所有没有补助的员工的姓名。
命令:select ename from EMP where COMM is null; 结果:
12. 显示有补助的员工的姓名,工资,补助。
命令:select ename,SAL,COMM from EMP where COMM
is not null;
结果:
13. 排序显示所有员工的姓名,工资(按工资降 序方式)。
命令:select ENAME,SAL from EMP order by SAL
desc;
结果:
14. 显示员工பைடு நூலகம்最高工资和最低工资。
结果:
22. 排序显示所有员工的姓名,部门号,工资 (以部门号升序,工资降序,雇用日期升序 显示)。
命令:select ename,deptno,SAL from EMP order by
DEPTNO asc,SAL desc,HIREDATE asc;
结果:
23. 采用自然连接原理显示部门名以及相应的员 工姓名。(Sql server不支持NATURAL JOIN 语法。)
into
EMP
values(7934,'MILLER','CLERK',7782,'1982-01-
23',1300,NULL,10);
3. 将所有员工的工资上浮10%.然后查询员工姓
名、薪水、补助。(emp.sal为工资,
emp.comm为补助)
命令:update EMP set sal=sal+0.1*sal;
deptno having AVG(SAL)<2500 order by
AVG(SAL)asc;
结果:
多表查询 21. 显示工资高于2500或岗位为MANAGER的所有员
工的姓名,工资,职位,和部门号。
命令:select ename,SAL,job,DEPTNO from EMP where
SAL>2500 or JOB='manager';
group by JOB;
结果:
18. 显示每个部门每种岗位的平均工资和最高工 资。
命令:select
deptno,job,AVG(sal)
as
'average',MAX(sal) as 'max' from EMP group by
DEPTNO,JOB;
结果:
19. 显示平均工资低于2500的部门号,平均工资 及最高工资。
命令:select ename,job,SAL,DEPTNO from EMP where
EMP表:
SALGRADE表:
BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进 行数据还原) DDL
1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为” PK_EMP”的主键约束以及指向表 DEPT的外键约束” FK_DEPTNO”。
习题1
请根据给出的数据库表结构来回答相应问题:
DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE,
DML 2. 给出相应的INSERT语句来完成题中给出数据 的插入。
命令:
insert into DEPT values(10,'ACCOUNTING','NEW
YORK');
insert into DEPT values(20,'PESEARCH','DALLAS');
insert into DEPT values(30,'SALES','CHICAGO');
命令:select dname,ename from EMP,DEPT where
EMP.DEPTNO=DEPT.DEPTNO; 或 select dname,ename from EMP join DEPT on
EMP.DEPTNO=DEPT.DEPTNO;
结果:
24. 查询SCOTT的上级领导的姓名。
命令:
Create table DEPT (DEPTNO INT NOT NULL, DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO);
create table EMP (EMPNO INT NOT NULL,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE,
命令:select MAX(sal) as '最高工资',MIN(sal) as
'最低工资' from EMP;
结果:
15. 显示所有员工的平均工资和总计工资。
命令:select avg(sal) as '平均工资',SUM(sal) as
'总计工资'from EMP;
结果:
16. 显示补助在员工中的发放比例、即有多少比 例的员工有补助。(此题需注意两个问题: 1.select语句中进行除法如何保留小数点后 数据。2.count函数如何处理null型数据。)
结果:
27. 显示ACCOUNTING部门所有员工的名称,工 资。
命令:select ename,SAL
EMP.DEPTNO=(select deptno DNAME='ACCOUNTING');
结果:
from from
EMP DEPT
where where
28. 显示职位属于10号部门所提供职位范围的员 工的姓名,职位,工资,部门号。
SAL FLOAT, COMM FLOAT, DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);
DEPT on EMP.DEPTNO=DEPT.DEPTNO;
结果:
子查询 26. 显示所有员工的名称、工资以及工资级别。
命令:select ename,SAL,grade from EMP join
SALGRADE on EMP.SAL between SALGRADE.LOSAL and SALGRADE.HISAL;
insert into EMP
values(7839,'KING','PRESIDENT',NULL,'1981-11-
17',5000,NULL,10);
insert into EMP
values(7844,'TURN','SALESMAN',7698,'1981-09-
08',1500,0,30);
命令:select
cast(CAST(COUNT(COMM)
as
float)/cast(COUNT(*)
as
float)
as
numeric(13,12))from EMP;
结果:
聚合查询 17. 显示每种职业的平均工资。
命令:select job,avg(SAL) as 'average' from EMP
命令: select distinct job from EMP 结果:
6. 计算每个员工的年薪,并取列名为Salary of Year(emp.sal为员工的月薪),要求输出员 工姓名,年薪。
命令:select ename,sal*12 as 'Salary of Year'
from EMP;
结果: