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;


posted @ 2023-02-24 14:44  mailfor  阅读(0)  评论(0编辑  收藏  举报  来源