DBA技術(shù)分享--MySQL三個(gè)關(guān)于主鍵PrimaryKeys的查詢
作者:雪竹頻道
本篇給大家分享作為DBA日常工作中,關(guān)于MySQL主鍵的3個(gè)常用查詢語句,希望能夠幫助到你!
概述
分享作為DBA日常工作中,關(guān)于mysql主鍵的3個(gè)常用查詢語句,分別如下:
- 列出 MySQL 數(shù)據(jù)庫中的所有主鍵 (PK) 及其列。
- 列出用戶數(shù)據(jù)庫(模式)中沒有主鍵的表。
- 查詢顯示了用戶數(shù)據(jù)庫(模式)中有多少?zèng)]有主鍵的表,以及占總表的百分比。
列出 MySQL 數(shù)據(jù)庫中的所有主鍵 (PK) 及其列
select tab.table_schema as database_schema,
sta.index_name as pk_name,
sta.seq_in_index as column_id,
sta.column_name,
tab.table_name
from information_schema.tables as tab
inner join information_schema.statistics as sta
on sta.table_schema = tab.table_schema
and sta.table_name = tab.table_name
and sta.index_name = 'primary'
where tab.table_schema = 'your database name'
and tab.table_type = 'BASE TABLE'
order by tab.table_name,
column_id;
列說明:
- table_schema - PK 數(shù)據(jù)庫(模式)名稱。
- pk_name - PK 約束名稱。
- column_id - 索引 (1, 2, ...) 中列的 id。2 或更高表示鍵是復(fù)合鍵(包含多于一列)。
- column_name - 主鍵列名。
- table_name - PK 表名。
輸出示例:
輸出結(jié)果說明:
- 一行:代表一個(gè)主鍵列。
- 行范圍:數(shù)據(jù)庫中所有 PK 約束的列(模式)。
- 排序方式:表名、列id。
列出用戶數(shù)據(jù)庫(模式)中沒有主鍵的表
select tab.table_schema as database_name,
tab.table_name
from information_schema.tables tab
left join information_schema.table_constraints tco
on tab.table_schema = tco.table_schema
and tab.table_name = tco.table_name
and tco.constraint_type = 'PRIMARY KEY'
where tco.constraint_type is null
and tab.table_schema not in('mysql', 'information_schema',
'performance_schema', 'sys')
and tab.table_type = 'BASE TABLE'
-- and tab.table_schema = 'sakila' -- put schema name here
order by tab.table_schema,
tab.table_name;
注意:如果您需要特定數(shù)據(jù)庫(模式)的信息,請(qǐng)取消注釋 table_schema 行并提供您的數(shù)據(jù)庫名稱。
列說明:
- database_name - 數(shù)據(jù)庫(模式)名稱。
- table_name - 表名。
示例:
輸出結(jié)果說明:
- 一行:表示數(shù)據(jù)庫中沒有主鍵的一張表(模式)。
- 行范圍:數(shù)據(jù)庫中沒有主鍵的所有表(模式)。
- 排序方式:數(shù)據(jù)庫(模式)名稱、表名。
查詢顯示了用戶數(shù)據(jù)庫(模式)中有多少?zèng)]有主鍵的表,以及占總表的百分比
select count(*) as all_tables,
count(*) - count(tco.constraint_type) as no_pk_tables,
cast( 100.0*(count(*) - count(tco.constraint_type)) / count(*)
as decimal(5,2)) as no_pk_percent
from information_schema.tables tab
left join information_schema.table_constraints tco
on tab.table_schema = tco.table_schema
and tab.table_name = tco.table_name
and tco.constraint_type = 'PRIMARY KEY'
where tab.table_type = 'BASE TABLE'
-- and tab.table_schema = 'database_name' -- put your database name here
and tab.table_schema not in('mysql', 'information_schema',
'sys', 'performance_schema');
列說明:
- all_tables - 數(shù)據(jù)庫中所有表的數(shù)量
- no_pk_tables - 沒有主鍵的表數(shù)
- no_pk_percent - 所有表中沒有主鍵的表的百分比
示例:
責(zé)任編輯:姜華
來源:
今日頭條