2020-08-03--第一周sql总结

作者: 我是块扣肉 | 来源:发表于2020-08-08 21:35 被阅读0次

    1、在很多情况下需要考虑是否要去掉重复,如需要用distinct;

    2、很多情况下子查询和表连接都可以解决问题,看你选择哪种方法;

    3、对代码不够熟悉,经常出现逗号不该加,少加括号的问题、写错关键词等问题,尤其是每行末尾要加分号;

    4、注意ifnull(字段,如无时展示什么)的使用;

    5、使用year 提取日期时禁过度提取,先看下能否直接加减再用提取;

    6、如何发现维度不够时,就进行多表相连>2,比如3个表,如一个人同时要看种成绩对比、选两种不一样的课之类的问题!

    7、where 和 on的区别?可能存在和存在分别放在哪个的后面?where -->group by-->having

    where 为行过滤,然后进行分组,分组后组过滤用having

    8、注意:在用group by 进行筛选时要用having ,不用总是用where,且group by 字母分开,不要与python 弄混;

    9、不存在,需要用not in,查询不在XX内的思路是,先查出在XX内的全部人或者课程,然后用 not in

    10、左连接和内连接分别适用于什么场景下?

    11、SQL成绩统计排名有个单独的写法,需要注意:赋值变量法

    mysql 变量赋值的三种方法

    mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。

    第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量

    第二种用法:select @num:=1; 或 select @num:=字段名 from 表名 where ……

    注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”

    第三种用法:select 字段名1,字段名2 into @变量1,@变量2 from 表名 where ......

    在函数或存储过程或触发器中,在不能使用set的时候推荐第三种,因为第二种会在执行时返回查询结果,这在函数或触发器中会报 “Not allowed to return a result set from a function”错误。而第三种则不会报错。

    12、case when 外面可以用sum函数,详细了解case when 的全部写法;

    1)select case 字段

    when 条件,可以等于大于小于,可以并列and or   then 结果

    when 另一个条件 结果

    else 结果

    end as 别名,

    其他字段,

    from 表名

    2)需要注意,如果用 字段

    case when 这种写法 那字段后面需要加上逗号,相当于添加了一个新的字段

    如:

    select 字段,

    case when 字段条件 then 结果

    when 字段条件 then 结果

    else 结果

    end  as 新字段

    from 表名;

    13、between和 and 的使用请注意between用在连续范围内,而and是一个并列的筛选条件;

    14、mysql中 if 语句的用法

    15、mysql中求长度的字符为:length字节长度,python为len,要注意区分;char_length():单位为字符

    相关文章

      网友评论

        本文标题:2020-08-03--第一周sql总结

        本文链接:https://www.haomeiwen.com/subject/ddwvrktx.html