目录
(2)查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
(1)在部门表中添加一个部门,编号为50,名称为 TRAIN 地点在 LOUDI
实验目的:
掌握数据库查询语句的编写方法
掌握利用查询语言完成基本查询
掌握利用SQL语句完成数据的添加、删除、修改操作
实验内容:
一、简单查询
编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
-
查询员工表与部门表的笛卡尔积
prompt 查询员工表与部门表的笛卡尔积
SELECT *
FROM emp,dept;
-
在上述操作的基础上完成连接的选择操作和投影操作
prompt 在上述操作的基础上完成连接的选择操作和投影操作
SELECT empno,ename,job,sal,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno;
-
对查询数据进行排序操作
prompt 对查询数据进行排序操作
SELECT empno,ename,job,sal,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno
ORDER by sal DESC;
编写查询语句,完成对员工信息、部门情况等的基本查询
-
查询工资超过2500的员工基本信息
prompt 查询工资超过的员工基本信息
SELECT *
FROM emp
WHERE sal>2500;
-
查询月总收入超过2500的员工基本信息
prompt 查询月总收入超过2500的员工基本信息
SELECT *
FROM emp
WHERE nvl(sal,0)+nvl(comm,0)>2500;
-
查询工资超过2500的员工的姓名及其所在部门名称
prompt 查询工资超过的员工的姓名及其所在部门名称
SELECT ename,dname,sal
FROM emp,dept
WHERE emp.deptno=dept.deptno and sal>2500;
-
查询所有员工的工资、奖金、总收入,并按部门编号排序
prompt 查询所有员工的工资、奖金、总收入,并按部门编号排序
SELECT deptno,ename,sal,comm,nvl(sal,0)+nvl(comm,0) 总收入
FROM emp
ORDER by deptno;
-
查询全公司的平均工资、最高工资、最低工资和总奖金数。
prompt 查询全公司的平均工资、最高工资、最低工资和总奖金数。
SELECT AVG(nvl(sal,0)) 平均工资,MAX(nvl(sal,0)) 最高工资,MIN(nvl(sal,0)) 最低工资,SUM(nvl(comm,0)) 总奖金数
FROM emp;
二、分组查询
编写分组查询语句,理解分组查询的意义
编写分组查询语句,实现分组查询的应用
(1)查询各部门的平均工资和最高月收入和总资金数
prompt 查询各部门的平均工资和最高月收入和总资金数
SELECT emp.deptno,dname,AVG(nvl(sal,0)) 平均工资, MAX(nvl(sal,0)+nvl(comm,0)) 最高月收入 ,SUM(nvl(sal,0)+nvl(comm,0)) 总资金数
FROM emp,dept
WHERE emp.deptno=dept.deptno
GROUP by emp.deptno,dname;
(2)查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
prompt 查询部门号大于且平均工资大于的部门名称、部门平均工资和部门人数
SELECT emp.deptno,dname,AVG(nvl(sal,0)) 部门平均工资,SUM(emp.deptno) 部门人数
FROM emp,dept
WHERE emp.deptno=dept.deptno and emp.deptno>10
GROUP by dname,emp.deptno
HAVING AVG(nvl(sal,0))>1500;
三、增删改语句
添加数据
(1)在部门表中添加一个部门,编号为50,名称为 TRAIN 地点在 LOUDI
prompt 在部门表中添加一个部门,编号为,名称为 TRAIN ,地点在 LOUDI
INSERT INTO dept
VALUES(50,'TRAIN','LOUDI');
SELECT *
FROM dept;
修改数据
(2)将刚才添加了部门的编号修改为80
prompt 将刚才添加了部门的编号修改为
UPDATE dept
SET deptno=80
WHERE deptno=50;
SELECT *
FROM dept;
删除数据
(3)删除刚才添加了部门
prompt 删除刚才添加了部门
DELETE FROM dept
WHERE deptno=80;
SELECT *
FROM dept;
总代码:
set linesize 999
set pagesize 999
prompt 查询员工表与部门表的笛卡尔积
SELECT *
FROM emp,dept;
prompt 在上述操作的基础上完成连接的选择操作和投影操作
SELECT empno,ename,job,sal,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno;
prompt 对查询数据进行排序操作
SELECT empno,ename,job,sal,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno
ORDER by sal DESC;
prompt 查询工资超过的员工基本信息
SELECT *
FROM emp
WHERE sal>2500;
prompt 查询月总收入超过2500的员工基本信息
SELECT *
FROM emp
WHERE nvl(sal,0)+nvl(comm,0)>2500;
prompt 查询工资超过2500的员工的姓名及其所在部门名称
SELECT ename,dname,sal
FROM emp,dept
WHERE emp.deptno=dept.deptno and sal>2500;
prompt 查询所有员工的工资、奖金、总收入,并按部门编号排序
SELECT deptno,ename,sal,comm,nvl(sal,0)+nvl(comm,0) 总收入
FROM emp
ORDER by deptno;
prompt 查询全公司的平均工资、最高工资、最低工资和总奖金数。
SELECT AVG(nvl(sal,0)) 平均工资,MAX(nvl(sal,0)) 最高工资,MIN(nvl(sal,0)) 最低工资,SUM(nvl(comm,0)) 总奖金数
FROM emp;
prompt 查询各部门的平均工资和最高月收入和总资金数
SELECT emp.deptno,dname,AVG(nvl(sal,0)) 平均工资, MAX(nvl(sal,0)+nvl(comm,0)) 最高月收入 ,SUM(nvl(sal,0)+nvl(comm,0)) 总资金数
FROM emp,dept
WHERE emp.deptno=dept.deptno
GROUP by emp.deptno,dname;
prompt 查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
SELECT emp.deptno,dname,AVG(nvl(sal,0)) 部门平均工资,SUM(emp.deptno) 部门人数
FROM emp,dept
WHERE emp.deptno=dept.deptno and emp.deptno>10
GROUP by dname,emp.deptno
HAVING AVG(nvl(sal,0))>1500;
prompt 在部门表中添加一个部门,编号为50,名称为 TRAIN ,地点在 LOUDI
INSERT INTO dept
VALUES(50,'TRAIN','LOUDI');
SELECT *
FROM dept;
prompt 将刚才添加了部门的编号修改为80
UPDATE dept
SET deptno=80
WHERE deptno=50;
SELECT *
FROM dept;
prompt 删除刚才添加了部门
DELETE FROM dept
WHERE deptno=80;
SELECT *
FROM dept;
标签:sal,数据库,编程,查询,dept,emp,SQL,deptno,nvl
From: https://blog.csdn.net/qq_74218815/article/details/139157155