中国统计网|SQL太难?你离完全理解SQL就差这10步!( 五 )
SQL 语句中的 SELECT 实质上是对关系的映射
我个人比较喜欢“映射”这个词 , 尤其是把它用在关系代数上 。(译者注:原文用词为 projection, 该词有两层含义 , 第一种含义是预测、规划、设计 , 第二种意思是投射、映射 , 经过反复推敲 , 我觉得这里用映射能够更直观的表达出 SELECT 的作用) 。一旦你建立起来了表的引用 , 经过修改、变形 , 你能够一步一步的将其映射到另一个模型中 。 SELECT 语句就像一个“投影仪” , 我们可以将其理解成一个将源表中的数据按照一定的逻辑转换成目标表数据的函数 。通过 SELECT语句 , 你能对每一个字段进行操作 , 通过复杂的表达式生成所需要的数据 。SELECT 语句有很多特殊的规则 , 至少你应该熟悉以下几条:
- 你仅能够使用那些能通过表引用而得来的字段
- 如果你有 GROUP BY 语句 , 你只能够使用 GROUP BY 语句后面的字段或者聚合函数
- 当你的语句中没有 GROUP BY 的时候 , 可以使用开窗函数代替聚合函数
- 当你的语句中没有 GROUP BY 的时候 , 你不能同时使用聚合函数和其它函数
- 有一些方法可以将普通函数封装在聚合函数中
- 凭直觉 , 这种做法从逻辑上就讲不通
- 如果直觉不能够说服你 , 那么语法肯定能 。 SQL : 1999 标准引入了 GROUPING SETS , SQL:2003 标准引入了 group sets : GROUP BY
SQL 语句中的几个简单的关键词:DISTINCT,UNION ,ORDER BY 和 OFFSET
在学习完复杂的 SELECT 豫剧之后 , 我们再来看点简单的东西:
- 集合运算( DISTINCT 和 UNION )
- 排序运算( ORDER BY , OFFSET…FETCH)
- 集合运算( set operation)
- DISTINCT 在映射之后对数据进行去重
- UNION 将两个子查询拼接起来并去重
- UNION ALL 将两个子查询拼接起来但不去重
- EXCEPT 将第二个字查询中的结果从第一个子查询中去掉
- INTERSECT 保留两个子查询中都有的结果并去重
推荐阅读
- 中年|中国-东盟区块链应用创新实验室揭牌
- IT爆料猿|中国电信6月5G用户数净增779万户,累计3784万
- 2020|影谱科技入选“2020中国AI商业落地价值潜力100强榜单”
- 中国航务周刊|港航业再现跨界收购!
- 招生|有道词典与中国教育在线合作,开通“高考招生”直播服务
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- AI财经社|谷歌云为何“放弃”中国市场?有人为它算了账,投入产出比太低
- 网速|全球网速排名:中国手机网速世界第三,美国第34
- 驱动中国|国内首次应用!支付宝开放宠物鼻纹识别技术:猫狗都能买保险
- 魅族|2020年BrandZ中国全球化品牌50强新鲜出炉,魅族再上榜,位列34名
