MySQL数据库中怎么获取库中无主键的表
本篇文章为大家展示了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数据库中怎么获取库中无主键的表,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。