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 类型的所具有一些优点,并且使用它的进行日期排序以及对比等操作的效率会更高,跨系统也很方便,因为只是存放的数值。缺点是数据的可读性太差,无法直观的看到具体时间。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

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