mysql이 기본 키에 null이 아닌 제약 조건을 넣었지만 고유 키는 하나의 열에 하나의 null 값을 허용한다는 것을 읽었다. 그렇다면 왜 기본 키도 null 값을 허용합니까 ??기본 키가 null 값을 포함 할 수없는 이유는 무엇입니까?
답변
PRIMARY KEY 열은 UNIQUE 및 NOT NULL과 같으며 기본적으로 색인화 된 열입니다.
기본 키가 테이블의 행을 식별하므로 다른 행에 동일한 키가 없어야하므로 UNIQUE 여야합니다.
또한 기본 키는 다른 테이블에서 FOREIGN KEY로 사용될 수 있습니다. 따라서 다른 테이블이 참조 된 테이블의 행을 fin 할 수 있도록 NULL이 될 수 없습니다. 예를 들어
:
CREATE person{
id INT PRIMARY KEY, -- equals UNIQUE NOT NULL
name VARCHAR(20)
};
CREATE family{
id INT PRIMARY KEY, -- equals UNIQUE NOT NULL
menber_id INT FOREIGN KEY REFERENCE person(id)
};
+1 외래 키 –
기본 키는 레코드를 고유하게 식별해야합니다. 즉, 각 레코드는 "X와 동일한 키를 가진 레코드"라는 용어로 표현 될 수 있습니다. null
은 어떤 값과도 같지 않으므로 기본 키로 사용할 수 없습니다.
이나 넣어 밀어 다른 말로하면, 'NULL'은 실제로 value_의 _ 값을 나타내며, 그 자체의 값은 아닙니다. – Alnitak
기본 키는 고유 키는 SQL 규칙에 따라 null 값을 포함 할 수 있지만 null 일 수 없습니다 테이블에 고유 행을 식별하는 데 사용됩니다. 이 글은 학생을 식별하는 데 사용됩니다 여기에
Roll_NO | Name | Class | Address | School_Bus_ID
, Roll_NO가에 null 값을 포함 할 수 없습니다 예를 들어
,테이블은 다음과 같이 학교 어린이 데이터의 기록을 포함 학교. School_Bus_ID에는 학교 버스가 아닌 자체 전송 수단을 선택할 수있는 일부 null 값이 포함될 수 있습니다.
이 기본 키 및 고유 키의 주된 차이점이다.
OP는 이미 차이점이 있음을 알고 있습니다. 그들은 이유를 묻습니다. –
null 값이 알 수있는 또 다른 튜플의 기본 키의 값과 동일 할 수 있기 때문에
- 1. MySql : 외래 키가 null 인 이유는 무엇입니까?
- 2. 기본 클래스의 멤버에게 값을 할당 할 수없는 이유는 무엇입니까?
- 3. 블로그를 포함 할 수없는 이유는 무엇입니까?
- 4. 기본 키가 내 쿼리를 느리게하는 이유는 무엇입니까?
- 5. 세션 값을 업데이트 할 수없는 이유는 무엇입니까?
- 6. java.util.Set에서 값을 반환 할 수없는 이유는 무엇입니까?
- 7. 지도 값을 처리 할 수없는 이유는 무엇입니까?
- 8. 각 테이블마다 기본 키가 있어야하는 이유는 무엇입니까?
- 9. 데이터베이스 테이블에 기본 키가 필요한 이유는 무엇입니까?
- 10. C#이 null 값을 잠글 수없는 이유는 무엇입니까?
- 11. mongoid가 포함 된 문서를 쿼리 할 수없는 이유는 무엇입니까?
- 12. 기본 키가 아닌 조건을 기반으로 열을 업데이트 할 수없는 이유
- 13. 메모리 테이블의 기본 키가 HASH 여야하며, 그 이유는 무엇입니까?
- 14. 이미지를로드 할 수없는 이유는 무엇입니까?
- 15. 열 목록에서 참조 할 수없는 이유는 무엇입니까?
- 16. 'On Error'가 키가 null 인 것처럼 항상 트리거되는 이유는 무엇입니까?
- 17. JavascriptObject의 런타임 null 포인터를 감지 할 수없는 이유는 무엇입니까?
- 18. null 값을 기본 유형으로로드
- 19. 외래 키가 기본 키와 관련이 있어야하는 이유는 무엇입니까?
- 20. 올바른 목록 값을 표시 할 수없는 이유는 무엇입니까?
- 21. 배열을 json_decode 할 수없는 이유는 무엇입니까?
- 22. React가 키를 추가 할 수없는 이유는 무엇입니까?
- 23. AS3에서 포함 된 글꼴을 표시 할 수없는 이유는 무엇입니까?
- 24. 포함 된 JavaScript 내에서 모듈을로드 할 수없는 이유는 무엇입니까?
- 25. UIScrollView에 포함 된 UIImageView를 확대/축소 할 수없는 이유는 무엇입니까?
- 26. rspec에 포함 된 활성 레코드를 생성 할 수없는 이유는 무엇입니까?
- 27. 특정 카피 바라 모듈을 포함 할 수없는 이유는 무엇입니까?
- 28. 아약스 값을 가져올 수없는 이유는 무엇입니까?
- 29. 조건문의 결과로 벡터에 값을 할당 할 수없는 이유는 무엇입니까?
- 30. 기본 테이블에서만 기본 키가
기본 키 컬럼에 삽입 0, DEFAULT, NULL 값이 다음 새 자동 증가 값 – zloctb