-- 排序 SELECT*FROM users ORDERBY age DESC; -- DESC降序,ASC升序
-- 限制返回数量 SELECT*FROM users LIMIT 5;
-- 模糊查询 SELECT*FROM users WHERE username LIKE'张%'; -- 以张开头 SELECT*FROM users WHERE email LIKE'%@example.com';
-- 多条件 SELECT*FROM users WHERE age >25AND username !='张三'; SELECT*FROM users WHERE age IN (25, 30, 35);
更新数据(Update)
1 2 3 4 5 6 7
UPDATE users SET age =26WHERE username ='张三';
-- 更新多个字段 UPDATE users SET age =27, email ='newemail@example.com'WHERE id =1;
-- 带条件 UPDATE users SET age = age +1WHERE username LIKE'张%';
删除数据(Delete)
1 2 3 4 5 6 7
DELETEFROM users WHERE id =1;
-- 带条件 DELETEFROM users WHERE age <20;
-- 删除所有数据(保留表结构) TRUNCATETABLE users;
高级查询
聚合函数
1 2 3 4 5
SELECTCOUNT(*) FROM users; -- 总记录数 SELECTAVG(age) FROM users; -- 平均年龄 SELECTMAX(age) FROM users; -- 最大年龄 SELECTMIN(age) FROM users; -- 最小年龄 SELECTSUM(age) FROM users; -- 年龄总和
分组(GROUP BY)
1 2 3 4 5 6 7 8 9 10
-- 按年龄段分组统计 SELECT CASE WHEN age <20THEN'20岁以下' WHEN age <30THEN'20-29岁' ELSE'30岁以上' ENDAS age_group, COUNT(*) AS count FROM users GROUPBY age_group;
连接表(JOIN)
假设有订单表:
1 2 3 4 5 6
CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, amount DECIMAL(10,2), FOREIGN KEY (user_id) REFERENCES users(id) );
INNER JOIN(内连接):
1 2 3
SELECT users.username, orders.amount FROM users INNERJOIN orders ON users.id = orders.user_id;
LEFT JOIN(左连接):
1 2 3
SELECT users.username, orders.amount FROM users LEFTJOIN orders ON users.id = orders.user_id;