数据库SQL语言基础编程

目录

一、简单查询

查询员工表与部门表的笛卡尔积

在上述操作的基础上完成连接的选择操作和投影操作

对查询数据进行排序操作

查询工资超过2500的员工基本信息

查询月总收入超过2500的员工基本信息

查询工资超过2500的员工的姓名及其所在部门名称

查询所有员工的工资、奖金、总收入,并按部门编号排序

查询全公司的平均工资、最高工资、最低工资和总奖金数。

二、分组查询

(1)查询各部门的平均工资和最高月收入和总资金数

(2)查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数

三、增删改语句

(1)在部门表中添加一个部门,编号为50,名称为 TRAIN  地点在  LOUDI

(2)将刚才添加了部门的编号修改为80

(3)删除刚才添加了部门 


实验目的:

掌握数据库查询语句的编写方法

掌握利用查询语言完成基本查询

掌握利用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;

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值