前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Oracle中的分组查询与DML

Oracle中的分组查询与DML

作者头像
时间静止不是简史
发布2020-07-24 17:25:52
发布2020-07-24 17:25:52
1.3K00
代码可运行
举报
文章被收录于专栏:Java探索之路Java探索之路
运行总次数:0
代码可运行

1、Group by

进行分组查询, group by 子句可以将数据分为若干个组

1.1 分组查询

注意: 出现在 SELECT 子句中的字段,如果不是包含在多行函数中,那么该字段必须同时在 GROUP BY 子句中出现。

a) 统计每个部门的编号, 最高工资和最低工资

代码语言:javascript
代码运行次数:0
运行
复制
select deptno, max(sal), min(sal) from emp group by deptno order by deptno; 

1.2 带 where 的分组查询

注意: group by 子句要写到 where 子句的后面

a) 查询每个部门的人数和平均工资, 排除 10 部门

代码语言:javascript
代码运行次数:0
运行
复制
select deptno, count(*), avg(sal) from emp where 
deptno<>10 group by deptno order by deptno; 

1.3 带 having 的分组查询

注意: where 子句中不允许使用分组函数, 分组函数用于分组前过滤 having 用于过滤分组后的条件 a) 查询每个部门的总工资和平均工资, 排除平均工资低于 1600 的部门

代码语言:javascript
代码运行次数:0
运行
复制
select deptno, sum(sal), avg(sal) from emp group by 
deptno having avg(sal)>=1600 order by deptno; 

1.4 select 语句的执行顺序

分组查询时相关关键词的顺序: from–>where–>group by–>select–>having–>order by

a) 在 emp 表中,列出工资最小值小于 2000 的职位

代码语言:javascript
代码运行次数:0
运行
复制
select job, min(sal) from emp group by job having min(sal)<2000;

b)列出平均工资大于 1200 元的部门和工作搭配组合

代码语言:javascript
代码运行次数:0
运行
复制
select deptno, job, avg(sal) from emp group by deptno,job having avg(sal)>1200 order by deptno;

2、DML(数据库操作语言)

2.1 复制一个测试表格

a) 复制 emp 表格, 命名为 tmp

代码语言:javascript
代码运行次数:0
运行
复制
create table temp as (select * from emp); 

b) 赋值 emp 表格的表结构, 不复制数据

代码语言:javascript
代码运行次数:0
运行
复制
create table temp2 as (select * from emp where 1=2); 

2.2 新增(insert into)

a) 语法

insert into 表名 [(列 1, 列 2, …)] values (值 1, 值 2, …);

b) 向 temp2 表格插入一条数据

代码语言:javascript
代码运行次数:0
运行
复制
insert into temp2 (empno, ename, job, mgr, hiredate, 
sal, comm, deptno) values (1234, '小明', '学生', 1111, 
to_date('2008-8-8', 'yyyy-mm-dd'), 3000, 200, 10); 

a) 当表格的每一列都要插入数据时, 可以省略列名不写. 需 要保证值的顺序和列的顺序一致.

代码语言:javascript
代码运行次数:0
运行
复制
insert into temp2 (empno, ename, job, mgr, hiredate, 
sal, comm, deptno) values (1234, '小明', '学生', 1111, 
to_date('2008-8-8', 'yyyy-mm-dd'), 3000, 200, 10); 

b) 向表格插入一行数据, 只备注编号和姓名

代码语言:javascript
代码运行次数:0
运行
复制
insert into temp2 (empno, ename) values (1236, '小李'); 

2.3 修改(update)

a) 语法

update 表名 set 列 1=值 1[, 列 2=值 2…][where 条件]

b) 将 10 部门员工的工资调高 10%.

代码语言:javascript
代码运行次数:0
运行
复制
update temp2 set sal=sal*1.1 where deptno=10; 

2.4 删除(delete) a) 语法

delete [from] 表名 [where 条件];

b) 删除编号为 1234 的员工信息

代码语言:javascript
代码运行次数:0
运行
复制
delete from temp2 where empno=1234;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Group by
    • 1.1 分组查询
    • 1.2 带 where 的分组查询
    • 1.3 带 having 的分组查询
  • 1.4 select 语句的执行顺序
  • 2、DML(数据库操作语言)
    • 2.1 复制一个测试表格
    • 2.2 新增(insert into)
    • 2.3 修改(update)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档