约束信息保存在information_schema.table_constraints表中
select * from information_schema.table_constraints where table_schema = "pmx"; Empty set (0.00 sec)
索引信息保存在information_schema.statistics表中
select * from information_schema.statistics where table_schema = 'pmx'; Empty set (0.00 sec)
mysql的约束分为主键约束,外键约束和唯一性约束。
创建具有主键的表t1
Table: t1 Create Table: CREATE TABLE `t1` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
在创建约束时,mysql会创建该字段的索引
select * from information_schema.table_constraints where table_schema = "pmx"; +--------------------+-------------------+-----------------+--------------+------------+-----------------+ | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | +--------------------+-------------------+-----------------+--------------+------------+-----------------+ | def | pmx | PRIMARY | pmx | t1 | PRIMARY KEY | +--------------------+-------------------+-----------------+--------------+------------+-----------------+
select * from information_schema.statistics where table_schema = 'pmx'\G; *************************** 1. row *************************** TABLE_CATALOG: def TABLE_SCHEMA: pmx TABLE_NAME: t1 NON_UNIQUE: 0 INDEX_SCHEMA: pmx INDEX_NAME: PRIMARY SEQ_IN_INDEX: 1 COLUMN_NAME: id COLLATION: A CARDINALITY: 0 SUB_PART: NULL PACKED: NULL NULLABLE: INDEX_TYPE: BTREE COMMENT: INDEX_COMMENT:
为t1添加唯一性约束
alter table t1 add column a int unique key;
查看约束和索引
select * from information_schema.table_constraints where table_schema = "pmx"; +--------------------+-------------------+-----------------+--------------+------------+-----------------+ | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | +--------------------+-------------------+-----------------+--------------+------------+-----------------+ | def | pmx | PRIMARY | pmx | t1 | PRIMARY KEY | | def | pmx | a | pmx | t1 | UNIQUE | +--------------------+-------------------+-----------------+--------------+------------+-----------------+
select * from information_schema.statistics where table_schema = 'pmx'\G; *************************** 1. row *************************** TABLE_CATALOG: def TABLE_SCHEMA: pmx TABLE_NAME: t1 NON_UNIQUE: 0 INDEX_SCHEMA: pmx INDEX_NAME: PRIMARY SEQ_IN_INDEX: 1 COLUMN_NAME: id COLLATION: A CARDINALITY: 0 SUB_PART: NULL PACKED: NULL NULLABLE: INDEX_TYPE: BTREE COMMENT: INDEX_COMMENT: *************************** 2. row *************************** TABLE_CATALOG: def TABLE_SCHEMA: pmx TABLE_NAME: t1 NON_UNIQUE: 0 INDEX_SCHEMA: pmx INDEX_NAME: a SEQ_IN_INDEX: 1 COLUMN_NAME: a COLLATION: A CARDINALITY: 0 SUB_PART: NULL PACKED: NULL NULLABLE: YES INDEX_TYPE: BTREE COMMENT: INDEX_COMMENT:
指定唯一性约束的名字
先创建字段
alter table t1 add column b int;
然后指定约束名
alter table t1 add unique key b_unique;