sql Query

用途
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

用了聚集函数,而且查询的不止一个列的时候就一定要用 group by ,而且要按第一个字段分组。

猜你喜欢

转载自zhhaojie.iteye.com/blog/1477919