你真的会玩SQL吗?之逻辑查询处理阶段
2015-10-28 10:10
204 查看
原文:你真的会玩SQL吗?之逻辑查询处理阶段
记得刚出来行走江湖的时候也是只会增、删、改、查四大法宝,一般公司没有多少复杂的业务,所以就够用了。但后来看着大神会写个几百行的SQL存储过程就感觉自己是不是弱爆了。
如今是大数据的时代,对数据的处理要求越来越重视,要出各种数据报表,因此百万数据处理速度,数据库明显比后台逻辑处理的优势不是一个别。
下面进入正题,写了多年的SQL,你真的玩会了SQL吗?
在此我想再次提示一个数据处理的中心思想,SQL数据处理是集合思维,不要用逻辑思维来思考。
文中的示例来自自己的积累和TSQL2008技术内幕。
逻辑查询处理阶段
View Code
前言
最近要对数据库进行优化,但由于工作项目中已经很少亲自写SQL而且用的都不是很复杂的语句,所以有些生疏了,于是翻翻N年前的笔记资料,想以此来记录回顾总结一些实用的SQL干货让大家来学习,若有不对之处可提出。记得刚出来行走江湖的时候也是只会增、删、改、查四大法宝,一般公司没有多少复杂的业务,所以就够用了。但后来看着大神会写个几百行的SQL存储过程就感觉自己是不是弱爆了。
如今是大数据的时代,对数据的处理要求越来越重视,要出各种数据报表,因此百万数据处理速度,数据库明显比后台逻辑处理的优势不是一个别。
下面进入正题,写了多年的SQL,你真的玩会了SQL吗?
在此我想再次提示一个数据处理的中心思想,SQL数据处理是集合思维,不要用逻辑思维来思考。
文中的示例来自自己的积累和TSQL2008技术内幕。
基础知识普及
对于教条式的定义请自己去查,此处不会涉及到文邹邹的知识,但还是强调一下基础的重要性,即使你理解了所有的概念,但当组合起来用时也会一头雾水。逻辑查询处理阶段
--answer: select c.custid,c.companyname,o.orderid,o.orderdate from Sales.Customers as c left join Sales.Orders as o on c.custid=o.custid and o.orderdate='2007-2-12' /* 1.将表Sales.Customers别名为c和表Sales.Orders别名为o应用ON筛选器以custid和o.orderdate='2007-2-12'为条件左外连接,生成虚拟表VT1, 2.添加外部行,外部行中非保留表中的属性被赋值为NULL,生成虚拟表VT2 3.处理select列表,从虚拟表VT2中查找出c.custid,c.companyname,o.orderid,o.orderdate生成虚拟表VT3 */
View Code
相关文章推荐
- PostgreSql笔记
- PL/SQL Developer Oracle Instance Client连接远端数据库
- redis数据库缓存部署
- Redis配置文件解析
- Debian8.1下面安装postgresql9.4
- oracle数据类型和对应的java数据类型
- sql注入经典例子
- 数据库复制结构内容相同的数据
- 代码调用存储过程超时,但数据库 执行 秒速
- SQL Server -减少代码触发的负担
- SQL Server编程(02)自定义函数
- SQL Server编程(01)流程控制
- MSSQL CharIndex()用法
- ORA-00257: 归档程序错误。在释放之前仅限于内部连接
- Sqlplus的一般操作
- MySql学习笔记----一些小知识点
- Redis学习笔记(八)进阶之生存时间
- linux下搭建oracle数据库服务器
- SQL函数学习(十三):LEFT()and RIGHT()函数
- Win10中安装Oracle11g