Mysql/Maria 고유 키 표현
mysql/mariadb 데이터베이스에 키가 어떻게 저장되어 있는지 알고 싶습니다.information_schema.columns에 저장되어 있는 타입은 PRI, MUL 및 UNI로 각각 프라이머리 키, 키, 유니크 키를 의미합니다.
하지만 꼭 어렵지만은 않아요.
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) 그 키 타입이 Unique임을 검출하려면 어떻게 해야 합니까?Descript 명령어는 유형이 UNI가 아닌 MUL(단순 키)임을 나타냅니다.
2) 키 쌍(예: 왼쪽 키와 오른쪽 키)은 어디에 저장됩니까?
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
그information_schema.columns
에 제약사항이 되는 키가 아닌 컬럼을 나타냅니다.열은 구속조건에 사용되므로 다른 열을 사용해야 합니다.information_schema
표를 참조해 주세요.
다음 조회를 사용하여 제약 조건에 대한 자세한 정보를 얻을 수 있습니다.
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE TK
ON TC.CONSTRAINT_SCHEMA = TK.CONSTRAINT_SCHEMA
AND TC.TABLE_SCHEMA = TK.TABLE_SCHEMA
AND TC.TABLE_NAME = TK.TABLE_NAME
AND TC.CONSTRAINT_NAME = TK.CONSTRAINT_NAME
언급URL : https://stackoverflow.com/questions/25516387/mysql-maria-unique-keys-representation
'programing' 카테고리의 다른 글
JavaScript를 사용하여 줄바꿈 문자를 포함하는 JSON 문자열을 이스케이프하려면 어떻게 해야 합니까? (0) | 2022.10.26 |
---|---|
지정한 DSN에 드라이버와 응용 프로그램 간의 아키텍처가 일치하지 않습니다.자바 (0) | 2022.10.26 |
mysql_* 함수를 사용하여 MySQL 결과 세트를 여러 번 루프하려면 어떻게 해야 합니까? (0) | 2022.10.26 |
jQuery를 사용하여 드롭다운 목록(선택 상자)에서 선택한 텍스트를 가져옵니다. (0) | 2022.10.26 |
PHP를 사용하여 임의 16진수 색상 코드 생성 (0) | 2022.10.26 |