gpt4 book ai didi

Mysql/Maria 唯一键表示

转载 作者:行者123 更新时间:2023-11-29 04:00:47 24 4
gpt4 key购买 nike

我想知道 key 是如何存储在 mysql/mariadb 数据库中的。据我所知,information_schema.columns 中存储了一些类型:PRIMULUNI,分别表示主键、键和唯一键.

但事实并非如此。

MariaDB [test]> CREATE TABLE test_table(leftkey int unsigned, rightkey int unsigned, unique key(leftkey, rightkey));

MariaDB [test]> DESC test_table;
+----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| leftkey | int(10) unsigned | YES | MUL | NULL | |
| rightkey | int(10) unsigned | YES | | NULL | |
+----------+------------------+------+-----+---------+-------+

所以我有两个问题:

1) 如何检测 key 类型是否唯一? Describe 命令显示类型是 MUL,而不是 UNI(这意味着简单 key )。

2) key 对(例如:leftkey 和 rightkey)存储在哪里?

最佳答案

不要为 DESCRIBE 而烦恼,因为正如您所发现的,它在某些情况下会提供模棱两可的信息。

只需使用SHOW CREATE TABLE。这将准确显示将重新创建表的 SQL 语法。然后您就可以确切地知道存在哪些键以及什么类型。

mysql> show create table test_table\G
*************************** 1. row ***************************
Table: test_table
Create Table: CREATE TABLE `test_table` (
`leftkey` int(10) unsigned DEFAULT NULL,
`rightkey` int(10) unsigned DEFAULT NULL,
UNIQUE KEY `leftkey` (`leftkey`,`rightkey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

您还可以查询 INFORMATION_SCHEMA.STATISTICS 以获得更精确的信息。

mysql> select * from information_schema.statistics where table_name='test_table'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: test_table
NON_UNIQUE: 0
INDEX_SCHEMA: test
INDEX_NAME: leftkey
SEQ_IN_INDEX: 1
COLUMN_NAME: leftkey
COLLATION: A
CARDINALITY: 0
SUB_PART: NULL
PACKED: NULL
NULLABLE: YES
INDEX_TYPE: BTREE
COMMENT:
INDEX_COMMENT:
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: test_table
NON_UNIQUE: 0
INDEX_SCHEMA: test
INDEX_NAME: leftkey
SEQ_IN_INDEX: 2
COLUMN_NAME: rightkey
COLLATION: A
CARDINALITY: 0
SUB_PART: NULL
PACKED: NULL
NULLABLE: YES
INDEX_TYPE: BTREE
COMMENT:
INDEX_COMMENT:

或者 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 表的信息略有不同:

mysql> select * from information_schema.key_column_usage where table_name = 'test_table'\G
*************************** 1. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: test
CONSTRAINT_NAME: leftkey
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: test_table
COLUMN_NAME: leftkey
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL
*************************** 2. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: test
CONSTRAINT_NAME: leftkey
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: test_table
COLUMN_NAME: rightkey
ORDINAL_POSITION: 2
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL

关于Mysql/Maria 唯一键表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com