mysql 基础

主键和外键有什么区别?

主键 :用于唯一标识一条数据,值不能为null、不允许有重复。一张表只能有一个主键列,如果建表没有设置主键,首先会选择非空唯一索引作为主键,如果没有合适的索引列会生成一个不可见的列作为主键。
外键 :外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键。

为什么不推荐使用外键与级联?

外键与级联更新适用于单机低并发,不适合分布式、高并发集群。
级联更新是强阻塞,存在数据库更新风暴的风险。
外键影响数据库的插入速度。
对分库分表不友好, 因为分库分表下外键是无法生效。

外键与级联的优点?

保证了数据库数据的一致性和完整性。

什么是 ER 图?

E-R 图 也称实体-联系图(Entity Relationship Diagram)。

提供了表示实体类型、属性和联系的方法。

用来描述现实世界的概念模型。

是表示概念关系模型的一种方式。

什么是范式?

数据库设计范式是数据库设计的一系列原理和技术,也是数据库设计的规范,用于减少数据库中数据冗余,增进数据的一致性。

数据库三范式介绍?

无范式(非标准化形式):规定了数据必须要有主键,且没有重复的记录。
1NF(第一范式):在无范式的基础上,即也满足必须有主键,且没有重复的记录的基础上,还有满足字段的原子性。例子:加入date列里存放了两个日期,则不满足第一范式。
2NF(第二范式):在第一范式的基础上,没有部分函数依赖,及每条数据的值都依赖于这条数据的主键。
3NF(第三范式):在第二范式的基础上,没有传递函数依赖,及不存在一条数据B列的值依赖A列的值,C列的值依赖B列的值(A->B->C)

drop,delete与truncate的区别?

是否会删除表结构:

  • drop:直接删除表数据和表结构。
  • truncate:删除表中数据,其中表结构、约束、索引不变。新行标识所用的计数值重置为该列的种子值(主键会重置)。
  • delete:可以配合where条件使用,不会重置主键值,可以删除视图和表。drop只能删除表。

是否记录回滚日志:

  • delete每次只删除一行,且会记录undo.log回滚日志,也会触发触发器。
  • truncate不会记录回滚日志,不会触发触发器,所以执行速度更快。

是否释放索引空间:

  • delete操作不会减少索引空间,truncate会完全释放索引空间。

是否受事务控制:

  • drop和 truncate 是DDL,操作立即生效。delete 是DML需要事务提交后才生效。
  • 有外键约束的表,使用truncate是不受外键约束。

执行速度:

  • 执行速度:drop -> truncate -> delete。

数据库中如何存储时间?

  • 不要使用字符串存储时间,字符串占用的空间更大,存储的日期效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。
  • Datetime 和 Timestamp 之间我们通常都会首选 Timestamp:
    • DateTime 类型是时区无关。
    • Timestamp 和时区有关。Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,简单说就是在不同时区,查询到同一个条记录此字段的值会不一样。
    • DateTime 类型耗费空间更大,DateTime需要8个字节,Timestamp 只需要使用 4 个字节,但是能表示更大的时间范围:
      • DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
      • Timestamp: 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59
  • 数值型时间戳是更好的选择吗?
    • int 或者 bigint 类型的数值存储方式具有 Timestamp 类型的所具有一些优点,并且使用它的进行日期排序以及对比等操作的效率会更高,跨系统也很方便,因为只是存放的数值。缺点是数据的可读性太差,无法直观的看到具体时间。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简单说一下数据库的三范式? 第一范式:数据库表的每一个字段都是不可分割的 第二范式:数据库表中的非主属性只依赖于主...
    美雨知春阅读 929评论 0 1
  • MySQL执行流程 由上可知,数据库也有缓存,其中解析器是最耗费时间的步骤 MySQL的SQL语句 1.DDL :...
    强某某阅读 3,669评论 0 3
  • 1、数据库三大范式你能说一下吗? 第一范式:1NF是对属性的原子性约束,要求字段具有原子性,不可再分解;比如有一张...
    执着的逗比阅读 12,266评论 4 1
  • 数据库简介关系型数据库MySQL安装和使用SQL语言 一、数据库简介 (一)数据库的发展 文件系统:磁盘文件存储数...
    哈喽别样阅读 3,153评论 0 1
  • 什么是数据库,数据库是一个文件系统,通过标准的SQL语言操作文件系统中的数据。什么是关系型数据库,保持关系数据模型...
    鑫狗_ab53阅读 676评论 0 1