MySQL培訓教程:分析和處理數據
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢MySQL培訓教程:分析和處理數據,通過MySQL你不僅可以取回原始數據,還可以對取回的數據進行分析和格式化。例如,假設我們想知道庫存中有多少部LeoTolstoy的作品,可以按照如下所示輸入包含COUNT(*)函數的SELECT語句:
- SELECT COUNT(*)
- FROM books
- JOIN authors USING(author_id)
- WHERE author_last = 'Tolstoy';
- +------------+
- | COUNT(*) |
- +------------+
- | 12|
- +------------+
另一示例,假設我們建立好數據庫并創建一個包含客戶訂單信息的orders表。我們可以通過查詢該表得到某本圖書的銷售總額。例如,想知道WilliamBoyd的作品Armadillo的銷售總額,我們可在mysql客戶機中輸入下列SQL語句來實現:
- SELECT SUM(sale_amount) AS 'Armadillo Sales'
- FROM orders
- JOIN books USING(book_id)
- JOIN authors USING(author_id)
- WHERE title = 'Armadillo'
- AND author_last = 'Boyd';
- +-----------------+
- | Armadillo Sales |
- +-----------------+
- | 250.25 |
- +-----------------+
在這里,我們把三個表關聯起來用以獲取我們需要的信息。MySQL將orders表中與WHERE子句相符合的每一行的sale_amount值取出并累加起來,總和顯示在指定的列標題之下。
對于那些包含數據或時間信息的列,我們可以使用不同的函數為它們設置顯示格式。例如,假設我們想從orders表中提取顧客購買圖書的日期信息,這個日期信息是基于顧客的收據碼(例如:1250)的,那么收據碼就是記錄的標識碼或sale_id。我們可以輸入以下內容得到默認的顯示格式,如結果中最后一行所示:
- SELECT purchase_date AS 'Purchase Date'
- FROM orders
- WHERE sale_id = '1250';
- +---------------+
- | Purchase Date |
- +---------------+
- | 2004-03-01 |
- +---------------+
上面的格式(年-月-日)很容易理解。然而,如果想讓月份用英語表示,而不是用數字形式顯示,那么我們只能使用日期函數了:
- SELECT CONCAT(MONTHNAME(purchase_date), ' ',
- DAYOFMONTH(purchase_date), ', ',
- YEAR(purchase_date)) AS 'Purchase Date'
- FROM orders
- WHERE sale_id = '1250';
- +---------------+
- | Purchase Date |
- +---------------+
- | March 1, 2004 |
- +---------------+
為了能使日期按照美國的典型易讀格式顯示,可以使用CONCAT()函數以及其他一些日期函數。乍一看,這可能會有點令人困惑:因為我們在第一行的結尾處,月份和日期之間插入了一個空格;在第二行的末尾處,日期后面插入了一個逗號和空格。關于日期函數,第一個函數是從purchase_date列中取出月份,并將其格式化使其顯示全稱。第二行的第二個日期函數取出日期,在其后輸出一個逗號。第三行的第三個日期函數取出年份。
幾個函數一起執行,就得到你所看到的結果了。然而,這并不是日期最簡潔的組合顯示方法。我們可以使用DATE_FORMAT()函數替代上面的方法:
- SELECT DATE_FORMAT(purchase_date, "%M %d, %Y")
- AS 'Purchase Date'
- FROM orders
- WHERE sale_id = '1250';
這是一個更為有效的方法,它提供的結果和前面語句的結果一樣。你只需知道格式代碼就完全可以使用這個函數。第12章中列出了更多的格式代碼以及日期和時間函數。