当前位置: Oracle DBA培训网-优技培训 >> MySQL培训 > MySQL培训教程 >

MySQL基础教程:分析和处理数据语句

MySQL基础教程:分析和处理数据语句

MySQL基础教程:分析和处理数据语句,通过MySQL你不仅可以取回原始数据,还可以对取回的数据进行分析和格式化。例如,假设我们想知道库存中有多少部LeoTolstoy的作品,可以按照如下所示输入包含COUNT(*)函数的SELECT语句:

  1. SELECT COUNT(*)  
  2. FROM books  
  3. JOIN authors USING(author_id)  
  4. WHERE author_last = 'Tolstoy';  
  5.  
  6. +------------+  
  7. COUNT(*) |  
  8. +------------+  
  9. | 12|  
  10. +------------+ 

另一示例,假设我们建立好数据库并创建一个包含客户订单信息的orders表。我们可以通过查询该表得到某本图书的销售总额。例如,想知道WilliamBoyd的作品Armadillo的销售总额,我们可在mysql客户机中输入下列SQL语句来实现:

  1. SELECT SUM(sale_amount) AS 'Armadillo Sales' 
  2. FROM orders  
  3. JOIN books USING(book_id)  
  4. JOIN authors USING(author_id)  
  5. WHERE title = 'Armadillo' 
  6. AND author_last = 'Boyd';  
  7.  
  8. +-----------------+  
  9. | Armadillo Sales |  
  10. +-----------------+  
  11. | 250.25 |  
  12. +-----------------+ 

在这里,我们把三个表关联起来用以获取我们需要的信息。MySQL将orders表中与WHERE子句相符合的每一行的sale_amount值取出并累加起来,总和显示在指定的列标题之下。

对于那些包含数据或时间信息的列,我们可以使用不同的函数为它们设置显示格式。例如,假设我们想从orders表中提取顾客购买图书的日期信息,这个日期信息是基于顾客的收据码(例如:1250)的,那么收据码就是记录的标识码或sale_id。我们可以输入以下内容得到默认的显示格式,如结果中最后一行所示:

  1. SELECT purchase_date AS 'Purchase Date' 
  2. FROM orders  
  3. WHERE sale_id = '1250';  
  4.  
  5. +---------------+  
  6. | Purchase Date |  
  7. +---------------+  
  8. | 2004-03-01 |  
  9. +---------------+ 

上面的格式(年-月-日)很容易理解。然而,如果想让月份用英语表示,而不是用数字形式显示,那么我们只能使用日期函数了:

  1. SELECT CONCAT(MONTHNAME(purchase_date), ' ',  
  2. DAYOFMONTH(purchase_date), ', ',  
  3. YEAR(purchase_date)) AS 'Purchase Date' 
  4. FROM orders  
  5. WHERE sale_id = '1250';  
  6.  
  7. +---------------+  
  8. | Purchase Date |  
  9. +---------------+  
  10. | March 1, 2004 |  
  11. +---------------+ 

为了能使日期按照美国的典型易读格式显示,可以使用CONCAT()函数以及其他一些日期函数。乍一看,这可能会有点令人困惑:因为我们在第一行的结尾处,月份和日期之间插入了一个空格;在第二行的末尾处,日期后面插入了一个逗号和空格。关于日期函数,第一个函数是从purchase_date列中取出月份,并将其格式化使其显示全称。第二行的第二个日期函数取出日期,在其后输出一个逗号。第三行的第三个日期函数取出年份。

几个函数一起执行,就得到你所看到的结果了。然而,这并不是日期最简洁的组合显示方法。我们可以使用DATE_FORMAT()函数替代上面的方法:

  1. SELECT DATE_FORMAT(purchase_date, "%M %d, %Y")  
  2. AS 'Purchase Date' 
  3. FROM orders  
  4. WHERE sale_id = '1250'

这是一个更为有效的方法,它提供的结果和前面语句的结果一样。你只需知道格式代码就完全可以使用这个函数。第12章中列出了更多的格式代码以及日期和时间函数。

技术沙龙MORE+

标签错误:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要参加技术沙龙