* 表示查询所有
SELECT * FROM 表名;
*表示通配符,也就是说所有的数据。
查询特定的字段
SELECT 字段名1,字段名2 FROM 表名;
如果我们需要查询特定的字段,就可以在SELECT后面接上对应的字段名称,用逗号隔开即可。
设置别名
用AS关键字设置:
SELECT username AS name FROM cms_user;
查询范围
如果想查询到特定范围之内的数据,我们可以用IN关键字来指定特定范围内的数据值,例如:
SELECT id,username FROM cms_user WHERE id IN (1,3,5);
这里指的是查询在cms_user表中的id和username,并且id的范围是1,3,5。这种特殊字段的对应数据。
模糊查询
如果我们在查询姓名中不知道用户的特定的名字,只知道其中特定的几个名字的话我们可以用LIKE关键字。
SELECT username FROM cms_user WHERE username LIKE "%张%";
如果只知道有几位字符的话,我们可以用_
代替,例如:
-- 查询4位字符的数据
SELECT username FROM cms_user WHERE username LIKE "____";
分组查询
如果想要将查询的数据分成每个group来展示,就必须用到group by 来分组显示。
SELECT id,username,proId FROM cms_user GROUP BY proId;
注意,如果用GROUP BY查询出来的只会显示GROUP中的第一个元素。
如果想显示group中的所有成员信息,我们可以用GROUP_CONCAT来包裹字段名称。用于显示所有信息。
SELECT id,GROUP_CONCAT(username),proId FROM cms_user GROUP BY proId;
对比图:
不用GROUP_CONCAT查询:

用GROUP_CONCAT查询:

我们可以明显的看到在username这行中,显示的信息变多了,这就是GROUP_CONCAT的作用。
查询聚合函数
- COUNT():显示数量
- MAX(): 显示最大值
- MIN(): 显示最小值
- AVG(): 显示平均数
- SUM(): 显示总和
SELECT id,sex, GROUP_CONCAT(username),
COUNT(*) AS totalusers,
MAX(age) AS max_age,
MIN(age) AS min_age,
AVG(age) AS avg_age,
SUM(age) AS sum_age
FROM cms_user
GROUP BY(sex)
WITH ROLLUP;
查询结果如下:

对查询结果进行二次筛选
用HAVING函数
--查询组中人数大于2的
SELECT
id,
GROUP_CONCAT(username),
proId,COUNT(*)
FROM cms_user
GROUP BY proId
HAVING COUNT(*)>2;
排序
ORDER BY
最简单的排序,升序/降序排列
--id升序
SELECT * FROM cms_user ORDER BY id ASC;
--id降序
SELECT * FROM cms_user ORDER BY id DESC;
限制查询结果显示条数
LIMIT
--显示前3条记录
SELECT * FROM cms_user LIMIT 3;
如果要用偏移量,也就是分页,那么就得输入偏移量的值
--查询从第0条之后的10条数据
SELECT * FROM cms_user LIMIT 0,10;
--查询从第10条之后的10条数据
SELECT * FROM cms_user LIMIT 10,10;
网友评论