mysql怎么写sql语句(mysql语句菜鸟教程)

刚刚接触MySQL的同学应该会有这样的疑问:为什么我要先写select,再写from,再写where,有什么意义?我从后面倒着写可不可以?

这个问题我们可以从另一个角度帮助大家去理解,解决大家的疑问,顺便可以提升一波写MySQL语句的能力。

首先大家要记住MySQL的执行顺序是怎样的,不同类型的数据库执行的顺序总会存在一点点的差异,这个大家不用担心。数据分析优质社群,等你加入哦~

mysql怎么写sql语句(mysql语句菜鸟教程)

不管我们写什么样的SQL语句,都逃不开执行顺序,只要搞清楚这个,按照顺序写就好了。

1、FROM和JOIN

我们在查询之前,肯定是先要拿到数据表,这时候就要先执行FROM和JOIN的语句,这是我们获取数据的第一步。

2、WHERE

当我们拿到了数据以后,where就要执行我们的限制条件,需要哪些行,不需要哪些行,将不满足条件的删除,这个对所有的数据类型都是通用的。

3、GROUP BY

where条件限定之后就需要根据group by分组语句对数据进行分组,然后对各个组的数据进行求聚合。

在这一大家要注意一下我们在group by的时候是先from和where的,所以我们写在开始的聚合函数sum()、count()等等还是未知的。

4、HAVING

having的用法跟where是一样的,但是它们的区别在于having是在过滤聚合值,也就是跟在having之后的。

5、SELECT

等到所有的处理都执行结束以后,才到了select语句,可以根据自己的需要去选择需要的数据。但并不意味着就结束了。

6、DISTNCT

这是对剩下的数据,去除重复行,只保存唯一的,这时候可以选择需要去重的字段,要记住的是这时候去重保存的是数据中的第一条。

7、ORDER BY

此语句用来对select之后的结果进行排序,可以进行升序或者降序,也可以对多个字段同时进行排序,默认是升序的。

8、LIMIT

用来限定显示返回的行数。

这个可以用来对数据进行取样,这边给大家推荐两种取样的语法。

select from analytical_table order by rand() desc limit 1;

select from analytical_table where rand()<0.015 limit 140

大家以后再写MySQL查询的时候,按照这个逻辑,把每一个子句全部写出来,然后将所有的子句按照SQL的书写数据组合起来,这样一条逻辑分明、完整的MySQL语句就写好了。

# SQL书写顺序

  • SELECT DISTINCT<Select_list>
  • FROM  <left_table> <left/inner/right> JOIN <right_table>
  • ON <join_condition>
  • WHERE <where_condition>
  • GROUP BY <group_by_list>
  • WITH  {CUBE|ROLLUP}
  • HAVING <having_condtion>
  • ORDER BY <order_by_list>
  • LIMIT <limit_number>

最后给大家推荐几个书写规范,这个需要大家在书写的过程中慢慢去改正,如果大家是新手的话,那么希望大家从开始就养成这种习惯,对大家以后很有很大帮助的。

1、每一段MySQL语句之后要加分号;

2、用中文名字作为别名的话,记得加反引号``

(不同的数据库需要不同操作哦~)

3、查询日期或字符串的时候,使用单引号‘’

4、不等于使用的是<>,而不是!=

5、order by默认是升序,如果大家需要降序的话加order by desc

6、order by是在select之后执行的,所以可以使用大家在select中设置的别名,在where中是不能使用别名的

7、字符串是按照字典顺序排序的,字典顺序的意思是相同字符开头的字符串比不同字符开头的字符串更接近,也就是说字符串排序的时候会按照左边位为依据排序。

mysql怎么写sql语句(mysql语句菜鸟教程)

版权声明:本文内容由互联网用户投稿发布,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2211788188@qq.com 举报,一经查实,本站将立刻删除。如需转载请注明出处:https://www.wptmall.com/a/article/28376

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注