baxiadsy_csdn
2019-01-04 17:09
采纳率: 16.7%
浏览 1.4k

删除表时难道不会自动删除主键吗?

今天看到SQL语句

alter table TB_1 drop primary key;
drop table if exists TB_1;

感觉有些多此一举,删除表的时候,主键难道不会自动删除吗?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 大川里的小川人 2019-01-04 18:24
    已采纳

    这个问题需要你真的去了解一下数据库的架构,以我了解的 MySQL为例:
    主键的意思实际上并不是体现在表上,1、主键是一种约束,就是唯一的标识 2、主键在表中实际体现与其他的列没有太多的区别 3、主键的用处实际上是通过B+树的索引来提高查找速度,举个例子,现在我新建了一个表,定义了一个主键,实际上,现在相当于在数据库的 B+ 树种添加了一个节点类型,然后往表中添加数据记录时,是按照主键的相对顺序添加的,这才是主键的用处。查询也较快。 主键 与 索引

    然后回到你的问题,删除表后,所有的数据都删除了,但是主键创建的这个索引还是在 B+ 树上面的,所以这个索引的B+树叶需要被删除
    存的地方是不一样的,比如索引是 在索引页 数据在数据页(B+树的叶子结点存放了对应地址)

    所以删除表,只是所有的数据页,索引页仍然存在,如果不删除,首先会占用内存,至于其他问题我还不清楚,可能会有相同索引再次创建的冲突问题。
    解决问题请采纳。

    然后我最近也在学 MySQL,你可以看下我博客的内容

    打赏 评论
  • qq_36143657 2019-01-04 17:19

    --删除表主键
    ALTER TABLE TB_1 DROP CONSTRAINT 主键名称;

    打赏 评论

相关推荐 更多相似问题