Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 테이블 필드의 NOT NULL 속성 설정 여부 확인하는 방법

테이블의 특정 필드에 NOT NULL 속성이 설정되어 있는지 확인해야 하는 경우가 종종 있습니다. MySQL에서는 두 가지 방법으로 이를 손쉽게 확인할 수 있습니다. 하나는 DESC 명령어를 사용하는 방법이고, 다른 하나는 information_schema를 조회하는 방법입니다.

방법 1: DESC 명령어로 확인하기

가장 간단한 방법은 DESC(DESCRIBE) 명령어를 사용하는 것입니다. 기본 문법은 다음과 같습니다.

desc 테이블이름;

방법 2: information_schema 조회하기

두 번째 방법은 information_schema.columns 뷰를 조회하는 것입니다. 데이터베이스 이름과 테이블 이름을 조건으로 지정하면 해당 테이블의 모든 컬럼에 대한 NULL 허용 여부를 확인할 수 있습니다.

select column_name,
    is_nullable
    from information_schema.columns
    where table_schema = '데이터베이스이름'
    and table_name = '테이블이름';

실습 예제

먼저 실습에 사용할 테이블을 생성해 보겠습니다. 아래 테이블에는 NOT NULL이 적용된 컬럼과 그렇지 않은 컬럼이 함께 포함되어 있어 비교하기 좋습니다.

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(40),
    StudentAge int NOT NULL,
    IsActiveStudent ENUM('ACTIVE','INACTIVE') NOT NULL,
    StudentCountryName varchar(40)
);
Query OK, 0 rows affected (1.53 sec)

DESC 명령어 실행 결과

생성한 테이블에 첫 번째 방법인 DESC 명령어를 적용해 보겠습니다.

mysql> desc DemoTable;

실행 결과는 다음과 같습니다.

+--------------------+--------------------------+------+-----+---------+----------------+
| Field              | Type                     | Null | Key | Default | Extra          |
+--------------------+--------------------------+------+-----+---------+----------------+
| StudentId          | int(11)                  | NO   | PRI | NULL    | auto_increment |
| StudentName        | varchar(40)              | YES  |     | NULL    |                |
| StudentAge         | int(11)                  | NO   |     | NULL    |                |
| IsActiveStudent    | enum('ACTIVE','INACTIVE')| NO   |     | NULL    |                |
| StudentCountryName | varchar(40)              | YES  |     | NULL    |                |
+--------------------+--------------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

출력 결과에서 Null 열을 확인하면 됩니다. 값이 NO로 표시된 컬럼(StudentId, StudentAge, IsActiveStudent)은 NOT NULL 속성이 설정된 것이고, YES로 표시된 컬럼(StudentName, StudentCountryName)은 NULL 값을 허용합니다.

information_schema 조회 결과

이번에는 두 번째 방법인 information_schema 조회를 적용해 보겠습니다. 여기서는 데이터베이스 이름을 'web'으로 지정했습니다.

mysql> select column_name,
    is_nullable
    from information_schema.columns
    where table_schema = 'web'
    and table_name = 'DemoTable';

실행 결과는 다음과 같습니다.

+--------------------+-------------+
| COLUMN_NAME        | IS_NULLABLE |
+--------------------+-------------+
| StudentId          | NO          |
| StudentName        | YES         |
| StudentAge         | NO          |
| IsActiveStudent    | NO          |
| StudentCountryName | YES         |
+--------------------+-------------+
5 rows in set (0.00 sec)

IS_NULLABLE 열의 값이 NO이면 해당 컬럼에 NOT NULL 속성이 적용된 것이고, YES이면 NULL 값 입력이 허용됩니다.

두 방법의 차이점

DESC 명령어는 테이블 구조 전체(데이터 타입, 키, 기본값 등)를 한눈에 파악할 때 유용하고, information_schema 조회는 특정 조건에 맞는 컬럼만 필터링하거나 프로그래밍 방식으로 결과를 활용할 때 더 적합합니다. 상황에 맞게 두 방법을 선택하여 사용하시면 됩니다.