SQL 키(MUL vs PRI vs UNI)
MUL
,PRI
★★★★★★★★★★★★★★★★★」UNI
MySQL 서 my?
다음 명령을 사용하여 MySQL 쿼리를 작업 중입니다.
desc mytable;
중 는 '이렇게 하다'로되어 있습니다.MUL
은 ,, 른, 른으로 됩니다.UNI
★★★★★★★★★★★★★★★★★」PRI
.
가 쇠가......PRI
테이블마다 1개의 레코드만 그 키에 관련지을 수 있습니다.가 음음음음 MUL
그럼 관련된 레코드가 여러 개 있을 수 있다는 뜻인가요?
합니다.mytable
.
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| courseid | int(11) | YES | MUL | NULL | |
| dept | char(3) | YES | | NULL | |
| coursenum | char(4) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
DESCRIBE <table>;
이는 사실상 다음 항목에 대한 지름길입니다.
SHOW COLUMNS FROM <table>;
어느 경우든 "Key" 속성에는 다음 세 가지 값이 있습니다.
PRI
UNI
MUL
「 」의 PRI
★★★★★★★★★★★★★★★★★」UNI
매우 명확합니다.
PRI
> 프라이머리 키= > 머UNI
> => 고유키 > 고유키
번째 ★★★★★★★★★★★★★★★★★★★★★★★★★★」MUL
(문의하신)는 기본적으로 프라이머리 키도 일의 키도 아닌 인덱스입니다.이 이름은 "multiple"에서 유래합니다. 같은 값의 여러 번 발생할 수 있기 때문입니다.MySQL 문서에서 직접:
if
Key
MUL
컬럼은 컬럼 내에서 특정 값의 여러 오카렌스를 허용하는 비고유 인덱스의 첫 번째 컬럼입니다.
마지막 경고도 있습니다.
값이 높은 우선순위를 가진 합니다.
PRI
,UNI
,MUL
.
일반적으로 MySQL 문서는 매우 우수합니다.의심스러울 때는 확인하세요!
즉, 필드가 고유하지 않은 인덱스의 일부임을 의미합니다.발행할 수 있습니다.
show create table <table>;
테이블 구조에 대한 자세한 내용을 보려면 다음과 같이 하십시오.
MySQL의 MUL, PRI 및 UNI란 무엇입니까?
MySQL 5.7 매뉴얼에서 다음 내용을 참조하십시오.
- 키가 PRI일 경우 열은 PRIMAY KEY이거나 여러 열의 PRIMAY KEY 열 중 하나입니다.
- Key가 UNI일 경우 열은 UNIQUIC 인덱스의 첫 번째 컬럼입니다(UNIQUIC 인덱스는 여러 NULL 값을 허용하지만 NULL 필드를 선택하면 해당 컬럼이 NULL을 허용하는지 여부를 알 수 있습니다).
- 키가 MUL인 경우 열은 고유하지 않은 인덱스의 첫 번째 열로, 열 내에서 특정 값의 여러 발생이 허용됩니다.
라이브 예시
컨트롤 그룹에는 PRI, MUL, UNI가 없습니다.
mysql> create table penguins (foo INT);
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
1개의 컬럼과 1개의 컬럼에 인덱스가 있는 테이블에는 MUL이 있습니다.
mysql> create table penguins (foo INT, index(foo));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
프라이머리 키 컬럼이 있는 테이블에는 PRI가 있습니다.
mysql> create table penguins (foo INT primary key);
Query OK, 0 rows affected (0.02 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | NO | PRI | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
고유 키 컬럼이 있는 테이블에는 UNI가 있습니다.
mysql> create table penguins (foo INT unique);
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | UNI | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
foo와 bar를 포함하는 인덱스가 있는 테이블은 foo에만 MUL이 있습니다.
mysql> create table penguins (foo INT, bar INT, index(foo, bar));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
| bar | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
두 열에 두 개의 개별 인덱스가 있는 테이블은 각각에 대해 MUL을 가집니다.
mysql> create table penguins (foo INT, bar int, index(foo), index(bar));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
| bar | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
인덱스가 세 열에 걸쳐 있는 테이블은 첫 번째에 MUL이 있습니다.
mysql> create table penguins (foo INT,
bar INT,
baz INT,
INDEX name (foo, bar, baz));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
| bar | int(11) | YES | | NULL | |
| baz | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
다른 테이블의 기본 키를 참조하는 외부 키가 있는 테이블은 MUL입니다.
mysql> create table penguins(id int primary key);
Query OK, 0 rows affected (0.01 sec)
mysql> create table skipper(id int, foreign key(id) references penguins(id));
Query OK, 0 rows affected (0.01 sec)
mysql> desc skipper;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
신피질에 꽂고 다이얼을 "frappe"로 맞추세요.
Mul에게 이것은 나에게도 도움이 되는 문서였습니다 - http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question
「MUL은, 복수의 행에 같은 값을 설정할 수 있는 것을 의미합니다.즉, UNIque 키가 아닙니다."
예를 들어, Post와 Comment라는 두 가지 모델이 있다고 가정합니다.게시물은 댓글과 has_many 관계가 있습니다.댓글 테이블에는 MUL 키(Post id)가 붙어 있습니다.이는 다수의 코멘트를 같은 투고에 할당할 수 있기 때문입니다.
UNI: UNIE의 경우:
- 레코드를 고유하게 식별하기 위한 테이블의 하나 이상의 열 집합입니다.
- 테이블에는 여러 개의 고유 키를 포함할 수 있습니다.
- 프라이머리 키와 마찬가지로 원하는 값을 사용할 수 있지만 프라이머리 키가 허용하지 않는1개의 늘 값을 받아들일 수 있습니다.
PRI: 프라이머리:
- 레코드를 고유하게 식별하기 위한 테이블의 하나 이상의 열 집합이기도 합니다.
- 테이블에는 프라이머리 키를 1개만 사용할 수 있습니다.
- 이는 하나의 값을 허용하지만 null 값을 허용하지 않는 UNIQURE 키와 매우 유사합니다.
MUL: 다중의 경우:
- 또한 레코드를 고유하게 식별하지 않는 테이블의 하나 이상의 열 집합입니다.
- 테이블에는 여러 개의 MULTIPLE 키를 사용할 수 있습니다.
- 인덱스 또는 외부 키 추가 시 테이블에 생성할 수 있으며 null 값은 사용할 수 없습니다.
- 컬럼에 중복된 엔트리를 허용합니다.
- MUL 열 유형을 지정하지 않으면 일반 열과 비슷하지만 늘 엔트리를 허용할 수 있습니다.이러한 엔트리를 제한하려면 지정해야 합니다.
- 열에 인덱스를 추가하거나 외부 키를 추가하면 자동으로 MUL 키 유형이 추가됩니다.
간단한 말로 이해합시다.
- PRI - 프라이머리 키이며 레코드를 일의로 식별하는 데 사용됩니다.
- UNI - 고유 키이며 레코드를 고유하게 식별하는 데도 사용됩니다.프라이머리 키와 비슷하지만 테이블에는 여러 개의 고유 키와 하나의 null 값을 사용할 수 있습니다.반면 테이블에는 프라이머리 키를 하나만 사용할 수 있으며 null을 프라이머리 키로 저장할 수 없습니다.
- MUL - 고유한 제약조건이 없으며 테이블에는 여러 개의 MUL 열을 포함할 수 있습니다.
주의: 이 키들은 개념적으로 좀 더 깊이가 있지만 시작하기에 좋습니다.
언급URL : https://stackoverflow.com/questions/5317889/sql-keys-mul-vs-pri-vs-uni
'source' 카테고리의 다른 글
MySQL 설정 및 Dockerfile 내 덤프 가져오기 (0) | 2023.01.09 |
---|---|
빈 어레이 항목을 건너뛰면서 어레이를 삽입하려면 어떻게 해야 합니까? (0) | 2023.01.09 |
지정된 날짜에서 연도 가져오기 php (0) | 2023.01.09 |
은행 정보를 데이터베이스에 저장하는 모범 사례 (0) | 2023.01.09 |
python setup.py이 Travis CI에서 잘못된 명령어 'bdist_wheel'이라고 말하는 이유는 무엇입니까? (0) | 2023.01.09 |