>  기사  >  데이터 베이스  >  MySQL에서 Null을 처리할 때 주의해야 할 두 가지 함정이 있습니다.

MySQL에서 Null을 처리할 때 주의해야 할 두 가지 함정이 있습니다.

黄舟
黄舟원래의
2017-02-21 10:29:171121검색



요약: MySQL 데이터베이스 관리자로서 우리는 종종 Null과 싸워야 합니다. 하지만 주의해야 할 두 가지 주요 함정이 있습니다.

MySQL 데이터베이스는 정형 데이터를 기반으로 한 오픈소스 데이터베이스입니다. SQL 문은 MySQL 데이터베이스의 핵심 언어입니다. 그러나 MySQL 데이터베이스에서 SQL 문을 실행할 때 두 가지 함정에 주의해야 합니다.

트랩 1: Null 값이 반드시 Null일 필요는 없습니다

Null 값은 특수 필드입니다. MySQL 데이터베이스에서 null 값은 상황에 따라 다른 의미를 나타내는 경우가 많습니다. 이는 MySQL 데이터베이스의 기능입니다. 예를 들어 일반 필드(문자 데이터)에서 null 값은 null 값을 나타냅니다. 그러나 TimesTamp 유형 필드에 널값을 삽입하는 경우 널값이 반드시 널일 필요는 없습니다. 이때(아래 그림 참조) 무슨 일이 발생합니까?

MySQL에서 Null을 처리할 때 주의해야 할 두 가지 함정이 있습니다.

먼저 테이블을 만들었습니다. 이 테이블에는 User_id(데이터 유형은 int), Date(데이터 유형은 TimesTamp)라는 두 개의 필드가 있습니다. 이제 날짜 필드에 NULL 값이 삽입된 레코드를 이 테이블에 삽입합니다. 하지만 쿼리하면 결과에는 레코드가 삽입된 현재 시간이 표시됩니다. 실제로 이것은 MySQL 데이터베이스에서 SQL 문을 실행할 때 자주 발생하는 함정입니다. null 값이 반드시 null일 필요는 없습니다. 작업 중에 null 값이 삽입된 것은 분명하지만 최종 쿼리 결과는 null 값이 아닙니다.

MySQL 데이터베이스에서 NULL은 단순한 Null 값이 아닌 일부 특수 유형의 열에 대한 특별한 의미를 나타냅니다. 이러한 특별한 유형의 열에 대해 독자가 기억해야 할 두 가지 주요 사항이 있습니다. 하나는 위에서 언급한 TimesTamp 데이터 유형입니다. 이 데이터 유형의 열에 Null 값을 삽입하면 시스템의 현재 시간을 나타냅니다. 다른 하나는 auto_increment 속성이 있는 열입니다. 이 속성의 열에 Null 값을 삽입하면 시스템은 일련의 양의 정수를 삽입합니다. 그리고 문자 데이터 등 다른 데이터 유형의 열에 Null 데이터가 삽입되면 Null 값이 삽입됩니다.

트랩 2: Null 값은 반드시 Null 문자와 같지는 않습니다.

MySQL에서 Null 값(Null)은 Null 문자('')와 동일합니까? 대답은 '아니요'입니다. . 아래 데모를 살펴보시기 바랍니다.

MySQL에서 Null을 처리할 때 주의해야 할 두 가지 함정이 있습니다.

동일한 데이터베이스 테이블에 Null 값 데이터와 '' null 문자 데이터를 동시에 삽입한 후 Select 문을 사용하여 쿼리합니다. 최종 표시된 결과는 위 그림에 나와 있습니다. 분명히 표시된 결과는 다릅니다. 이 결과에서 null 값이 null 문자와 동일하지 않음을 알 수 있습니다. 이는 MySQL에서 SQL 문을 실행할 때 발생하는 두 번째 함정입니다. 실제 작업에서는 널 데이터와 널 문자가 다른 의미를 갖는 경우가 많습니다. 데이터베이스 관리자는 실제 요구 사항에 따라 선택할 수 있습니다.


전화번호 등의 필드는 기본적으로 null 값으로 설정되거나(상대방의 전화번호를 전혀 알 수 없음을 나타냄) 빈 문자로 설정(나중에 해당 번호가 취소되었음을 나타냄)할 수 있으며, 등. 데이터베이스에서 서로 다른 표현을 갖게 되므로 데이터베이스 관리자는 이를 다르게 처리해야 합니다. 저자는 null 문자보다는 null 값을 사용하는 것을 선호합니다. 이는 주로 null 값의 데이터 유형에 대한 특수 연산 문자가 여러 개 있기 때문입니다. 필드에 null 문자가 있으면 데이터베이스는 대신 필드 이름을 사용합니다. 반대로 null 값을 삽입하면 바로 NULL이 표시됩니다. 이는 다른 데이터베이스가 표시되는 방식과도 다릅니다.

하나는 IS NULL 및 IS NOT NULL 키워드입니다. 필드에 Null 값이 있는 데이터가 포함되어 있는지 확인하려면 특수 키워드를 사용해야 합니다. 전자는 이 필드가 비어 있음을 의미하고, 후자는 이 필드가 비어 있지 않음을 의미합니다. 이 두 키워드는 Select 문의 쿼리 조건에서 매우 유용합니다. 전화번호가 비어 있는 모든 사용자를 쿼리해야 하는 경우(전화번호 정보를 보완해야 하는 경우) 쿼리 조건에 is not null 키워드를 추가할 수 있습니다.

MySQL에서 Null을 처리할 때 주의해야 할 두 가지 함정이 있습니다.

두 번째는 Null 값에 특수하게 적용되는 Count와 같은 통계 함수입니다. 이제 사용자 정보 테이블에 전화번호가 있는 사용자 수를 계산해야 하는 경우 계산 기능을 사용하고 전화번호를 매개변수로 사용할 수 있습니다. 통계 과정에서 이 함수는 자동으로 null 값 데이터를 무시하기 때문입니다. 이때 카운트되는 것은 전화번호와 함께 사용자 정보이다. null 문자가 포함된 데이터를 사용하는 경우 이 함수는 이를 계산합니다. 아래 그림과 같이 방금 생성된 두 개의 레코드를 계수하면 시스템 통계 결과는 2가 아닌 1이 됩니다. 시스템이 Null 값 데이터를 자동으로 무시하는 것을 볼 수 있습니다.

위 내용은 MySQL에서 Null을 다룰 때 주의해야 할 두 가지 함정입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.