[SQL]SQL內建函數

PHP有內建函數,同樣的mySQL也有
內建函數主要是幫助我們做一些常用的基礎運算
常用的有AVG()、COUNT()、MAX()、MIN()、SUM()

AVG():計算平均


SELECT AVG(booksPrice) AS average FROM books;

COUNT():計算數量


SELECT COUNT(*) AS counting FROM customers;

MAX():最大值


SELECT MAX(booksPrice) FROM books;

MIN():最小值


SELECT MIN(booksPages) FROM books;

SUM():總和


SELECT SUM(booksPrice) FROM books;

接下來要說的是,我們有時候會需要做一些統計
例如計算會員的職業分布狀況,以利之後的廣告配送
這時候就會用到群組的概念GROUP BY 
SELECT customersJob, COUNT(customersJob) AS counting
FROM customers GROUP BY customersJob;

意思是,從customers TABLE中選取customersJob
並且依據customersJob的分類群組起來後
計算customersJob的數量並設為counting印出

實際操作結果就像下面的圖片

[gallery ids="1680,1679" type="columns"]


藉由 GROUP BY 統計目標項目的數量
接下來要說的是排序

排序ORDER BY


SELECT * FROM books ORDER BY booksPrice;
價錢由低到高(ASC)

預設是使用升冪排列(ASC),若要使用降冪排列則是在最後加上DESC
SELECT * FROM books ORDER BY booksPrice DESC;
價錢由高到低(DESC)

若是結合剛剛說的方法想計算每一本書的印製成本排序
SELECT booksPages, booksPrice, booksPages/booksPrice AS cost
FROM books ORDER BY cost ASC;

跨表格查詢


查詢結合一個表格以上的欄位時,需以 「表格名.欄位名」表示
這個真的超重要,面試的時候常遇到這種問題!
有時候我們會需要在不同TABLE中查詢資料,例如
從訂單TABLE中取得訂單的客戶,並從客戶TABLE中取得個人資料
SELECT orders.ordersNo, books.booksName, customers.customersName
FROM orders, books, customers
WHERE orders.ordersBook = books.booksNo
AND orders.ordersCustomer = customers.customersNo
ORDER BY orders.ordersNo ASC;

以上就從orders, books, customers三個TABLE分別找出符合
orders.ordersBook = books.booksNo 和
orders.ordersCustomer = customers.customersNo 條件的
ordersNo, booksName, customersName 三個欄位
為了識別TABLE所以用「表格名.欄位名」表示
使用升冪排列

MySQL常用的內建函數就介紹到這邊,以上基本的操作都介紹完了
接著就是把PHP和MySQL做結合啦!

留言