约束和索引

约束信息保存在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;

猜你喜欢

转载自www.cnblogs.com/bibiafa/p/9237889.html