《SQL必知必会》系列 02

生活不可能像你想象得那么好,但也不会像你想象得那么糟。我觉得人的脆弱和坚强都超乎自己的想象。有时,我可能脆弱得一句话就泪流满面,有时,也发现自己咬着牙走了很长的路。——莫泊桑

前段时间看到这句话,有种莫名的感动。你仔细看这每一句话,都充满着哲学的味道。生活本身就是没那么好,也没那么糟,生活好也罢,糟也罢,都是和我们的想象有关,或者说和我们对待它的认知角度有关。面对生活这个对象是这样,面对自己也是这样,人可以很脆弱,也可以非常坚强,这和我们对待自己的看法有关,跳出自我本身去看待自己的话,发现真的就是这么回事。

今年最大的感受就是:生活就是重复。无论是处于好的状态,还是处于差的状态,生活就是不断的重复,时间就是不停的往前走,它和你高兴不高兴,舒服不舒服,一点关系都没有。所以有时需要和生活产生一点距离感,这样会更加洒脱和从容一些,有时又需要离生活近一点,这样会更有一种融入感和存在感。我既知道当下对于未来无比的重要,也知道眼前其实对未来不会产生实质性的影响。水滴石穿,非一日之功嘛。但是少滴那么一两次也没有什么关系。

如果有智慧去区分何时该进取,何时该放松节奏,真是一件了不起的事情。因为我们既不需要苦哈哈的去努力,也不需要在放松娱乐的时候有愧疚感。但是太多人,包括以前的自己,没办法去区分这两者的区别,该努力的时候想着玩,好像是被生活所迫,该放松休息的时候想着努力,好像自己做错了什么大事。这样拧巴的思考和生活,其实是最没劲的。好在,这一年自己已经可以很好的把控自己的状态和节奏了。未来一年,继续加油。

今天分享《SQL必知必会》第六至十章。

第六章 用通配符进行过滤

这一章主要讲的操作符有:like, 用于模糊查询;%,表示任何字符出现的任意次数; (__) 下划线:只匹配单个字符; ([ ])方括号 通配符, 用来指定一个字符集,必须匹配指定位置的一个字符。

上代码:

SELECT prod_id,prod_name FROM products WHERE prod_name LIKE ‘Fish%’;
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE ‘__Fish’;
SELECT cust_contact FROM Customers WHERE NOT cust_contact LIKE ‘[JM]’ ORDER BY cust_contact;

第七章 创建计算字段

在实际开发过程中,有时经常需要将两个列的结果拼接到一起,或者以其它方式组合到一起,这时用来创建计算的字段就派上了用场,接下来一一说明。

拼接字段:+ 或者 || , 这个两者有什么区别呢,其实就是不同数据库支持类型不同。像Access 和SQL Server 使用 +号, DB2 , Oracle , PostgreSQL, SQLite 使用 || 。

TRIM函数:用来去除字符串左右两边的空格。LTRIM函数去除字符串左边的空格,RTRIM去除字符串右边的空格。

AS 别名,这个使用非常多,往往可以放在表名后面,或者查询字段或结果的后面,用来简化SQL。

执行算术计算:对检索出的数据进行算术计算。比如看下面的第三条SQL语句。

上代码:

SELECT vend_name + ‘(’ +vend_country+’)’ from vendors ORDER BY vend_name;
SELECT RTRIM(vend_name)+ ‘(’+RTRIM(vend_country)+’)’ AS vend_title FROM Vendors;
SELECT prod_id, quantity item_price, quantity * item_price AS expanded_price FROM OrderItems WHERE order_num=20008;

第八章 使用数据处理函数

文本处理函数:UPPER 变大写。

日期和时间处理函数:DATEPART() 用于SQL Server,只返回年份。DATE_PART() 用于PostgreSQL;

数值处理函数:这个用的其实并不多,常见的有 ABS() 返回一个数的绝对值;PI() 返回圆周率;SQRT()返回一个数的平方根。

上代码:

SELECT vend_name, UPPER (vend_name ) AS vend_name_upcase FROM Vendors ;

SELECT order_num FROM Orders WHERE order_date BETWEEN to_date(‘01-01-2012’) AND to_date ( ‘12-31-2012’);

第九章 汇总数据

这一章主要讲的是SQL中的聚集函数,它们既可以单独使用,也可以组合使用。

AVG( ) 返回某列的平均值
COUNT( )返回某列的行数
MAX( ) 返回某列的最大值
MIN( ) 返回某列的最小值
SUM( )返回某列值之和

上代码:

SELECT AVG (prod_price) AS avg_price FROM products;
SELECT COUNT() AS num_cust FROM Customers;
SELECT COUNT(cust_email) AS num_cust FROM Customers;
SELECT COUNT(
) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max FROM Products;

第十章 分组数据

这一章主要讲的是 GROUP BY 子句和HAVING 子句, 一般创建分组用GROUP BY, 过滤分组用HAVING 子句,这样一来一个SELECT语句中就会出现多个子句,它们之间的顺序一定要排列好。

SELECT子句及其顺序:

SELECT – 要返回的列或表达式 , 必须使用
FROM – 从中检索数据的表 , 仅在从表中选择数据时使用
WHERE–行级过滤
GROUP BY – 分组说明,仅在按组计算聚集时使用
HAVING – 组级过滤
ORDER BY–输出排序顺序,不是必须使用

上代码:

SELECT order_num,COUNT() AS items
FROM OrderItems
GROUP BY order_num,
HAVING COUNT(
)>=3,
ORDER BY items, order_num;

今天的内容到此结束,后会有期!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值