Oracle中的分组查询与DML
1、Group by
进行分组查询, group by 子句可以将数据分为若干个组
1.1 分组查询
注意: 出现在 SELECT 子句中的字段,如果不是包含在多行函数中,那么该字段必须同时在 GROUP BY 子句中出现。
a) 统计每个部门的编号, 最高工资和最低工资
select deptno, max(sal), min(sal) from emp group by deptno order by deptno;
1.2 带 where 的分组查询
注意: group by 子句要写到 where 子句的后面
a) 查询每个部门的人数和平均工资, 排除 10 部门
select deptno, count(*), avg(sal) from emp where
deptno<>10 group by deptno order by deptno;
1.3 带 having 的分组查询
注意: where 子句中不允许使用分组函数, 分组函数用于分组前过滤 having 用于过滤分组后的条件 a) 查询每个部门的总工资和平均工资, 排除平均工资低于 1600 的部门
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 的职位
select job, min(sal) from emp group by job having min(sal)<2000;
b)列出平均工资大于 1200 元的部门和工作搭配组合
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
create table temp as (select * from emp);
b) 赋值 emp 表格的表结构, 不复制数据
create table temp2 as (select * from emp where 1=2);
2.2 新增(insert into)
a) 语法
insert into 表名 [(列 1, 列 2, …)] values (值 1, 值 2, …);
b) 向 temp2 表格插入一条数据
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) 当表格的每一列都要插入数据时, 可以省略列名不写. 需 要保证值的顺序和列的顺序一致.
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) 向表格插入一行数据, 只备注编号和姓名
insert into temp2 (empno, ename) values (1236, '小李');
2.3 修改(update)
a) 语法
update 表名 set 列 1=值 1[, 列 2=值 2…][where 条件]
b) 将 10 部门员工的工资调高 10%.
update temp2 set sal=sal*1.1 where deptno=10;
2.4 删除(delete) a) 语法
delete [from] 表名 [where 条件];
b) 删除编号为 1234 的员工信息
delete from temp2 where empno=1234;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos7-vsftpd文件服务器
- Mysql的逻辑架构
- centos7-httpd服务器
- Linux文件 目录与权限
- 简易数据分析(三):Web Scraper 批量抓取豆瓣数据与导入已有爬虫
- 嵌入式Linux开发环境搭建 配置Ubuntu
- 简易数据分析(五):Web Scraper 翻页、自动控制抓取数量 & 父子选择器
- 【深度】韦东山:一文看看尽linux对中断处理的前世今生
- 嵌入式开发之交叉编译程序万能命令_以freetype为例
- Python-EEG处理和事件相关电位(ERP)
- 嵌入式Linux开发 配置网络
- 问号脸:为什么 Java 中 “1000==1000” 为 false,而 ”100==100“ 为 true?
- 【硬核】韦东山:使用freetype显示一行文字
- 动画函数封装
- 事件基础及操作元素