DEFAULT NULL이 있는 MySQL 열 - 스타일리시한 선택입니까?
SQL의 많은 버전에서는 열을 모든 행 삽입에서 NULL로 암시적으로 설정할 수 있는 세 가지 방법이 있습니다.다음과 같습니다.
columnname type NULL
columnname type DEFAULT NULL
columnname type NULL DEFAULT NULL
즉, 첫 번째 플래그는 NULL 플래그(NOT NULL과 반대)를 설정하고, 두 번째 플래그는 NULL 플래그를 기본값으로 남기고, 세 번째 플래그는 NULL 플래그를 설정하고 암시적 값을 NULL로 설정합니다.
마이크로소프트 SQL에서는 테이블이나 스키마에 대해 NULL 플래그의 기본값을 사용자 정의할 수 있기 때문에 두 번째 변형이 완전히 동일하지 않다고 들었습니다.
그러나 MySQL의 경우에는 그런 기능이 있다고 생각하지 않습니다.또한 MySQL에서는 NOT NULL 열과 달리 NULL 플래그가 있는 열은 엄격한 모드가 켜져 있더라도 명시적인 값이 없으면 삽입 시 항상 NULL로 암묵적으로 설정됩니다.그래서 이 모든 열 선언은 동일하게 유지됩니다.
MySQL 스크립트에서 모든 NOT NULL 열에 대해 엄격 모드를 사용하도록 설정하는 경우 문제가 발생하지 않도록 응용 프로그램의 일부 삽입에 설정할 것으로 예상되지 않는 열에 대해 DEFAULT 값을 지정합니다.따라서 가장 장황하고 명확한 세 번째 변이를 선택한다면 더 대칭적일 것이라고 생각합니다.세 번째 변이와 같은 선언이 일반적입니까, 아니면 첫 번째 변이나 두 번째 변이가 다른 사람의 스크립트에서 더 자주 발생합니까?
MySQL 덤프가 사용하는 별칭이기 때문에 두 번째 접근 방식으로 전환하는 것을 고려하고 있었지만, 정수 리터럴을 열 선언의 기본 절에 문자열(하나의 따옴표)로 덤프하기 때문에 그렇게 좋은 아이디어인지 잘 모르겠습니다.
이 질문은 해결책이 있는 것보다 더 많은 의견으로 보일 수 있지만, 저는 또한 제가 모르는 어떤 잠재적인 기회가 있는지 알고 싶습니다.MySQL에서 Postgre로 마이그레이션을 선택할 수 있습니다.나중에 SQL도 사용할 수 있고, Postgre와 같은 전문가의 조언도 사용할 수 있습니다.SQL은 MS-SQL처럼 이러한 경우를 구분합니다.제가 틀린 가정을 했다면 제가 틀리면 수정해주세요.
데이터 유형 기본값 아래에 문서화된 대로:
열이 다음과 같은 방법을 취할 수 있다면
NULL
값으로서 열은 명시적으로 정의됩니다.DEFAULT NULL
(명시적이지 않고 암묵적이라는 뜻이었다고 생각합니다.)
또한 구문 아래에 문서화된 바와 같이:
둘다 아니면
NULL
도 아니다NOT NULL
지정되고, 열은 다음과 같이 취급됩니다.NULL
지정되어 있었습니다.
따라서 MySQL에서 다음 열 정의는 모두 동일합니다.
columnname type
columnname type NULL
columnname type DEFAULT NULL
columnname type NULL DEFAULT NULL
어떤 것을 사용할지는 명확한 것과 간결한 것 사이의 균형입니다.상황에 따라 위의 내용 중 하나를 사용할 수도 있습니다.
제가 만난 모든 데이터베이스는 NULL을 설명하는 방식으로 취급합니다.열에서 NULL 값을 허용하면 INSERT에 값을 제공하지 않으면 NULL로 기본 설정됩니다. 이는 ANSI 표준 동작의 일부라고 생각합니다.
"NULL" 자체를 지정하는 것에 관해서는.그것은 선호도의 문제입니다.표준에서는 NOT NULL을 지정하지 않는 한 열은 NULL을 허용한다고 합니다(데이터 정의 언어 수준).따라서 NULL 자체는 불필요하며, 다음과 같은 네 번째 동등한 옵션이 있습니다.
columnname type
NULL은 ANSI 표준을 통해 SQL 언어에 상당히 내장되어 있습니다.세 번째 옵션이 가장 명확하지만 약간 특이해 보입니다.
시스템 전체에 걸쳐 일관성을 유지할 계획이라면, 저는 당신이 가고 있는 길을 택할 것입니다.모든 테이블의 모든 열에 대해 NULL 또는 NOT NULL이 있습니다. 기본값을 사용하는 모든 열에 대해 DEFAULT 문이 있습니다.
그러나 함께 일하는 다른 사람(현재 또는 미래)이 이 예를 쉽게 따를 것으로 기대하지 마십시오.많은 사람들이 이 경우 네 번째 옵션을 선호할 것입니다. 단순히 타이핑이 덜 필요하고 모든 (또는 거의 모든) SQL 방언이 작동하는 방식이기 때문입니다.
언급URL : https://stackoverflow.com/questions/12253415/mysql-columns-with-default-null-stylistic-choice-or-is-it
'programing' 카테고리의 다른 글
css 내용 다음 또는 내용 이전에 의사:"를 회전합니다." (0) | 2023.10.30 |
---|---|
html 요소에 대한 onclick 이벤트에 대한 data-* 특성 가져오기 (0) | 2023.10.30 |
PowerShell을 사용하여 Windows 서비스 시작 유형 가져오기 (0) | 2023.10.25 |
CakePHP에서 도메인 매핑 (0) | 2023.10.25 |
CSS 인쇄:페이지 간의 절반씩 잘라내는 DIV를 피합니까? (0) | 2023.10.25 |