sql 语句

声明:所有文章只作为学习笔记用,转载非原创

  https://blog.csdn.net/wolovedaima123/article/details/81070484 
  https://www.cnblogs.com/dqh94/p/6031106.html
#mysql 8.0 新特性
 https://www.cnblogs.com/xyabk/p/10882913.html 


#select 
select 1  #可以是任何数字
select count(xx)  #xx 可以是任何数字 
select sum(xx) #
综上所述:第一种的写法是增加临时列,每行的列值是写在select后的数;第二种是不管count(a)的a值如何变化,得出的值总是table表的行数;第三种是计算临时列的和。

#子查询 
https://www.cnblogs.com/fzxey/p/10896244.html
示例
子查询就是将一个查询(子查询)的结果作为另一个查询(主查询)的数据来源或判断条件的查询。常见的子查询有WHERE子查询,HAVING子查询,FROM子查询,SELECT子查询,EXISTS子查询,子查询要使用小括号();

#优化
1、前提条件子查询是作为条件,作为一个结果集返回给外层,或者返回结果集让from表过滤条件的一种手段方式:分为where 后面子查询 和from后面或者join后面的子查询来加入语句中。
2、子查询由相关子查询和非相关子查询两种,尽量使用非相关子查询语句,这样查询只是用一次,作为一个整体结果集来使用。
3、子查询在join后面的话,也是一样的mysql 使用Nested Loop Join 算法,就是嵌套循环算法,查询出来的join(语句),也是作为一个整体结果集做过滤条件的,问题在于是否使用的关联的方式,如果使用关联的方式那么也是外面循环一次,里面查询也要依次循环一次,而作为一个整体结果集,就不会循环外层的参数了,尽量使用非相关子查询来使用。
4、尽可能的少关联使用join这个关键字,在表的数据量少的情况下可以使用,多的话,循环起来也是个麻烦的。
 


#group by 
https://www.cnblogs.com/lyb0103/p/9554688.html
在oracle中 select * from Table group by id 会报错。
会报不是group by 表达式。为什么一定不能是 * ,而必须是分组的列或者某个列的聚合函数。
在mysql中不会出现这样的问题。

你可能感兴趣的:(sql 语句)