-- 查询语法
select 字段列表 from 表名列表
where 条件列表 group by 分组字段 having 分组之后的条件
order by 排序 limit 分页限定
-- 去除重复查询
SELECT DISTINCT 列名1,列名2,... FROM 表名;
-- 计算列的值(四则运算)
SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名;
/*
计算列的值
标准语法:
SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名;
如果某一列为null,可以进行替换ifnull(想替换的列,想替换的值)
例如:
SELECT NAME,IFNULL(stock,0)+10 FROM product;
*/
-- 起别名
SELECT 列名1,列名2,... AS 别名 FROM 表名;
7、条件查询
条件分类
符号
功能
>
大于
<
小于
>=
大于等于
<=
小于等于
=
等于
<> 或 !=
不等于
BETWEEN … AND …
在某个范围之内(都包含)
IN(…)
多选一
LIKE 占位符
模糊查询 _单个任意字符 %多个任意字符
IS NULL
是NULL
IS NOT NULL
不是NULL
AND 或 &&
并且
OR 或 ||
或者
NOT 或 !
非,不是
-- 标准语法
SELECT 列名 FROM 表名 WHERE 条件;
-- 查询库存大于20的商品信息
SELECT * FROM product WHERE stock > 20;
-- 查询品牌为华为的商品信息
SELECT * FROM product WHERE brand='华为';
-- 查询金额在4000 ~ 6000之间的商品信息
SELECT * FROM product WHERE price >= 4000 AND price <= 6000;
SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;
-- 查询库存为14、30、23的商品信息
SELECT * FROM product WHERE stock=14 OR stock=30 OR stock=23;
SELECT * FROM product WHERE stock IN(14,30,23);
-- 查询库存为null的商品信息
SELECT * FROM product WHERE stock IS NULL;
-- 查询库存不为null的商品信息
SELECT * FROM product WHERE stock IS NOT NULL;
-- 查询名称以小米为开头的商品信息
SELECT * FROM product WHERE NAME LIKE '小米%';
-- 查询名称中包含手机的商品信息
SELECT * FROM product WHERE NAME LIKE '%手机%';
8、聚合函数
将一列数据作为一个整体,进行纵向的计算
聚合函数分类
函数名
功能
count(列名)
统计数量(一般选用不为null的列)
max(列名)
最大值
min(列名)
最小值
sum(列名)
求和
avg(列名)
平均值
-- 标准语法
SELECT 函数名(列名) FROM 表名 [WHERE 条件];
-- 计算product表中总记录条数
SELECT COUNT(*) FROM product;
-- 获取最高价格的商品名称
SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);
-- 获取最低库存的商品名称
SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);
-- 获取总库存数量
SELECT SUM(stock) FROM product;
-- 获取品牌为小米的平均商品价格
SELECT AVG(price) FROM product WHERE brand='小米';
9、排序查询
排序分类
注意:多个排序条件,当前边的条件值一样时,才会判断第二条件
关键词
功能
ORDER BY 列名1 排序方式1,列名2 排序方式2
对指定列排序,ASC升序(默认的) DESC降序
-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2;
10、分组查询、分页查询
-- 标准语法
SELECT 列名 FROM 表名
[WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式];
-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,
-- 只显示总金额大于7000元的、并按照总金额的降序排列
SELECT brand,SUM(price) AS getSum FROM product
WHERE price > 4000 GROUP BY brand HAVING getSum > 7000 ORDER BY getSum DESC;
-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤]
[ORDER BY 排序列名 排序方式] LIMIT 开始索引,查询条数;
-- 每页显示2条数据
SELECT * FROM product LIMIT 0,2; -- 第一页 开始索引=(1-1) * 2
SELECT * FROM product LIMIT 2,2; -- 第二页 开始索引=(2-1) * 2
SELECT * FROM product LIMIT 4,2; -- 第三页 开始索引=(3-1) * 2
SELECT * FROM product LIMIT 6,2; -- 第四页 开始索引=(4-1) * 2