用途
LIKE用于模糊匹配查询,结合%与_一起使用,其中%匹配大于等于1个字符,_只匹配一个字符
使用!%‘ escape ’! 或者 !_‘ escape ’! 分别转义 %和 _;
语法
查询名称是以H开头,_结尾,H与_之间有任意字符的供应商,如Hello_
用途
EXISTS 判断子查询是否有数据返回,有则为TURE, 否则为FALSE,EXISTS也可用于INSERT、UPDATE、DELETE;
语法
SELECT columns FROM tables WHERE EXISTS ( subquery );
用途
GROUP BY用于将结果集按指定列分组,并进行聚合;
语法
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n;
aggregate_function 是汇聚函数,通常为SUM, COUNT, MIN, MAX
用途
HAVING从句与GROUP BY从句一起使用,用于聚合条件的判断,如COUNT(*)>1,因聚合条件不能在WHERE指明;
语法
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n;
HAVING aggregate_condition1 ... condition_n;
aggregate_function 是汇聚函数,通常为SUM, COUNT, MIN, MAX,AVG(平均)
LIKE用于模糊匹配查询,结合%与_一起使用,其中%匹配大于等于1个字符,_只匹配一个字符
使用!%‘ escape ’! 或者 !_‘ escape ’! 分别转义 %和 _;
语法
Select columns From tables Where column1 Like ‘%_value_%’;
Select
*
From
suppliers
Where
supplier_name
Like
‘h% ! %’
Escape
‘ ! ’; !是转义符
查询名称是以H开头,_结尾,H与_之间有任意字符的供应商,如Hello_
Select
*
From
suppliers
Where
supplier_name
Like
'H%!_'
Escape
'!'
;
查询名称包含cro的供应商(名称中cro前后可能有任意字符,也可能没有字符)
Select
*
From
suppliers
Where
supplier_name
Like
'%cro%'
;
用途
EXISTS 判断子查询是否有数据返回,有则为TURE, 否则为FALSE,EXISTS也可用于INSERT、UPDATE、DELETE;
语法
SELECT columns FROM tables WHERE EXISTS ( subquery );
Select
*
From
suppliers sp
Where
Exists
(
Select
*
From
orders od
Where
od.supplier_id = sp.supplier_id);
里面()查询的有结果返回就为真
Delete
From
suppliers sp
Where
Not
Exists
(
Select
*
From
orders od
Where
od.supplier_id = sp.supplier_id);
oderid 在supplier表找不到对应的字段
用途
GROUP BY用于将结果集按指定列分组,并进行聚合;
语法
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n;
aggregate_function 是汇聚函数,通常为SUM, COUNT, MIN, MAX
查询每个部门及部门总工资
Select
department_name,
Sum
(salary)
As
total_salary
From
employees_v
Group
By
department_name;
-----------------------------------------------------------------------------------------------------------
Group by 后面跟的,必须是select后面的第一个列或多列,但不包括使用了函数的列。如上题,就一定要是department_name,不可以是total_salary。
而且group by 后面也不能跟聚集函数。如group by sum(salary)…
用途
HAVING从句与GROUP BY从句一起使用,用于聚合条件的判断,如COUNT(*)>1,因聚合条件不能在WHERE指明;
语法
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n;
HAVING aggregate_condition1 ... condition_n;
aggregate_function 是汇聚函数,通常为SUM, COUNT, MIN, MAX,AVG(平均)
查询总工资大于35000的部门
Select department_name, Sum (salary) As total_salary
From employees_v
Group By department_name
Having Sum (salary) > 35000 ;
-----------------------------------------------------------------------------------------------------------------
查询有最高工资为10000的部门,及最高员工的工资
Select department_name, Max (salary) As highest_salary
From employees_v
Group By department_name
Having Max (salary) = 10000
having 后面跟聚合函数
直接聚合
COUNT、SUM、MIN、MAX、AVG可以不和GROUP BY一起使用,直接对查询数据直接进行聚合,但SELECT不能包含其他列。
如果还要查找其它列,就一定要用group by
示例
查询员工总数
Select Count(*) From employees
查询员工平均工资
Select avg(salary) From employees
查询员工最高工资
Select max(salary) From employees
查询员工最低工资
Select min(salary) From employees
查询员工工资总数
Select sum(salary) From employees
COUNT、SUM、MIN、MAX、AVG可以不和GROUP BY一起使用,直接对查询数据直接进行聚合,但SELECT不能包含其他列。
如果还要查找其它列,就一定要用group by
示例
查询员工总数
Select Count(*) From employees
查询员工平均工资
Select avg(salary) From employees
查询员工最高工资
Select max(salary) From employees
查询员工最低工资
Select min(salary) From employees
查询员工工资总数
Select sum(salary) From employees
用了聚集函数,而且查询的不止一个列的时候就一定要用 group by ,而且要按第一个字段分组。