SELECT <字段列表>:指定要查询的字段,* 表示查询所有字段(不推荐,效率低且依赖表结构)。 示例:SELECT id, name FROM users;(查询 users 表的 id 和 name 字段)。
FROM <表名>:指定数据来源的表(可多表联合查询,用 JOIN 连接)。
WHERE <查询条件>:过滤行数据,支持比较运算符(=, >, <, >=, <=, !=)、逻辑运算符(AND, OR, NOT)、模糊查询(LIKE)等。 示例:SELECT * FROM orders WHERE amount > 1000 AND status = 'paid';(查询金额 > 1000 且已支付的订单)。
GROUP BY <分组字段>:按指定字段分组,通常与聚合函数(COUNT, SUM, AVG, MAX, MIN)配合使用。 示例:SELECT user_id, COUNT(*) AS order_count FROM orders GROUP BY user_id;(按用户 ID 分组,统计每个用户的订单数)。
HAVING <分组过滤条件>:对分组后的结果进行过滤(WHERE 用于分组前过滤,HAVING 用于分组后过滤)。 示例:SELECT user_id, COUNT(*) AS order_count FROM orders GROUP BY user_id HAVING order_count >= 5;(筛选出订单数≥5 的用户)。
ORDER BY <排序字段>:按指定字段排序,ASC 升序(默认),DESC 降序。 示例:SELECT * FROM products ORDER BY price DESC;(按价格降序排列商品)。
常用查询技巧
去重查询:用 DISTINCT 去除重复行。 示例:SELECT DISTINCT category FROM products;(查询所有不重复的商品分类)。
publicintmaxCommonDisvisor(int m, int n) { int temp; // 确保 m ≥ n if (m < n) { temp = m; m = n; n = temp; } while (true) { if (m % n == 0) { // 余数为0,n是最大公约数 return n; } // 迭代:m = n,n = 余数 temp = m % n; m = n; n = temp; } }
扩展
更相减损术:通过反复用大数减小数(而非取模)求最大公约数,适合无法高效取模的场景(如大数运算)。
最小公倍数:两数乘积除以最大公约数,即 lcm(m, n) = m * n / gcd(m, n)。