实验目的:
掌握数据库查询语句的编写方法
掌握利用查询语言完成基本查询
掌握利用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()函数;