关于Mysql的面试题(实时更新中~)

一、主键约束与“not null unique”区别

1、作为Primary Key的域/域组不能为null,而Unique Key可以。

2、在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。unique not null 可以 将表的一列或多列定义为唯一性属性,而primary key设为多列时,仅能保证多列之和是唯一的, 具体到某一列可能会重复。

3、更大的区别在逻辑设计上。Primary Key一般在逻辑设计中用作记录标识,这也是设置 Primary Key的本来用意,而Unique Key只是为了保证域/域组的唯一性。

二、数据库设计的三大范式

什么是范式?

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。 在关系型数据库中这种规则就叫做范式。

第一范式(1NF)确保每列保持原子性

第二范式(2NF)属性完全依赖于主键

第三范式(3NF)属性不依赖于其它非主属性属性直接依赖于主键

三、MyISAM和InnoDB的区别:

MySQL从5.5之后,默认采用InnoDB引擎。Innodb支持事物,对比MylISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响。

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。  5.5之前默认的存储引擎 。优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用,故而count(*)的查询效率很高。

四、having和where的区别:

where是对表中每一条数据进行判断

having是对分组聚合后的数据进行条件筛选

五、delete truncate drop的区别:

delete只删数据; truncate不仅删数据 还把索引删掉了

drop 不仅删数据,还删除了索引,表结构也删了

 

相关推荐

  1. MySQL批量更新实战

    2024-07-21 15:44:04       32 阅读
  2. 关于PostgreSQL20道面试

    2024-07-21 15:44:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 15:44:04       141 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 15:44:04       156 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 15:44:04       129 阅读
  4. Python语言-面向对象

    2024-07-21 15:44:04       141 阅读

热门阅读

  1. Leetcode 210. 课程表 II

    2024-07-21 15:44:04       31 阅读
  2. pinia 与 vuex 的区别

    2024-07-21 15:44:04       27 阅读
  3. B3635 硬币问题 洛谷 源代码

    2024-07-21 15:44:04       24 阅读
  4. 配置文件格式 INI 快速上手

    2024-07-21 15:44:04       29 阅读
  5. 网站工作原理详解

    2024-07-21 15:44:04       31 阅读