MySql - DQL [SELECT] 原创
------------------------------------
------------------------------------
-- DQL 数据库查询语句
------------------------------------
------------------------------------
-- SELECT
-- SELECT执行顺序 FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY -> LIMIT
-- 查询users表中所有数据,返回所有列
SELECT * FROM users;
-- 查询users表中所有数据,只返回指定字段列
SELECT `id`,`username`,`status`,`create_time` FROM users;
-- 查询指定条件的数据 WHERE Field=VALUE...
SELECT * FROM users WHERE id = 1; -- 查询主键ID=1的数据记录
SELECT `id`,`username` FROM users WHERE id = 1; -- 查询主键ID=1的数据记录
-- 对数据进行排序查询 ORDER BY
SELECT * FROM users ORDER BY id DESC; -- 按ID值进行大小的倒叙排序
SELECT * FROM users ORDER BY id ASC; -- 按ID值进行大小的升序排序-默认数据序列,自增字段升序查询的时候可以省略
-- 限制返回条数查询 LIMIT OFFSET, LENGTH
SELECT * FROM users LIMIT 3; -- 只查询前3条数据
SELECT * FROM users ORDER BY id DESC LIMIT 3; -- 只查询后3条数据[以主键ID倒序排序后取前三条]
-- 分组查询 GROUP BY
-- 直接使用GROUP BY会报错,关于sql_mode的错误 参考https://blog.csdn.net/ITxiaofeixiang/article/details/115635602
-- 使用group by 语句获取到的非group by子句中的字段,是没有意义的。按照规范来说,我们应该避免这种情况出现。
-- 使用分组的时候select 只需要查询分组字段就好,也不能ORDER BY其他字段, 可以WHERE
-- 不能查询其他字段但是可以使用聚合函数 count,sum等,也可以对聚合函数进行排序
SELECT `status` FROM users WHERE `id` > 2 GROUP BY `status`;
SELECT `status`,count(`id`) as count FROM users GROUP BY `status`;
SELECT `status`,count(`id`) as count FROM users GROUP BY `status` ORDER BY count DESC;
-- 排序ORDER BY
-- 对查询出的数据进行排序
SELECT * FROM users ORDER BY id DESC;
-- 限制返回数据行数 LIMIT offset,length
SELECT * FROM users ORDER BY id DESC LIMIT 10; -- 返回查出数据的前十条
SELECT * FROM users ORDER BY id DESC LIMIT 2, 10;