一、查询
1、对查询结果进行筛选和排序
2、对查询结果进行排序
二、单行函数
1、单行函数
2、单行函数使用
3、转换函数分类
三、分组函数
1、分组函数
2、使用单列进行数据分组
按照部门分组后求部分的平均工资。
SQL> select department_id,avg(salary) from employees group by department_id ;
3、使用多列进行数据分组
先按部门再按工作类型进行工资合计。
SQL> select department_id,job_id,avg(salary) from employees group by department_id,job_id;
4、错误使用分组函数的例子
5、使用Havning筛选分组后的数据
6、使用having语句
案例:
(1)将department_id分组,job_id分组,然后求每个组的平均薪水
SQL> select department_id,job_id,avg(salary) from employees group by department_id,job_id;
(2)对上述结果进行条件筛选
SQL> select department_id,job_id,avg(salary) from employees group by department_id,job_id having department_id>80;
四、多表查询
1、使用多表连接查询(2,3,4张表用的较多)
2、连接类型
五、使用子查询
1、定义子查询
2、例子——子查询
3、使用子查询的规则和建议
4、子查询类型
5、单行子查询
(1)Having在单行子查询中的使用
SQL> select department_id,min(salary) from employees group by department_id having min(salary)>(select max(salary) from employees where department_id=30);
7、多行子查询
(1)ANY操作符
any是指小于任何一个值得数据(类似于“或”操作符,符合任何一个条件的都ok)
SQL>select salary from employees where job_id='IT_PROG'
SQL>select employee_id,last_name,job_id,salary
from employees
where salary<ANY
(select salary from employees where job_id='IT_PROG')
AND job_id<>'IT_PROG';
(2)ALL操作符
any是指小于任何一个值得数据(类似于“与”操作符,需要符合所有条件)
SQL>select salary from employees where job_id='IT_PROG'
SQL>select employee_id,last_name,job_id,salary
from employees
where salary<ALL
(select salary from employees where job_id='IT_PROG')
AND job_id<>'IT_PROG';
(3)IN操作符
SQL>select emp.last_name from employees emp where emp.employee_id not in(select mgr.manager_id from employees mgr);
SQL> select emp.last_name from employees emp where emp.employee_id in(select mgr.manager_id from employees mgr);
8、集合运算符规则
SELECT中的列的个数必须- -致 SELECT中的列的数据类型必须与第一一个查询一致 可以使用括号来改变语句执行顺序 ORDER BY只能出现在整个查询的最后.
9、在set集合运算中使用order by
ORDER BY语句只能在集合运算结尾出现. 每个单独的组成查询不能有oradrby. ORDERBY只能按照第一个查询的列进行排序. 默认使用第-一个查询的第一-列进行正序排序.
六、使用DML语句
1、DML语句用来:
向表中增加数据
修改表中已有数据
删除表中数据
2、事务
是一系列必须同时成功或者同时失败的DML语句的逻辑单元
3、DML语句
select/insert/update/delete
4、commit后的数据状态
Data changes are saved in the database. 变化后的数据被保存到数据库 变化前的数据被覆盖 所有会话都能查看变化的数据 锁被释放,其他会话可以操作数据 所有的save point被擦除
5、rollback
如果一个DML语句执行失败,只有这一个语句会被回滚. Oracle实现了隐式的save point. 其他的数据变更仍会被持久化. 用户需要显式的回滚或者提交以停止事务
6、读一致性
读-致性可以保证在任何时间查询数据都是--致的.
一个用户的变更不会与另外的用户变更冲突
读一致性保证对于同样数据的读能够做到:
--查询不需要等待写
--写也不需要等待读
--写会等待写
7、实现读一致性
8、在select中使用for update子句
七、数据库对象
约束:非空约束、唯一约束、主键约束、外键约束、check约束
1、表
2、视图
3、序列
4、索引
5、同义词
八、使用子查询创建表