当前位置: 首页 > 科技观察

MySQL数据库如何快速获得库中无主键的表

时间:2023-03-21 15:47:03 科技观察

MySQL数据库如何快速获取数据库中没有主键的表?c.COLUMN_NAME,c.ORDINAL_POSITIONFROMINFORMATION_SCHEMA.TABLE_CONSTRAINTSASt,INFORMATION_SCHEMA.KEY_COLUMN_USAGEAScWHEREt.TABLE_NAME=c.TABLE_NAMEANDt.CONSTRAINT_TYPE='PRIMARYKEY'ANDt.TABLE_NAME=''ANDt.TABLE_SCHEMA='<'TABLE_SCHEMA>查看无主键表查看没有主键表)主键表在Innodb存储引擎中,每张表都有一个主键,数据按照主键的顺序组织存储。这种类型的表成为索引组织表。如果在定义表时没有定义主键,则将按以下方式选择或创建主键:(1)首先判断表中是否存在“非空唯一索引”。如果只有一个“非空唯一索引”,那么这个索引就是主键。如果有多个“非空唯一索引”,则根据索引索引的优先顺序,选择最先定义的非空唯一索引作为主键。(2)如果表中没有“非空唯一索引”,则自动创建一个6字节的指针作为主键。如果主键索引只有一个索引键,可以使用_rowid显示主键。实验测试如下:删除测试表DROPTABLEIFEXISTSt1;创建测试表CREATETABLE`t1`(`id`int(11)NOTNULL,`c1`int(11)DEFAULTNULL,UNIQUEuni_id(id),INDEXidx_c1(c1))ENGINE=插入测试数据INSERTINTOt1(id,c1)SELECT1,1;INSERTINTOt1(id,c1)SELECT2,2;INSERTINTOt1(id,c1)SELECT4,4;查看数据And_rowidSELECT*,_rowidFROMt1;可以发现上面的_rowid和id的值是一样的,因为id列是表中第一个唯一且NOTNULL的索引。