baxiadsy_csdn 2019-01-04 17:09 采纳率: 0%
浏览 1475
已采纳

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

今天看到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,你可以看下我博客的内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏