关于MySQL主键的约束
发布时间:2022-08-09 12:37:49 所属栏目:MySql教程 来源:互联网
导读:首先来复现下问题,我们连接到数据库test,然后创建表test_data2. mysql use test mysql create table test_data2 (id int ,name varchar(30)); Query OK, 0 rows affected (0.05 sec) 接着创建一个主键,命名为idx_pk_id,从执行情况来看,MySQL是正常处理了
首先来复现下问题,我们连接到数据库test,然后创建表test_data2. mysql> use test mysql> create table test_data2 (id int ,name varchar(30)); Query OK, 0 rows affected (0.05 sec) 接着创建一个主键,命名为idx_pk_id,从执行情况来看,MySQL是正常处理了。 mysql> alter table test_data2 add primary key idx_pk_id(id); Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 为了进一步对比,我们添加一个唯一性索引(辅助索引),来看看它们的差异。 mysql> alter table test_data2 add unique key idx_uniq_name(name); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 查看主键命名方法1:使用show indexes命令 要查看MySQL索引的信息,使用show indexes from test_data2就可以。 mysql> show indexes from test_data2G *************************** 1. row *************************** Table: test_data2 Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: id Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: test_data2 Non_unique: 0 Key_name: idx_uniq_name Seq_in_index: 1 Column_name: name Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 2 rows in set (0.00 sec) 查看主键命名方法2:使用数据字典information_schema.statistics 使用命令的方式不够通用,我们可以使用数据字典information_schema.statistics来进行数据提取。 mysql> select *from information_schema.statistics where table_schema='test' and table_name='test_data2' limit 20 G *************************** 1. row *************************** TABLE_CATALOG: def TABLE_SCHEMA: test TABLE_NAME: test_data2 NON_UNIQUE: 0 INDEX_SCHEMA: test 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: test TABLE_NAME: test_data2 NON_UNIQUE: 0 INDEX_SCHEMA: test INDEX_NAME: idx_uniq_name SEQ_IN_INDEX: 1 COLUMN_NAME: name COLLATION: A CARDINALITY: 0 SUB_PART: NULL PACKED: NULL NULLABLE: YES INDEX_TYPE: BTREE COMMENT: INDEX_COMMENT: 2 rows in set (0.00 sec) 查看主键命名方法3:使用show create table 命令 如果查看建表语句,会发现主键名已经被过滤掉了。 mysql> show create table test_data2G *************************** 1. row *************************** Table: test_data2 Create Table: CREATE TABLE `test_data2` ( `id` int(11) NOT NULL, `name` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uniq_name` (`name`) (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |