Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에 NULL 또는 빈 문자열을 삽입하는 것이 더 낫습니까?

<시간/>

innoDB에서 NULL은 빈 문자열에 비해 공간을 덜 차지합니다. 또한 NULL 길이는 null이고 빈 문자열의 길이는 0입니다.

이것을 이해하기 위해 다음과 같이 주어진 create 명령의 도움으로 테이블이 생성됩니다 -

mysql> CREATE table DemoEmptyAndNULL
-> (
-> Message varchar(100)
-> );
Query OK, 0 rows affected (0.49 sec)

테이블을 성공적으로 생성한 후 다음과 같은 help ofinsert 명령을 사용하여 빈 레코드가 테이블에 삽입됩니다 -

mysql> INSERT into DemoEmptyAndNULL values(' ');
Query OK, 1 row affected (0.17 sec)

레코드를 삽입한 후 다음과 같이 select 명령을 사용하여 모든 레코드를 표시할 수 있습니다. -

mysql> SELECT * from DemoEmptyAndNULL;

위의 쿼리를 실행한 후 다음과 같은 출력을 얻습니다. -

+---------+
| Message |
+---------+
|         |
+---------+
1 row in set (0.00 sec)

내장 함수 카운트의 도움으로 빈 문자열의 길이를 확인하는 구문은 다음과 같습니다 -

select count(column_name) from yourTableName;

위의 구문은 다음과 같이 주어진 빈 문자열의 길이를 얻는 데 사용됩니다 -

mysql> select count(message) from DemoEmptyAndNULL;

위의 쿼리를 실행한 후 출력은 다음과 같습니다. -

+----------------+
| count(message) |
+----------------+
| 1              |
+----------------+
1 row in set (0.06 sec)

위의 출력에서 ​​빈 문자열의 길이가 1임을 알 수 있습니다.

이제 NULL의 길이를 확인합니다. 먼저 다음과 같이 delete 명령어를 사용하여 테이블에 삽입된 레코드를 삭제한다 -

mysql> delete from DemoEmptyAndNULL where message=' ';
Query OK, 1 row affected (0.19 sec)

다음 쿼리는 현재 테이블에 레코드가 없는지 확인하는 데 사용됩니다.

mysql> SELECT * from DemoEmptyAndNULL;
Empty set (0.00 sec)

이제 null 값이 있는 레코드가 다음과 같이 테이블에 삽입됩니다. -

mysql> INSERT into DemoEmptyAndNULL values();
Query OK, 1 row affected (0.18 sec)

레코드는 선택 명령을 사용하여 표시되며 얻은 출력은 다음과 같습니다. -

+---------+
| Message |
+---------+
| NULL    |
+---------+
1 row in set (0.00 sec)

이제 테이블에는 null 값이 있는 레코드가 하나만 있습니다. 다음 쿼리를 사용하여 길이를 찾으려면 −

mysql> select count(message) from DemoEmptyAndNULL;

다음은 위 쿼리의 출력입니다 -

+----------------+
| count(message) |
+----------------+
| 0              |
+----------------+
1 row in set (0.00 sec)

위의 출력은 null 값의 경우 count가 0임을 의미합니다.

MySQL 버전을 확인해보자.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.06 sec)

따라서 NULL 값을 허용하면 시스템이 추가 작업을 수행하고 찾고 있는 데이터를 제공하지 않으므로 데이터베이스에 빈 문자열을 사용하는 것이 좋습니다. 그러나 count() 함수가 실행될 때 NULL은 예외를 throw하지 않습니다.