四大操作语句-增删改查
1.增 INSERT
INSERT INTO 表 (字段列表) VALUES(值列表)
2.删 DELETE
DELETE FROM 表 WHERE 条件
3.改 UPDATE
UPDATE 表 SET 字段=值,字段=值,... WHERE 条件
4.查 SELECT
SELECT * FROM 表 WHERE 条件
WHERE子句
用我自己的话来描述where子句就是限制一个范围来执行
例:
*名字规定为Btrya的
WHERE name='Btrya'
*大于十八岁的
WHERE age>18
*小于等于十八岁的
WHERE age<=18
*成年了还考试不及格的
WHERE age>=18 AND score<60
*余额超过100块的或者积分超过一万的
WHERE cach>100 OR score>10000
ORDER子句
用我自己的话来说这就是用来根据需求排序用的
升序和降序(ORDER BY age ASC/DESC)
ASC-升序(从小到大)
DESC-降序(从大到小)
例:
*根据价格升序
ORDER BY price ASC
*价格(price)升序排序,如果价格相同,再按销量(sales)降序排序
ORDER BY price ASC, sales DESC
(注意中间逗号分隔,表示按前面语句排序了再按后面语句排)
GROUP子句
这个叫做聚类,不是很好记,可以理解成 合并同类
假设现在有下面这个表,表名是 student_table
我们现在要做的就是统计每个班有多少人
SELECT * FROM student_table;
ID | class | name |
1 | 1 | 小明 |
2 | 2 | 小红 |
3 | 1 | 小刚 |
4 | 2 | 小华 |
5 | 3 | 小强 |
6 | 3 | 小四 |
7 | 1 | 小刘 |
8 | 1 | 小花 |
SELECT * FROM student_table GROUP BY class;(没多大意义)
ID | class | name |
1 | 1 | 小明 |
2 | 2 | 小红 |
3 | 3 | 小强 |
这样的查询意义不大,因为只是把重复班级做了一个去重的处理,并不是我们想要的结果
SELECT class FROM student_table GROUP BY class;(意义更不大)
class |
1 |
2 |
3 |
我们在SELECT后增加了class,出来的结果只是有几个班级,不是我们要的结果。
SELECT class,COUNT(class) FROM student_table GROUP BY class;
class | COUNT(class) |
1 | 4 |
2 | 2 |
3 | 2 |
这就是我们要的结果了,利用COUNT对class进行计数,即统计每个class出现了几次,就是我们要的结果。
像COUNT这样自带的函数总结如下:
1.AVG( ) 统计平均值
2.COUNT( ) 计数
3.MAX( ) 取最大值
4.MIN( ) 取最小值
5.SUM( ) 求和
我们来用一用这些函数
还是之前的表,增加一列score分数列
SELECT * FROM student_table;
ID | class | name | score |
1 | 1 | 小明 | 34 |
2 | 2 | 小红 | 98 |
3 | 1 | 小刚 | 26 |
4 | 2 | 小华 | 99 |
5 | 3 | 小强 | 18 |
6 | 3 | 小四 | 95 |
7 | 1 | 小刘 | 57 |
8 | 1 | 小花 | 100 |
*统计一下各个班级的平均分:
SELECT class,AVG(score) FROM student_table GROUP BY class;
class | AVG(score) |
1 | 54.25 |
2 | 98.5 |
3 | 56.5 |
*统计每个班的最高分和最低分
SELECT class,MAX(score),MIN(score) FROM student_table GROUP BY class;
class | MAX(score) | MIN(score) |
1 | 100 | 26 |
2 | 99 | 98 |
3 | 95 | 18 |
再举个例子:
这有一张关于消费信息的表 sales_table
SELECT * FROM sales_table;
ID | name | price |
1 | 王五 | 3 |
2 | 王五 | 5 |
3 | 张三 | 28000 |
4 | 李四 | 81000 |
5 | 王五 | 4 |
6 | 张三 | 46000 |
7 | 李四 | 38000 |
8 | 赵六 | 18 |
*查看每个人 消费了多少
SELECT name,SUM(price) FROM sales_table GROUP BY name;
name | SUM(price) |
王五 | 12 |
张三 | 74000 |
李四 | 119000 |
赵六 | 18 |
*降序弄一个土豪排行榜
SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) DESC;
name | SUM(price) |
李四 | 119000 |
张三 | 74000 |
赵六 | 18 |
王五 | 12 |
函数总结over
LIMIT子句
这个子句主要用来限制输出,可以用来实现分页
语法:
LIMIT 10; 前10条
LIMIT 5,8;
例如分页,每页20条数据:
第1页 0,20 0~19
第2页 20,20 20~39
第3页 40,20
第n页 (n-1)*20,20
各个子句的使用顺序(这是重点好吗)
子句之间是有顺序的:
WHERE GROUP ORDER LIMIT
筛选 合并 排序 限制
完整语句如下使用:(换行让你看的更清楚)
SELECT class,COUNT(class) FROM student_table
WHERE score>60
GROUP BY class
ORDER BY COUNT(class) DESC
LIMIT 2;
如果不按这个顺序会报错!!
为啥报错把顺序颠倒一下你就知道多不合理了。
所以请严格按照这个顺序使用子句!!!