MySQL学习笔记一:问题总结

作者: 米兔妮妮 | 来源:发表于2019-01-13 17:44 被阅读0次

    总结一下这一周学习中遇到的几个问题:

    1、数据库中schema(模式)和database(数据库)的理解
    模式(schema)是表、视图等数据库中对象的集合,如下图所示,crazydata、data、db、first等均为模式,以sys为例,可以看到sys是表、视图、存储过程、函数等的集合。在MySQL中,schema等同于database。

    屏幕快照 2019-01-13 下午4.49.08.png
    2、mysql数据类型总结
    2.gif
    3、mac下mysql导出CSV文件使用excel打开有乱码
    乱码原因:Mac下文本的默认编码是UTF-8,而Excel对中文的处理是GBK编码。
    解决方法:参考 https://blog.csdn.net/qq_32416677/article/details/80559244
    4、like中通配符使用注意事项
    (1)常用通配符含义:
    百分号%:0个、1个或多个字符
    下划线_:单个字符
    方括号[]:匹配[]中的任意一个字符
    脱字号^:否定,等同于not like,如:
    筛选出Customers表中名字开头不为J和M的人
    select name
    from Cusomers
    where name like '[^JM]%';
    

    等价于

    select name
    from Cusomers
    where not name like '[JM]%';
    

    (2)区分大小写
    like "jet%" 与JetPack不匹配
    (3)尾空格可能会干扰通配符。
    如:在保存词anvil时,如果它后面有一个或者多个空格,则子句where name like ‘%anvil’不会匹配它们,因为l后面还有空格。
    解决方法:使用函数去掉首尾空格。
    5、count的几种用法
    count是聚合函数,用来统计结果集的行数。
    count(*)、count(1)、count(列号):统计结果中包含为null的行
    count(列名):统计结果中不包含为null的行
    count (distinct 列名):去除重复项
    6、where和having:
    (1)where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
    (2)having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中使用聚组函数,不可跟列名,使用having 条件过滤出特定的组。
    简而言之:where在分组之前进行过滤,过滤的是行;having对分组后的结果进行过滤,过滤的是组。
    7、and和or的优先级
    and具有较高优先级。因此,使用and和or连接多个过滤条件时,注意是否需要加括号,提升or的优先级。
    8、like与正则表达式区别
    like匹配整个值才能返回,正则表达式匹配时,值的某一部分(子串)符合REGEXP即可

    相关文章

      网友评论

        本文标题:MySQL学习笔记一:问题总结

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