• 面试题
    • MySQL有哪些日志,分别是什么用处?
    • 除传统的关系型数据库之外,有哪些NoSQL数据库?
    • 视图由多个表连接而成,可以对视图进行插入操作么?
    • UNIONUNION ALL 有什么区别?
    • 主键和唯一键有什么区别?
    • MySQL中空值和NULL的区别?

    面试题

    MySQL有哪些日志,分别是什么用处?

    mysql日志一般分为5种

    • 错误日志:-log-err (记录启动,运行,停止mysql时出现的信息)
    • 二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)
    • 查询日志:-log (记录建立的客户端连接和执行的语句)
    • 慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询)
    • 更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MySQL5.1中不再使用)

    除传统的关系型数据库之外,有哪些NoSQL数据库?

    • Memcached:分布式内存对象缓存系统,可以与MySQL数据库协同使用。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的访问速度。Memcached基于一个存储键/值对的HashMapMemcached可以用于解决数据读的性能,但是对写操作不能有提高。
    • Redis:基于内存亦可持久化的日志型、Key-Value数据库。和Memcached类似,但是它支持存储的value类型相对更多。同时可以实现主从同步,即分布式。
    • MongoDB:基于分布式文件存储的数据库。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。
    • HBase:是一个分布式的、面向列的开源数据库。HBaseApacheHadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式

    视图由多个表连接而成,可以对视图进行插入操作么?

    • 若视图是由两个以上基本表导出的,则此视图不允许更新。
    • 若视图的字段来自字段表达式或常数,则不允许对视图执行INSTER和UPDATE操作,但允许delete。
    • 若视图的字段来自聚集函数,则此视图不允许更新。
    • 若视图中含有GROUP by子句,则此视图不允许更新。
    • 若视图中含有DISTINCT短语,则此视图不允许更新。.
    • 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。.
    • 一个不允许更新的视图上定义的视图不允许更新。

    UNIONUNION ALL 有什么区别?

    UNION 用于 合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

    UNION ALL基本使用和UNION是一致的,但是UNION ALL不会消除表中的重复行。


    主键和唯一键有什么区别?

    • 主键不能重复,不能为空,唯一键不能重复,可以为空。

    • 建立主键的目的是让外键来引用。

    • 一个表最多只有一个主键,但可以有很多唯一键。


    MySQL中空值和NULL的区别?

    • 空值(‘’)是不占用空间的,判断空字符用 = ‘’ 或者 <> ‘’ 来进行处理。
    • NULL值是未知的,且占用空间,不走索引;判断 NULL 用 IS NULL 或者 is not null ,SQL 语句函数中可以使用 ifnull ()函数来进行处理。
    • 无法比较 NULL 和 0;它们是不等价的。
    • 无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。
    • NULL 值可以使用 <=> 符号进行比较,该符号与等号作用相似,但对NULL有意义。
    • 进行 count ()统计某列的记录数的时候,如果采用的 NULL 值,会别系统自动忽略掉,但是空值是统计到其中。