《大型数据库作业4》基本查询语句
实验目的:
掌握数据库查询语句的编写方法
掌握利用查询语言完成基本查询
掌握利用SQL语句完成数据的添加、删除、修改操作
实验内容:
一、简单查询
编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
查询员工表与部门表的笛卡尔积
在上述操作的基础上完成连接的选择操作和投影操作
对查询数据进行排序操作
编写查询语句,完成对员工信息、部门情况等的基本查询
查询工资超过2500的员工基本信息
查询月总收入超过2500的员工基本信息
查询工资超过2500的员工的姓名及其所在部门名称
查询所有员工的工资、奖金、总收入,并按部门编号排序
查询全公司的平均工资、最高工资、最低工资和总奖金数。
二、分组查询
编写分组查询语句,理解分组查询的意义
编写分组查询语句,实现分组查询的应用
三、增删改语句
添加数据
删除数据
修改数据
最后是本次作业的源代码由于电脑问题出现的sqlplus的乱码,表示抱歉
-- 一、简单查询
set pagesize 60
set linesize 200
-- 编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
-- 查询员工表与部门表的笛卡尔积
SELECT *
FROM emp,dept
WHERE 1=1;
-- 在上述操作的基础上完成连接的选择操作和投影操作
SELECT empno,
job,
mgr,
sal
FROM emp,dept
WHERE 1=1 AND sal>2500 AND emp.deptno=dept.deptno;
--对查询数据进行排序操作
SELECT empno,
job,
mgr,
sal
FROM emp,dept
WHERE 1=1 AND sal>2500 AND emp.deptno=dept.deptno
order by sal;
-- 编写查询语句,完成对员工信息、部门情况等的基本查询
-- 查询工资超过2500的员工基本信息
SELECT *
FROM emp
WHERE 1=1 AND sal>2500;
-- 查询月总收入超过2500的员工基本信息
SELECT empno,
ename,
job,
mgr,
sal,
comm,
deptno,
(sal+nvl(comm,0)) as income
FROM emp
WHERE 1=1 AND (sal+nvl(comm,0))>2500;
-- 查询工资超过2500的员工的姓名及其所在部门名称
SELECT ename,
sal,
dname
FROM emp,dept
WHERE 1=1 AND emp.deptno=dept.deptno AND sal>2500;
-- 查询所有员工的工资、奖金、总收入,并按部门编号排序
SELECT deptno,
sal,
comm,
(sal+nvl(comm,0)) as income
FROM emp
WHERE 1=1
order by deptno;
-- 查询全公司的平均工资、最高工资、最低工资和总奖金数。
SELECT avg(sal) as 平均工资,
max(sal) as 最高工资,
min(sal) as 最低工资,
sum(comm) as 总奖金数
FROM emp
WHERE 1=1;
-- 二、分组查询
-- 编写分组查询语句,理解分组查询的意义
-- 查询部门10的平均工资、最高工资、最低工资和总奖金数。
SELECT 10 as deptno,
avg(sal) as 平均工资,
max(sal) as 最高工资,
min(sal) as 最低工资,
sum(comm) as 总奖金数
FROM emp
where 1=1 AND deptno=10;
-- 编写分组查询语句,实现分组查询的应用
-- 查询各部门的平均工资、最高工资、最低工资和总奖金数。
SELECT deptno,
avg(sal) as 平均工资,
max(sal) as 最高工资,
min(sal) as 最低工资,
sum(comm) as 总奖金数
FROM emp
where 1=1
group by deptno;
-- 三、增删改语句
-- 添加数据
insert into dept
values(50,'math','loudi');
insert into dept(deptno,dname,loc)
values(60,'english','loudi');
insert into dept(deptno,dname)
values(70,'haha');
-- 删除数据
delete from dept
where deptno=50;
-- 修改数据
update dept
set loc='城市'
where loc='loudi';
rollback;
注意:
对于不要用where的操作语句可以加一个永真条件;
对于数值操作可以都加上nvl()函数;