SQL之查询

本文纯属娱乐,如有不足之处敬请指正
主要聊聊select的完整执行顺序,当然这是从其他博主那挖来的,嘿嘿
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、select 的字段;
8、使用order by对结果集进行排序。
看完上面内容后,我想了想:
1、from后面跟什么其实可以不用谈,但是我最烦老师说这很简单就不说了,随便举几个吧,可以跟表名,也可以跟视图,更可以跟一条语句
eg:select * from(select * from table_name)t where +条件限制,还可以跟什么我就想不起来了,因为我也是菜鸟
2、where后面主要跟条件限制,像 id=‘123’ and name like ‘%小红%’ and age<>'22' or weight<'110' 都可以
3、group by是用来分组的
eg:一般用到的就是“每”这个字 
现有一个这样的表:每个部门有多少人 就要用到分组的技术
select DepartmentID as '部门名称',COUNT(*) as '个数' from BasicDepartment group by DepartmentID
这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照了部门的名称ID(DepartmentID)将数据集进行了分组;然后再进行各个组的统计数据分别有多少;
如果不用count(*) 而用类似下面的语法
select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID
将会出现错误
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'BasicDepartment.DepartmentName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
英文错误提示 :Column 'BasicDepartment.DepartmentName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
原则:
(1)这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;
(2)要么就要被包含在聚合函数中。
4、专业点说聚合函数是对一组值执行计算并返回单一的值的函数(其实这句话看看就行,让我嘚瑟嘚瑟),只需要记记,求一堆数的平均值(avg),求和(sum),统计个数(count),取最大值(max),取最小值(min),还有像方差,标准差之类的我基本没用过,喜欢就自己追去吧。
5、having其实跟where没啥区别,无非是where的条件限制用在group by之前,而having用在group by之后罢了(呵呵,我是这么理解的),但是group by之后的数据跟之前的数据可是不一样的。
6、表达式(一般由常量、变量、函数、运算符组成的式子,由嘚瑟了一把)应该有三种情况:
南波湾:表名后面跟<字段名表达式>
南波图:select语句后跟<目标表达式>
eg:*,表名.*,avg()
南玻思锐:where语句后更<条件表达式>
eg:比较大小>,指定范围between...and...,集合in,字符匹配like,控制is null,多重条件or
7、select这个比较难,不理解的上网查查哈
8、order by排序用的,默认的是有小到大,加上desc会很神奇的从大到小了,不信可以试试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值