工具篇:mysql(一)——key

 

1. primary key

表的主键,同时会建立索引。

mysql中每张table最多有一个primary key,也可以没有。primary key可以包含一个column,也可以包含多个column。当包含多个column时,这些column的组合必须在table中唯一。

2. unique key

唯一键,可以定义多个,也可以不定义。一个unique key可以包含一个column,也可以包含多个column。unique key对应列或列组合的值必须在表中唯一。

3. key

可以定义多个,也可以不定义。可以包含一个column或多个column,都可以有重复值。

information_schema.key_column_usage中可以查询每个table中primary key和unique key的constraint_name、column_name。如果包含多个column,ordinal_position记录每个column在key中的位置。

information_schema.columns可以查询每个table中各个column的信息,column_key表示该列的key属性,取值有PRI、UNI、MUL和空四种。PRI表示该列是单列主键或联合主键的一部分,UNI表示该列是单列unique key,MUL表示该列是联合unique key的第一列或联合key的第一列,或就是一个单列key。

information_schema.statistics可以查询所有key/index的信息,seq_in_index表示column_name在索引中的序号。

比如有如下table test

create table `test` (
`id` varchar(10) not null,
`name` varchar(10) not null,
`age` tinyint not null,
`staffNo` tinyint not null,
`dept` varchar(5) not null,
`team` varchar(5) default null,
`gender` varchar(5) not null,
`home` varchar(30) default null,
`zipcode` varchar(6) not null,
`company` varchar(10) not null,
key(`company`),
unique key(`zipcode`),
primary key(`name`,`age`, `id`),
unique key(`dept`,`staffNo`,`team`),
key (`gender`,`home`)
);
select COLUMN_NAME, COLUMN_KEY from information_schema.columns where  table_schema='test' and table_name = 'test'; 

工具篇:mysql(一)——key_第1张图片

select CONSTRAINT_NAME, COLUMN_NAME, ORDINAL_POSITION from information_schema.key_column_usage where table_schema = 'test' and table_name='test';

工具篇:mysql(一)——key_第2张图片

SELECT non_unique, index_name, seq_in_index, column_name  from  information_schema.STATISTICS where  TABLE_SCHEMA = 'test' and TABLE_NAME = 'test' order by INDEX_NAME, SEQ_IN_INDEX;

工具篇:mysql(一)——key_第3张图片

你可能感兴趣的:(工具,数据库,mysql)