最近在熟悉mysql数据库的操作,,当然重点就是数据库中数据方面的操作了,针对数据方面的增删改查是重中之重,这里我就单一的查做一下详细的记录,便于记忆。(内容过于简单,只适合小白)
1、select后面跟着的是我们需要的字段或者信息,存在以下几种情况:
①最常见的*,这个符号对刚入门的小白很是友好,然而熟悉了以后你就会发现,这个符号会带来很多的副作用,比如查询的效率 ,比如无法单独获取我们想要的字段数据,比如无法对要获取的字段使用聚合函数等等,所以一般查询中不建议使用(实在是没办法可以使用)
②select column ,column,.....这种类型是我们平时使用较多的一种类型,也是最简单和基础的类型,只需要将目标字段名以此放在后面即可,当然这也存在sql的优化问题,就是可以根据每一个字段的索引情况,键的情况合理安排科学的先后顺序。
③select 聚合函数(columns),聚合函数(columns)这一种类型是在原始数据的基础上,对原始数据的一种加工,当然这些聚合函数都是sql封装好的,直接用即可,下面介绍几个常用的:
max()、min()、avg()、sum()、count()、group_concat()
简单说一下,count(*)和count(1)和count(column)之间的区别和联系,前两个基本上是没有区别的,在于与最后一个的区别,count(*)是对全表的操作,count(column)是对这一个字段的,count(*)对值为NULL的数据仍然统计在内,后者则不会统计。group_concat()是指一个字段的详细情况,具体不太好说,自己找个例子试一下就会很明白。
2、sql语句的前一部分说完了,接下来讲一下后面的部分,后面部分,我们可能比较不好掌握的是当多种限制条件同时存在的时候,我们该怎么去选择和使用。
限制条件的关键词包括where、having、group by、order by、limit、rand()、on等等
他们具体的含义以及对数据的作用很好理解这里不做解释说明,我们就来讲一下,这些关键词的顺序,以及如何选择,,
where :这个关键词纵贯所有的sql语句,无论是在什么情况下都可以用where对数据进行限制,也是所有优先级最高的关键词,当然也是排在前面的关键词
group by:分组,当然你会发现,你使用这个关键词查询出来的并不是所有分组的具体情况,而是只展示了分组中的第一条数据,这样就可以结合上一部分的group_concat()一起使用来查看分组内的所有数据的情况,当然其他的聚合函数也是可以使用的,使用分组以后再使用聚合函数才会更有意义。优先级在where之后。
having:这个关键词只能算是一个子句,子句的意思就是这个关键词只有使用group by以后使用才有意义,是在分组之后对分组结果的二次筛选,
order by和limit、rand():这两个关键词就比较特殊一点,只是对查询结果的展示有影响,一般存在于查询结束之后
on关键词:这个比较特殊,我们在进行多表联合查询的时候结合(join)一起使用,不存在单独出现的on关键词,在多表联合查询的时候,优先级在where之前,意思是要先把所有的数据给你整合到一起,你才能用限制的条件去筛选。而且使用join进行内连接的时候还是要必须用on进行限制的,不然出现的结果就是笛卡尔积(m x n)的形式了
最后附上一张图片说明,形象化一下,加深一下记忆:
大致的顺序就是上面图片中的描述,当然里面的条件并不一定都是要存在的,可以根据自己的需求科学的选择自己需要的条件。
上面仅是对sql语句的一点粗浅的理解,有不对的地方,诚恳的请求指出,也欢迎大家一起讨论。