MYSQL学习笔记 (一)

     每次面试后,都决定一改前非。事实上依然和那些发誓再吃最后一份美食的胖子一样。不管这次是不是三分钟热度但是至少我开始。

     MYSQL引擎

     说到MYSQL引擎我又想起研二时候去面试的第一家公司——大脉。当时懵懵懂懂的就去了,然后被那个面试官问我开发的那个系统

MYSQL数据库采用的什么引擎。现在想起了也好笑,明明当时有了解过这个,却到关键的时候忘了。好了不题外话了,进入主题。

    MYSQL引擎有9种,我们通常用到的主要是INNOB和MYISAM。其实INNOB支持事务处理,支持外键,在插入、更新操作时只对数据行进行

锁定。在SELECT操作较多并且不需要事务处理的情况下使用MYISAM比较多,它不支持外键,并且在插入、更新操作时对数据包进行锁定。另外

二种存储引擎的存储 结构也不同。

    MYSQL字符串char与varchar的区别

    varchar为变长字符串类型,这就意味着字符串占有的存储空间为自身的大小。例如对于中文简体字符集gbk的字符串而言,varchar(255)

表示可以存储255个汉字。而每个汉字占用两个字节的存储空间。假若这个字符串没有那么多的汉字,例如仅仅包括一个“中”字,那么varchar(255)仅仅占用一个字符(2个字节)的存储空间,如果不考虑其他开销。而char(255) 必须占用255个字符长度的存储空间,哪怕里面只存储一个汉字。

但是对于char而言,即使只有2个字节也会占用全部的存储空间。

    DATETIME与DATESTAMP的区别

    datetime与datestamp格式差不多,但是datetime的范围远远大于datestampdatestamp到 2037年就玩完了。另外 datestamp类型的数据在不赋值时默认为当前日期时间。

     WHERE与HAVING的区别  

     作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算),而 HAVING 在分组和聚集之后选取分组的行。。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句,但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)

  

posted on 2016-05-03 20:52  会学习的猪  阅读(160)  评论(0编辑  收藏  举报

导航