select 语句的处理顺序:
1.from 表
2.on
3.join
4.where
5.group by 列
6.with cube 或 with rollup
7.having 筛选条件
8.select
9.distinct
10.order by 列
11.top
/*
通配符:
_:匹配单个字符
%:匹配任意多个任意字符
[]:范围
^:取反,排除
*/
/*
分组:
1.从每个班中归纳班级ID和对应的人数 //以下三种皆相同
*/
select ClassId as 班级ID,班级人数 = count(*) from Student group by ClassId
select ClassId 班级ID,班级人数 = count(*) from Student group by ClassId
select 班级ID = ClassId,班级人数 = count(*) from Student group by ClassId
/*
没有出现在group by子句中的列是不能放到select语句后的(聚合函数除外)
*/
/*
where用于对没有进行分组之前的数据筛选,having用于对分组之后的数据筛选
统计销售总额超过3000的商品名称和销售总价,并按销售总价降序排序
*/
select
商品名称,
销售总价 = sum(销售数量 * 销售单价)
from MyOrders
group by 商品名称
having sum(销售数量 * 销售单价) > 3000
order by 销售总价 desc
/*
统计各个客户对“可口可乐”的喜爱程度(购买数量)
*/
select
购买人,
购买数量 = sum(销售数量)
from MyOrders
where 商品名称 = '可口可乐'
group by 购买人,
order by 购买数量 desc
like:
(1)选取 name 以字母 “G” 开始的所有客户:SELECT * FROM Websites WHERE name LIKE ‘G%’;
(2)选取 name 以字母 “k” 结尾的所有客户:SELECT * FROM Websites WHERE name LIKE ‘%k’;
(3)选取 name 包含模式 “oo” 的所有客户:SELECT * FROM Websites WHERE name LIKE ‘%oo%’;
(4)选取 name 不包含模式 “oo” 的所有客户:SELECT * FROM Websites WHERE name NOT LIKE ‘%oo%’;
通配符:
通配符 描述 例子
% 替代 0 个或多个字符 选取 url 以字母 “https” 开始的所有网站SELECT * FROM Websites WHERE url LIKE ‘https%’
_ 替代一个字符 选取 name 以 “G” 开始,然后是一个任意字符,然后是 “o”,然后是一个任意字符,然后是 “le” 的所有网站SELECT * FROM Websites WHERE name LIKE ‘G_o_le’
[charlist] 字符列中的任何单一字符 (1)选取 name 以 “G”、“F” 或 “s” 开始的所有网站SELECT * FROM Websites WHERE name REGEXP ‘^ [GFs]’;(2)选取 name 以 A 到 H 字母开头的网站SELECT * FROM Websites WHERE name REGEXP ‘^ [A-H]’
[^charlist] 或 [!charlist] 不在字符列中的任何单一字符 选取 name 不以 A 到 H 字母开头的网站SELECT * FROM Websites WHERE name REGEXP ‘^ [^A-H]’
请注意:MySQL 、SQLite 只支持 % 和 _ 通配符,不支持 [^charlist] 或 [!charlist] 通配符
---------------------
作者:御剑胯马,栈山航海
来源:CSDN
原文:https://blog.csdn.net/qq_18683559/article/details/93221224
版权声明:本文为博主原创文章,转载请附上博文链接!