- 面试题
- MySQL有哪些日志,分别是什么用处?
- 除传统的关系型数据库之外,有哪些NoSQL数据库?
- 视图由多个表连接而成,可以对视图进行插入操作么?
UNION
和UNION 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基于一个存储键/值对的HashMap。Memcached
可以用于解决数据读的性能,但是对写操作不能有提高。Redis
:基于内存亦可持久化的日志型、Key-Value数据库。和Memcached类似,但是它支持存储的value类型相对更多。同时可以实现主从同步,即分布式。MongoDB
:基于分布式文件存储的数据库。MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json
的bson
格式,因此可以存储比较复杂的数据类型。HBase
:是一个分布式的、面向列的开源数据库。HBase
是Apache
的Hadoop
项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
视图由多个表连接而成,可以对视图进行插入操作么?
- 若视图是由两个以上基本表导出的,则此视图不允许更新。
- 若视图的字段来自字段表达式或常数,则不允许对视图执行INSTER和UPDATE操作,但允许delete。
- 若视图的字段来自聚集函数,则此视图不允许更新。
- 若视图中含有GROUP by子句,则此视图不允许更新。
- 若视图中含有DISTINCT短语,则此视图不允许更新。.
- 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。.
- 一个不允许更新的视图上定义的视图不允许更新。
UNION
和 UNION 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 值,会别系统自动忽略掉,但是空值是统计到其中。