Mysql

1. MyISAM 和 InnoDB 的区别有哪些?

答:

  • MyISAM 不支持事务,InnoDB 是事务类型的存储引擎;

  • MyISAM 只支持表级锁,BDB 支持页级锁和表级锁,默认为页级锁;而 InnoDB 支持行级锁和表级锁,默认为行级锁;

  • MyISAM 引擎不支持外键,InnoDB 支持外键;

  • MyISAM 引擎的表在大量高并发的读写下会经常出现表损坏的情况;

  • 对于 count( ) 查询来说 MyISAM 更有优势;

  • InnoDB 是为处理巨大数据量时的最大性能设计,它的 CPU 效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的;

  • MyISAM 支持全文索引(FULLTEXT),InnoDB 不支持;

  • MyISAM 引擎的表的查询、更新、插入的效率要比 InnoDB 高。

最主要的区别是:MyISAM 表不支持事务、不支持行级锁、不支持外键。 InnoDB 表支持事务、支持行级锁、支持外键。(可直接回答这个)

2. 数据库中 Where、group by、having 关键字:

答:  

关键字作用:

  1. where 子句用来筛选 from 子句中指定的操作所产生的的行;

  2. group by 子句用来分组 where 子句的输出;

  3. having 子句用来从分组的结果中筛选行;

having 和 where 的区别:

  1. 语法类似,where 搜索条件在进行分组操作之前应用;having 搜索条件在进行分组操作之后应用;

  2. having 可以包含聚合函数 sum、avg、max 等;

  3. having 子句限制的是组,而不是行。

当同时含有 where 子句、group by 子句 、having 子句及聚集函数时,执行顺序如下:

  1. 执行 where 子句查找符合条件的数据;

  2. 使用 group by 子句对数据进行分组;对 group by 子句形成的组运行聚集函数计算每一组的值;最后用 having 子句去掉不符合条件的组。

3. 还有一些问题,如 MySQL 和 SQL Server 用法上的区别、limit 关键字的使用等问题。

小结:数据库方面还是事务机制、隔离级别比较重要,当然了数据库索引是必考的问题。

偶尔也会给你几个表,让你现场写 SQL 语句,主要考察 group by 和 having 等关键字。

 

上一篇:mysql随笔


下一篇:sql分组计算及添加筛选条件:group by,having