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章中列出了更多的格式代码以及日期和时间函数。