MySQL은 필드가 null인지 여부를 어떻게 결정합니까?

(*-*)浩
풀어 주다: 2020-09-10 16:11:36
원래의
8380명이 탐색했습니다.

MySQL을 오랫동안 사용해 온 많은 사람들은 이 두 필드 속성의 개념에 대해 명확하지 않다고 생각합니다. 그들은 일반적으로 다음과 같은 질문을 가지고 있습니다.

내 필드 유형은 다음과 같습니다. null, 왜 null 값을 삽입할 수 있나요

왜 null이 아닌 것이 null보다 더 효율적인가요

필드가 비어 있지 않다고 판단되면 *를 선택해야 합니다. from table where columns <> ; '' 여전히 select * from table wherecolumn을 사용해야 합니다.

MySQL은 필드가 null인지 여부를 어떻게 결정합니까?

위 질문을 통해 null과 not null의 차이점을 심층적으로 살펴보겠습니다.

먼저 "null 값"과 "NULL"의 개념을 이해해야 합니다.

Null 값은 공간을 차지하지 않습니다

#🎜🎜 #mysql NULL은 실제로 공간을 차지합니다. 다음은 MYSQL의 공식 설명입니다.

“NULL 열은 해당 값이 NULL인지 여부를 기록하기 위해 행에 추가 공간이 필요합니다. 열에는 1비트가 추가되어 가장 가까운 바이트로 반올림됩니다."

예를 들어 컵이 있다고 가정합니다. null 값은 컵이 진공 상태임을 의미하고 NULL은 컵이 진공 상태임을 의미합니다. 공기가 가득 차 있습니다. 컵이 모두 비어 있는 것처럼 보이지만 그 차이는 엄청납니다.

"null 값"과 "NULL"의 개념을 이해하고 나면 문제는 기본적으로 명확해집니다. 예를 들어 테스트해 보겠습니다.

CREATE TABLE  `test` (  
 `col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,  
 `col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL  
) ENGINE = MYISAM ;
로그인 후 복사

데이터 삽입 :

INSERT INTO `test` VALUES (null,1);
로그인 후 복사

mysql 오류 발생:

#1048 - Column &#39;col1&#39; cannot be null
로그인 후 복사

Another

INSERT INTO `test` VALUES (&#39;&#39;,1);
로그인 후 복사

이(가) 성공적으로 삽입되었습니다.

NOT NULL 필드에는 "NULL"을 삽입할 수 없고 "null 값"만 삽입할 수 있음을 알 수 있으며 위 질문에 답이 있습니다.

문제에 대해서는 위에서 말했듯이 NULL은 실제로는 null 값이 아니고 공간을 차지하기 때문에 mysql이 비교를 수행할 때 NULL이 필드 비교에 참여하게 되기 때문에 일정한 속성을 갖는다. 효율성에 영향을 미칩니다.

그리고

B-트리 인덱스는 NULL 값을 저장하지 않으므로 인덱스된 필드가 NULL이 될 수 있으면 인덱스 효율성이 많이 떨어집니다.

MYSQL에서는 열 속성이 가능한 한 NULL이 아닌 것을 권장합니다.

길이 확인: ''와 null 사이에 공백이 없어야 합니다. 가치.

mysql> select length(''),length(null),length(' ');

+------------+--------------+--------------+

| length('') | length(null) | length(' ') |

+------------+--------------+--------------+

| 0 | NULL | 2 |

+------------+--------------+--------------+

참고:

count()가 열의 레코드 수를 계산할 때 NULL 값이 사용되면 시스템은 자동으로 무시되지만 null값은 카운트됩니다.

NULL을 판단하려면 IS NULL 또는 IS NOT NULL을 사용하세요. SQL 문 함수에서 ifnull() 함수를 사용하여 null 문자를 판단할 수 있습니다. # 🎜🎜#

MySQL의 특별 고려 사항, 타임스탬프 데이터 유형의 경우 이 데이터 유형의 열에 NULL 값을 삽입하면 나타나는 값은 현재 시스템 시간입니다. null 값을 입력하면 0000-00-00 00:00:00

이 나옵니다. null 값을 판단하기 위해 is null을 사용할지, =''를 사용할지는 실제 업무에 따라 다릅니다.

위 내용은 MySQL은 필드가 null인지 여부를 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿