目录
1.left、right、inner join的区别?
2.union和union all区别?
纵向合并两个表的数据,这时会用到UNION和UNION ALL关键字。
其区别就是:
UNION会进行数据的排序和去重,查询效率低。
UNION ALL没有进行去重和排序,查询效率高。
需要注意的是:合并的两个或多个表需要保证他们字段的个数相同,否则会报错。
3.sql语句的执行顺序
查询执行顺序
1.FROM 和 JOINs
2.WHERE
3.GROUP BY
4.HAVING
5.SELECT
6.DISTINCT
7.ORDER BY
8.LIMIT / OFFSET
4.sql三个排序函数区别(窗口函数)
row_number()按照值排序时产生一个自增编号,不会重复(如:1、2、3、4、5、6)
rank() 按照值排序时产生一个自增编号,值相等时会重复,会产生空位(如:1、2、3、3、3、6)
dense_rank() 按照值排序时产生一个自增编号,值相等时会重复,不会产生空位(如:1、2、3、3、3、4)
5.sql substring
sql substring函数用来截取字符串得一部分
SUBSTR(str,pos,len): 由<str>
中的第<pos>
位置开始,选出接下去的<len>
个字元。
SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = 'Los Angeles';
结果:
‘s Angeles’
6.sql中where和having区别
where:
where是一个约束声明,使用where来约束来自数据库的数据;
where是在结果返回之前起作用的;
where中不能使用聚合函数。
having:
having是一个过滤声明;
在查询返回结果集以后,对查询结果进行的过滤操作;
在having中可以使用聚合函数。
聚合函数就是例如SUM, COUNT, MAX, AVG等。
7.sql中where和on区别
以 LEFT JOIN 为例:在使用 LEFT JOIN 时,ON 和 WHERE 过滤条件的区别如下:
ON 条件是在生成临时表时使用的条件,它不管 ON 中的条件是否为真,都会返回左边表中的记录;
WHERE 条件是在临时表已经生成后,对临时表进行的过滤条件。因为此时已经没有 LEFT JOIN 的含义(必须返回左侧表的记录)了,所以如果 WHERE 条件不为真的记录就会被过滤掉。