MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng)怕吴,由瑞典MySQL AB 公司開發(fā)遍膜,目前屬于 Oracle 旗下產(chǎn)品尊搬。MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System瘫析,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng)默责,關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中贬循,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性傻丝。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言甘有。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版葡缰,由于其體積小亏掀、速度快、總體擁有成本低泛释,尤其是開放源碼這一特點滤愕,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越怜校,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境间影。
匯總數(shù)據(jù)
一、聚集函數(shù)
1.AVG()函數(shù)
AVG()通過對表中行數(shù)計數(shù)并計算特定列值之和茄茁,求得該列的平均值魂贬。AVG()可以返回所有列的平均值巩割,也可以用來返回特定列或行的平均值。
SELECT AVG(prod_price) AS avg_price FROM products;
此語句的輸出如下圖所示:
AVG()只能用來確定特定數(shù)值列的平均值付燥,而且列名必須作為函數(shù)參數(shù)給出宣谈。為了獲得多個列的平均值,必須使用多個AVG()函數(shù)键科。
2.COUNT()函數(shù)
COUNT()函數(shù)進(jìn)行計數(shù)闻丑。可利用COUNT()函數(shù)確定表中行的數(shù)目或者符合特定條件的行的數(shù)目勋颖。
COUNT()函數(shù)有兩種使用方式:
(1)使用COUNT(*)對表中行的數(shù)目進(jìn)行計數(shù)嗦嗡,不管表列中包含的是空值(NULL)還是非空值。
(2)使用COUNT(column)對特定列中具有值的行進(jìn)行計數(shù)饭玲,忽略NULL值侥祭。
SELECT COUNT(*) AS num_cust FROM customers;
此語句的輸出如下圖所示:
3.MAX()函數(shù)
MAX()返回指定列中的最大值。MAX()要求指定列名茄厘。
SELECT MAX(prod_price) AS max_price FROM products;
此語句的輸出如下圖所示:
4.MIN()函數(shù)
MIN()返回指定列中的最小值卑硫。MIN()要求指定列名。
SELECT MIN(prod_price) AS min_price FROM products;
此語句的輸出如下圖所示:
5.SUM()函數(shù)
SUM()函數(shù)用來指定列值的總和蚕断。
SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num=20005;
此語句的輸出如下圖所示:
二欢伏、聚集不同值
只包含不同的值,指定DISTINCT參數(shù)亿乳。
SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id=1003;
此語句的輸出如下圖所示:
三硝拧、組合聚集函數(shù)
SELECT COUNT(*) AS num_items,MIN(prod_price) AS price_min, MAX(prod_price) AS max_price,AVG(prod_price) AS price_avg FROM products;
此語句的輸出如下圖所示:
分組數(shù)據(jù)
一、創(chuàng)建分組
分組是在SELECT語句的GROUP BY子句中建立的葛假。
SELECT vend_id,COUNT(*)AS num_prods FROM products GROUP BY vend_id;
此語句的輸出如下圖所示:
二障陶、過濾分組
HAVING非常類似于WHERE。唯一的差別就是WHERE過濾行聊训,而HAVING過濾分組抱究。
SELECT cust_id,COUNT(*)AS orders FROM orders GROUP BY cust_id HAVING COUNT(*)>=2;
此語句的輸出如下圖所示:
SELECT vend_id,COUNT(*) AS num_prods FROM products WHERE prod_price>=10 GROUP BY vend_id HAVING COUNT(*)>=2;
此語句的輸出如下圖所示: