可以:出现在GROUP BY 子句中的字段可以不出现在查询列表中。
先排列,再运算。
WHERE 子句中不能使用 group function。
限制组必须使用 HING 子句。
语法:
select col,group function from table
where 条件//可以没有条件限制
group by col
having group_condition //组过滤,在过滤以后,再进行分组计算。
order by col;
组函数嵌套最多只能有两层。
select max(avg(salary))
from employees
group by employee_id;
select * from tab;查询一个用户中的所有表。
子查询:
语法:
select col from table
where expr operator (select col from table);
子查询在主查询执行前执行一次。
子查询的结果被用于主查询。
使用规则:
在WHERE 和 HING 子句中都可以使用子查询。
*、子查询必须用括号扩起。
*、子查询应该在比较条件的右边。
*、在子查询中的ORDER BY 子句不需要,除非执行TOP-N分析。
TOP-N分析:(在一些表里求出最怎么怎么怎么样(最好、做多...)的几个人)。
*、对单行子查询使用单行比较操作符,多行子查询使用多行比较操作符。
可以在子查询中使用组函数。
子查询的分类:
单行单列子查询
单行操作符:>,<,=,>=,<=,<>
一定返回一行
多行单列子查询
单行多列子查询
返回零行或多行
多行操作符:
in 等于列表中的任何值。(不能用NOT IN)
ANY 与子查询返回的每个值进行比较。(小于是小于最大的,大于是大于最小的)
select employee_id,last_name,job_id,salary from smployees
where
salary < any(select salary from employees where job_id='IT_PROG')
and job_id <> 'IT_PROG';
ALL(小于是小于最小的,大于是大于最大的)
select e.employee_id,e.last_name,e.salary
from employees e,
(select department_id,min(salary) m from employees
group by department_id )d
where e.department_id=d.department_id
and
e.salary=d.m;
查询每个部门薪水最少的员工的资料。
多行多列子查询
替换变量:
临时存储值:
& (生命周期):单次引用中,不需要声明。如果替换字符或日期类型,最好用单引号扩起。
使用范围:
where
order by
列表达式
表名
整个SELECT 语句中。
&& (生命周期):整个会话(session连接),不需要声明。
define(生命周期):整个会话,预先声明,使用时用&引用声明的变量。
define column_name(变量名) 查看变量命令。
undefine 变量名 清除变量
define variable=用户创建的CHAR类型的值:define 变量名=值;
accept(生命周期):整个会话,预先声明,可以客户化提示信息,使用时用&引用声明的变量。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-35179-15.html
犯我中华大国