本篇文章为大家展示了MySQL数据库中怎么获取库中无主键的表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1. 查看表主键信息

查看表主键信息

SELECTt.TABLE_NAME,t.CONSTRAINT_TYPE,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='<TABLE_NAME>'ANDt.TABLE_SCHEMA='<TABLE_SCHEMA>';

2. 查看无主键表

查看无主键表

SELECTtable_schema,table_name,TABLE_ROWSFROMinformation_schema.tablesWHERE(table_schema,table_name)NOTIN(SELECTDISTINCTtable_schema,table_nameFROMinformation_schema.columnsWHERECOLUMN_KEY='PRI')ANDtable_schemaNOTIN('sys','mysql','information_schema','performance_schema');

3. 无主键表

在Innodb存储引擎中,每张表都会有主键,数据按照主键顺序组织存放,该类表成为索引组织表 Index Ogranized Table

如果表定义时没有显示定义主键,则会按照以下方式选择或创建主键:

(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;

查看数据和_rowid

SELECT*,_rowidFROMt1;

上述内容就是MySQL数据库中怎么获取库中无主键的表,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。