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

今天看到SQL语句

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

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

2个回答

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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
删除表的主键?
if OBJECT_ID('SF_SET_PRIMARY_KEY','P') IS NOT NULLrnDROP PROC SF_SET_PRIMARY_KEYrnGOrnCREATE PROC SF_SET_PRIMARY_KEY @ID NVARCHAR(10)rnAS rnBEGINrnDECLARE @TABLE NVARCHAR(15)rnrnSET @TABLE='COMP'+@IDrnif OBJECT_ID(''+@TABLE+'','PK') IS NOT NULLrnEXEC('alter table '+@TABLE+'rnDROP PK_'+@TABLE+' ')rnrnrnENDrnGOrn我创建了一个删除表主键的存储过程rnEXEC SF_SET_PRIMARY_KEY 2010 执行存储过程rn为什么删不掉呢,如何修改?rn
删除表的主键
alter table tableName drop primary key
删除主键自动增长
自增长是字段的一个属性,可以通过modify来修改(保证字段没有AUTO_INCREMENT即可): sql语句:alter table 表名  modify 字段   类型; 没有删除AUTO_INCREMENT之前的表user2 删除之后
NuGet不会自动删除旧版的packages吗?
NuGet不会自动删除旧版的packages吗?rn自己新建了一个解决方案,然后没怎么注意packages.confing,反正我看到它的时候它是这样的。rn[code=html]rnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn[/code]rn重点就在很多它都是老版本,比如rn[code=html][/code]rn后来我就发现我的资源管理器packages文件夹下面 会有一个Microsoft.AspNet.Identity.EntityFramework.2.1.0文件夹和一个Microsoft.AspNet.Identity.EntityFramework.1.0文件夹。rn然后把Microsoft.AspNet.Identity.EntityFramework.1.0文件夹删除掉,同时把[code=html][/code]修改为[code=html][/code]。编译运行网站也不会出问题。rn想知道NuGet不会自动删除旧版的packages吗?rn下次为了避免这问题,我在新建项目时应该注意些什么?[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/13.gif][/img]
如何删除表的主键?
如何删除表的主键?
删除表的外键与主键的顺序
为什么我drop一个表时,它说这个表是什么外键,然后删了半天,不知怎么回事,又可以drop了。rn我想问一下关于create table时建立主键和外键的顺序,以及drop table时的顺序。
删除主键时报错,急
主键aaaaaTax_PK存在,rnALTER TABLE [dbo].[tblTAX] DROP CONSTRAINT [aaaaaTax_PK]rn显示Msg 3727, Level 16, State 0, Line 1rnCould not drop constraint. See previous errors.rnMsg 824, Level 24, State 2, Line 1rnSQL Server detected a logical consistency-based I/O error: torn page (expected signature: 0x55555555; actual signature: 0x55545555). It occurred during a read of page (1:39097) in database ID 5 at offset 0x00000013172000 in file 'C:\Hotsauce\data\hotsauce.mdf'. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.rn请问我该怎么办
修改主键&删除主键
注意:我们是没有办法更新主键的,主键必须先删除后添加。 更新主键(name字段添加主键) 1.先删除主键:alter table 表名 drop primary key; 给name字段添加主键 查看表的字段信息
mongodb 删除数据库 删除表
mongodb 删除数据库 use test;    db.dropDatabase();   mongodb删除表   db.mytable.drop();
EF codefirst 删除表 不会再自动创建表 怎么办
因为codefirst 自动创建表 主键 ID有 标识,会自动增长, 高人说把表删掉 再加上 [DatabaseGenerated(DatabaseGeneratedOption.None)]标识,就可以解决这个问题,我把表删掉后,发现EF,并没有自动 增加删除的表,这怎么办呀, rn我想把整个数据库删除了,再试,但是数据太多,不能删除整个数据库。rnrnrn后来又说删除掉 表__MigrationHistory 再试,我就 delete _MigrationHistory 尝试一下,结果报已经存在的表重复。rnrn请教大家 手动删除表后, codefirst 不会再自动创建表 怎么办
mysql自动删除表的问题
在mysql中建了很多表,表名包含日期(例如:20111205),如何将超过10天(即10天之前)的表全部删除掉?
自动删除表的方法是什么?
有谁可以告诉我,在一定时间后,可以自动删除你所建的临时表?rn谢谢啦!请相告.
会话打印机不会自动删除解决方法
此问题一般是服务器上安装了不兼容的打印机驱动导致,服务器打印服务出现异常,直接无法删除,此时可以去到服务器的注册表,手动删除产生的打印机注册表信息,路径是 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers]在这路径下去删除异常的会话打印机信息。然后重新启动打印服务,同时删除引起异常的打印...
redis expires key不会自动删除的问题
最近发现线上的session 服务器每隔一段时间内存占用就达到24G,通过redis info查看发现expires key没有被删除:     db1:keys=101177370,expires=101165505   研究了一下才发现,只有在配置文件中设置了最大内存时候才会调用这个函数,而设置这个参数的意义是,你把当做一个内存而不是数据库。   redis如何删除过期数...
T-SQL 主键删除与主键添加
删除主键 Alter table 表名 Drop Constraint Primary Key 添加主键 Alter table 表名 Add Constraint PrimaryKey Primary Key (主键字段名) 撤消主键 alter table [Student] drop primary key (S_id) 增加主键 alter table [Stu...
Oracle添加主键、删除主键、修改主键
目录 一、前提 二、回归主题,主键的添加、删除等操作 1.有命名主键 1)有命名主键的添加 2)有命名主键的删除 3)有命名主键的修改 2.无命名主键 1)无命名主键的创建 2)无命名主键的删除 3)无命名主键的修改 附加: user_constraints 和user_cons_columns表的作用及其联系 一、前提 主键解释: 一个表...
数据库不能删除主键约束吗?
create table studentrn(rn stuId int primary key,rn stuName varchar2(20) unique,rn stuSex varchar2(3)rn);rnrn--删除姓名的唯一约束rnalter table student drop unique(stuName); --正确rnrn--删除Id的唯一属性rnalter table student drop primary key(stuId); --错误rnrn--抱错:为什么可以删除姓名列的唯一约束,却不能删除Id列的主键约束
删除element 事件是自动删除的吗?
var dom = document.getElementById("e");rn for (var i = 0 ; i < 10000; i++) rn dom.addEventListener("click", fn, false);rn rn document.getElementById("remove").addEventListener("click", function () rn var dom = document.getElementById("e");rn dom.parentNode.removeChild(dom); rn , false);rnrn请问当我删除元素时,游览器会自动删除绑定的事件吗? rn不使用 jQuery 。
mysql会给主键自动建立索引吗?
如题
可以让一个主键自动累加吗
可以让一个主键自动累加吗,可以的话该怎么做
gridview在删除时无法获的主键的值
我用gridview的控件来显示数据,在我对里面的一行数据删除的时候无法获得该行的主键值,不知是什么原因,报错是什么index范围错误,请大家给指点一下,谢谢!急用!rnrnrn SqlConnection con = new SqlConnection("Data Source=ZZF;Initial Catalog=GreenWell;User ID=sa;Password=admin");rn string selstr = "select * from News";rn con.Open();rn SqlDataAdapter sda = new SqlDataAdapter(selstr,con);rn DataSet ds = new DataSet();rn sda.Fill(ds);rn rn this.GridView1.DataSource = ds.Tables[0].DefaultView;rn this.GridView1.DataBind();rn con.Close();rnrnrnprotected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)rnrn string aa = this.GridView1.DataKeys[e.RowIndex].Values[0].ToString();rn rn string str = "DELETE FROM News where NewsID="+aa;rn}rnrnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
sql删除表时出错
错误信息如下:rnrn删除 对于 表“dbo.tb_user”失败。 (Microsoft.SqlServer.Smo)。rnrn执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)rnrnrn已超过了锁请求超时时段。 (.Net SqlClient Data Provider)rnrn错误编号:1222。rnrnrn(而且我查询该表的时候也是查询不了。。什么问题?)查其他表是正常的。。。
oracle删除表时的问题
我以前创建了一张表,然后用drop语句把它删除了,现在要重新创建这张表,但是报错了,上面写着不存在表和视图,怎么会这样呢?
parameter为什么只有create,没有删除,难道不用删除吗?
我在一个程序中看到parameter被create后,之后没见到在哪里删除了,难道不会造成内存的泄漏?
MySQL 不会超时自动断开吗?
MySQL 5.0 用 MySQL Administrator 选择 Startup Variable 进入 Networking 里面很多东西不能修改是怎么回事,麻烦知情者告知。
Mysql删除表时锁表
Mysql删除表时锁表
删除表时遇到的问题
rn dim sql,table_name as stringrn set db1=opendatabase(.......)rn 我要删除某个表是用:sql="DROP TABLE" & table_namern db1.Execute sqlrn 提示错误: "syntax error in DROP TABLE or DROP INDEX"rn 应该怎么改?谢谢!
删除表时出问题?
在我的工程中,有全局的ADO三巨头rnrn _ConnectionPtr pMyConnect;rn _RecordsetPtr m_pRecordset1,m_pRecordset2,m_pRecordset3,rn _CommandPtr m_pCommand;rnrn其中每个RecordsetPtr 管理一个表,rnrnm_pCommand.CreateInstance(__uuidof(Command));rnm_pCommand->ActiveConnection = pMyConnect; // pMyConnect已经成功连接到数据库rnCString temp1="drop table YYYY" rnm_pCommand->CommandText =_bstr_t(temp1);rnm_pCommand->CommandType=adCmdText;rnm_pCommand->Parameters->Refresh();rnm_pCommand->Execute(NULL, NULL,adCmdUnknown); //rnrnrn当YYYY表非空时,执行没问题rn但当YYYY无记录时,执行出现问题?为什么? 这样有问题吗?rnrnrnrnrn
删除表和记录时的错误
删除某个表和记录时,均有下面的提示:rnORA-00054 resource busy and acquire with NOWAIT specifie rnOracle安装作Unix下,请问如何解决。rnrn因为是新手,最好附上解决的步骤,谢谢!
如何删除表的主键和自增长导入数据后再恢复主键和自增长?
因为表有自增长的主键, 导入数据的时候不方便,虽然设置了identity_insert XX on可还要显示指定插入的字段列表,rnrnrn所以,我想先删除自增长和主键设置, 然后插入数据 ,最后再恢复主键和自增长设置,可不知道怎么做rn
删除表中非主键字段重复的数据?
BLE中有一个字段CODE(不是主键字段),CODE字段里面可能有很多组重复的数据,现在我想把那些重复的数据就留一条,其他的删除,要的那条数据随便哪条都可以,只要留下重复中的其中一条就可以了,请问怎么删除?
如何删除表中已经不存在的主键(急!)
有一个表,两个字段:id,id_foreign.其中id_foreign作为外键引用id的值(也就是自相关)。现在有一个问题,id_foreign引用的主键不存在,请问如何查询出这些不存在的主键并把这条记录删除?在线等求助,谢谢!
根据复合主键删除表中重复数据
一个数据库表中,开始可能随便放了一些数据,之后把多个字段定为复合主键(表示这几个字段组合后记录唯一)后,这几个字段组合起来,表中有重复的行,即垃圾数据,需要清理!   delete from A_TABLE where (COL_1,COL_2,COL_3,COL_4) in (select COL_1,COL_2,COL_3,COL_4 from A_TABLE ...
请问:SQL Anywhere5。0数据库在建数据库主键时也自动建立对应主键索引吗?
SQL Anywhere5。0数据库在建数据库主键时也自动建立对应主键索引吗?rn感觉在anywhere中使用索引不太好使?速度没有明显提高
怎样自动删除表中的记录??
我们的web服务器webshpere会夜里0点时候自动重启一次服务rn但是目前我们怕会在用户登录表中有数据,rn因此想在0点生启了服务后把这个登录表中的数据清除掉,rnrn让它自动清除.rn但是又找不着触发点,大家给点建议!!
oracle建表时允许双主键吗?
如题
删除主键表中的数据时,外键表中的数据也自动删除
比如说现在有一个A表,id为主键,B和C表中的id是作为外键引用A表的id,当删除A表中的数据时,B,C两个表中的相应数据也能自动删除,不知道怎么搞
用drop删除表 能同时删除多个表吗?
用drop删除表 能同时删除多个表吗?
多主键删除
多主键删除(ssh自己写的并整理一共大家参考,不需此行
删除主键约束不成功
在创建表时已经定义了主键信息:create table productinfo1 (productid varchar2(10),productname varchar2(10),productprice number(8,2),quantity number(10),rncategory varchar2(10),origin varchar2(100),primary key (productid));rn但是在我想删除该主键:alter table productinfo1 drop constraints productid;rn提示不存在约束条件,请大神帮忙看看是什么原因
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件