MySQL必知必会10~12章
- 拼接字段(Concat)
- 使用别名(AS)
- 使用数据处理函数
- 汇总数据
- 小结
字段:基本上与列的意思相同,经常护花能使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上。
拼接字段(Concat)
拼接:将值联结到一起构成单个值。
多数DBMS使用+或||来实现拼接,MySQL则使用Concat()函数来实现。当把SQL语句转成MySQL语句是一定要将这个区别铭记在心。
下面是一个Concat() 函数演示:
SELECT Concat(vend_name,'(',vend_country,')') #这里连接了name名字、左括号、country国家、右括号。
FROM vendors
ORDER BY vend_name;
输出:TOM(USA)
MIKE(UK)
Concat()拼接串,即吧多个串连接起来形成一哥较长的串,Concat()需要一个或多个指定的串,各个串之间用逗号隔开。
RTrim()函数:删除数据右侧多余的空格,以整理数据。看一个演示:
SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')')
FROM vendors #这样就删除了名字和国家右边的空格,对数据进行了整理
ORDER BY vend_name;
有RTrim()当然也有LTrim(),表示删除串左边的空格,Trim()则是删除串左右两边的空格。
使用别名(AS)
SQL支持列别名,别名是一个字段或之的替换名,使用AS关键字。请看下面一个示例:
SELECT ConcatConcat(RTrim(vend_name),'(',RTrim(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name;
输出:vend_title -- 输出变成了AS关键字后的别名
MIKE(UK)
TOM(USA)
别名有时也叫导出列,不管叫啥,所代表的东西都是一样的。
第十一章
使用数据处理函数
1.文本处理函数
Upper()函数:将文本转化成大写。下面是一个示例
SELECT vend_name,Upper(vend_name) AS vend_name_upcase
FROM vendors
ORDER BY vend_name;
输出:vend_name vend_name_upcase
tom TOM
mike MIKE
有此示例还有其他的文本处理函数就不一一列举了。
2.日期函数Date():获取相应列的日期
SELECT cust_id,order_num
FROM orders
WHERE Date(order_date)BETWEEN '2021-01-17' AND '2005-01-30';
-- 这是检索出2021年1月17日到1月30日的所有订单。
还有一种方法,不需要基础每个月有多少天或操心闰年二月的问题的方法
Year()函数是一个从日期(或日期时间)中返回年份的函数。类似,Month()从日期中返回月份。
SELECT cust_id,order_num
FROM orders
WHERE Year(order_date) = 2021 AND Month(order_date) = 1;
-- 检索出来的order_date是2021年1月的所有行。
第十二章
汇总数据
聚集函数:运行在行组上,计算和返回单个值的函数。
1.AVG()函数通过对表中行数计数并计算特定列值之和,求得该列的平均值。
SELECT AVG(prod_price) AS avg_price
FROM products
WHERE vend_id = 2021;
-- 返回2021号供应商所提供产品的平均价格
注意:AVG()函数只用于单个列,如果要返回多个列的平均值,必须使用多个AVG()函数。同时AVG()忽略列值为null的行。
2.COUNT()函数进行计数,可利用COUNT()函数确定表中行的数目或符合特定条件的行的数目。
COUNT()函数有两种使用方式:
●使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值
●使用COUNT(colum)对特定列中的具有值的行进行计数,忽略NULL值。
SELECT COUNT(*) AS num_cust -- 不忽略null值
FORM customers;
-- 利用COUNT(*)对所有行计数,返回customers表中的客户的总数
-- 下列是只对有电子邮件地址的客户计数
SELECT COUNT(cust_email) AS num_cust -- 忽略null值
FROM customers;
3.MAX()、MIN()函数返回指定类中的最大值、最小值,要求指定列名:
SELECT MAX(prod_price) AS max_pricer -- 忽略null值行
FROM products;
对非数值数据使用MAX()、MIN(): MySQL允许将它用来返回任意列中的最大值(最小值),包括返回文本列中的最大值(最小值),在用于文本数据是,如果数据按相应的列排序,则MAX()返回最后一行。
4.SUM()函数用来返回指定列值的和(总计)。
SELECT SUM(item_price) AS total_price
FROM orderitems
WHERE order_num = 1002;
-- 返回订单号为1002的所有价格总和
5.聚集不同值:DISTINCT()函数
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1002;
-- 多个相同价格只取一个。
注意:如果指定列名,DISTINCT()只能用于COUNT(),不能用于COUNT(*)。
小结
本次学习了字段拼接,使用别名,数据处理函数和聚集函数的运用。