常用SQL相关

2022-04-03  本文已影响0人  坤坤坤坤杨

1. where和having的区别?

  1. where和having都可以使用的场景:
    当筛选条件在要查询的字段中都有的情况下两者作用的等效的。
select goods_price,goods_name form sw_goods where(having) goods_price >100

当筛选条件不在查询字段中时,只能使用where进行条件过滤。

  1. 只能使用having不能使用where的场景:
    当给字段取别名后,where不能根据别名进行筛选
    ,where后不能使用聚合函数,where 子句的作用是在对查询结果进行分组前将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚和函数,而having是可以的,having是对结果集进行的过滤,在查询返回以后对查询结果进行的过滤操作。

2. 外连接和内连接

  1. 内连接:
    假设A和B进行内连接,使用内连接的话,只要A表和B表能够匹配上的记录都可以查出来,AB两表没有主副之分。
  2. 外连接:
    A和B 进行外连接,AB表中有一张表示主表,另一张表示副表,看谁外连接谁,来决定谁是主表,主要查询主表中的数据,捎带查询副表,当副表中的数据没有和主表中的数据匹配上,副表就会自动模拟出null与之匹配。

3. union和union all

union和union all区别是,union会自动压缩多个结果集合中的重复结果,并同时会进行默认规则的排序,而union all 则将所有的结果全部显示出来,不管是否重复,且不进行排序。

4. 聚合函数

  1. 每个组函数接受一个参数;
  2. 默认情况下,组函数忽略值为null的行,不参与计算;
  3. 有时会使用关键字distinct剔除字段值重复的条数;
  4. 组函数不可以嵌套使用;
  5. 组函数的参数可以是列或函数表达式;
  6. 一个查询语句中可以有多个聚合函数;

4.1 常用函数

  1. GROUP_CONCAT()函数:函数的值等于属于一个组的指定列的所有值,以逗号隔开,并且以字符串表示。

  2. str_to_date(str, format):字符串转日期类型。

  3. date_format(date, format):时间转字符串

  4. INSERT(s1,x,len,s2):字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串。

  5. LCASE(s) :将字符串 s 的所有字母变成小写字母。

  6. LTRIM(s):去掉字符串 s 开始处的空格。

  7. REPLACE(s,s1,s2):将字符串 s2 替代字符串 s 中的字符串 s1。

  8. STRCMP(s1,s2):比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1。

  9. IFNULL(v1,v2):如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。

  10. case when then else end:CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。

CASE expression
            WHEN condition1 
    THEN result1
            WHEN condition2
     THEN result2
   ...
            WHEN conditionN
     THEN resultN
            ELSE result
END
上一篇 下一篇

猜你喜欢

热点阅读