SQL学习(三)之子句和函数
函數
COUNT()/計數、MIN()/最小值、MAX()/最大值、AVG()/平均值、SUM()/和
子句
子句是語句的一部分包括WHERE、GROUP、ORDER、LIMIT
-
WHERE:條件
-
GROUP:合并(聚類,其實就是合并相同的)
-
ORDER:排序
-
LIMIT:限制(限制輸出)
WHERE
-
WHERE name='blue'
-
WHERE age>18
-
WHERE age<=18
-
WHERE age>=18 AND score<60
-
WHERE cach>100 OR score>10000
刪-DELETE
DELETE FROM 表 WHERE 條件; 刪除表中指定的一條數據
DELETE FROM?`user_table` WHERE ID='${res.query.id}'; 根據指定的id刪除指定一條數據的所有字段
注意:沒有辦法只刪除一個字段,只能是刪除一行
改-UPDATE
UPDATE 表 SET 字段=值,字段=值,...WHERE 條件;
UPDATE `article_data` SET `n_like=n_like+1` WHERE ID=xxx; 根據指定的id更新指定數據的n_like字段
查-SELECT
SELECT * FROM 表 WHERE 條件;
SELECT * FROM `user_table` WHERE ID='${res.query.id}'; 根據指定的id查詢指定數據的所有字段
注意:不加WHERE就是操作整張表,除了INSERT都可以用WHERE
GROUP
-
GROUP BY class
- GROUP BY name
查-SELECT
SELECT * FROM 表 GROUP BY 字段;
SELECT * FROM student_table GROUP BY class; 表示以class為依據進行分組,只要是class相同的就一定會合并起來,相同的class只留一條數據,做了一個去重
SELECT class,COUNT(class) FROM student_table GROUP BY class; 只查詢class字段,以class為依據進行分組,并對相同的class進行計數
SELECT class,AVG(score) FROM student_table GROUP BY class; 查詢得到每個班級平均值
SELECT class,MAX(score),MIN(score) FROM student_table GROUP BY class; 查詢得到每個班級最高最低分
SELECT name,SUM(price) FROM sales_table GROUP BY name; ?查詢得到每個人的消費總額
注意:GROUP單獨用沒有什么意義我們應該配合函數來用(COUNT/計數、MIN/最小值、MAX/最大值、AVG/平均值、SUM/和)
ORDER
-
ORDER BY age ASC
-
ORDER BY age?DESC
- ORDER BY SUM(price)
ASC-升序(從小到大)/DESC-降序(從大到小)
查-SELECT
SELECT * FROM 表?ORDER BY 字段 ASC; ?單一條件排序
SELECT * FROM 表?ORDER BY?字段 ASC ,字段 DESC;?多條件排序
SELECT * FROM student_table?ORDER BY price DESC; 查詢表中數據并以price為準降序排列
SELECT * FROM 表?ORDER BY price ASC, sales DESC; 查詢表中數據并以price為準升序排列,price相同以sales為準降序排列
SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) DESC; ?查詢得到每個人的消費總額按照降序排列
SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) ASC; ?查詢得到每個人的消費總額按照升序排列
LIMIT
-
LIMIT 10; 前10條
-
LIMIT 5,8; 從5開始,要8個
查-SELECT
SELECT * ?FROM 表 LIMIT 數字;
SELECT * ?FROM student_table?LIMIT 2; 查詢表中的前兩條數據
分頁
方法一:所有數據給前端,前端來控制每頁數據(數據量大不靠譜)
方法二:后臺只給一丁點數據,后端來控制每頁數據(實際上就是在數據庫里就限制)
使用方法二如果想要做分頁,每頁20條數據:
-
第1頁 limit 0,20 0~19
-
第2頁 limit 20,20 20~39
-
第3頁 limit?40,20
-
第n頁 limit?(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;
轉載于:https://www.cnblogs.com/kunmomo/p/11448063.html
總結
以上是生活随笔為你收集整理的SQL学习(三)之子句和函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL学习(二)之四大查询语句以及标准写
- 下一篇: MYSQL多表查询与事务