这篇文章将为大家详细讲解有关mysql如何快速获得库中无主键的表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
 
1、查看表主键信息
 
--查看表主键信息
SELECT
 t.TABLE_NAME,
 t.CONSTRAINT_TYPE,
 c.COLUMN_NAME,
 c.ORDINAL_POSITION
FROM
 INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c
WHERE
 t.TABLE_NAME = c.TABLE_NAME
 AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'
 AND t.TABLE_NAME = '<TABLE_NAME>'
 AND t.TABLE_SCHEMA = '<TABLE_SCHEMA>';
 
2、查看无主键表
 
--查看无主键表
SELECT table_schema, table_name,TABLE_ROWS
FROM information_schema.tables
WHERE (table_schema, table_name) NOT IN (
SELECT DISTINCT table_schema, table_name
FROM information_schema.columns
WHERE COLUMN_KEY = 'PRI'
)
AND table_schema NOT IN ('sys', 'mysql', 'information_schema', 'performance_schema');
 
3、无主键表
 
在Innodb存储引擎中,每张表都会有主键,数据按照主键顺序组织存放,该类表成为索引组织表 Index Ogranized Table
 
如果表定义时没有显示定义主键,则会按照以下方式选择或创建主键:
 
1) 先判断表中是否有"非空的唯一索引",如果有
 
如果仅有一条"非空唯一索引",则该索引为主键
 
如果有多条"非空唯一索引",根据索引索引的先后顺序,选择第一个定义的非空唯一索引为主键。
 
2) 如果表中无"非空唯一索引",则自动创建一个6字节大小的指针作为主键。

dawei

【声明】:固原站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。