인프런 커뮤니티 질문&답변

지연님의 프로필 이미지

작성한 질문수

처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지] (업데이트)

학습 효과를 높일 수 있는 꿀팁과 공유사항 (업데이트)

SQL table에 있는 Default 의미

24.07.24 10:43 작성

·

71

0

SQL table을 생성하면

Field, Type, Null, Key, Default, Ext

순으로 있는데

Field, Type, Null, Key, Ext은 테이블 만들때 다 다뤘던거라 알겠는데 Dafult는 항상 NULL이라고 되어있는데 어떤건지 잘 모르겠더라구요. 그리고 NOT NULL이라고 데이터 형식을 적으면 NULL 에 Yes라고 뜨는데 Default에는 NULL이라고 되어있어서 가끔 헷갈리기도 하는 것 같아요.

Default가 의미하는게 무엇이고, 왜 항상 NULL이라고 되어있는지 궁금합니다

답변 1

0

잔재미코딩 DaveLee님의 프로필 이미지

2024. 07. 25. 10:09

안녕하세요. 답변 도우미입니다.

Default는 SQL 테이블을 생성할 때 각 필드에 대해 기본값을 설정할 수 있는 옵션입니다. 이 기본값은 해당 필드에 값을 명시적으로 지정하지 않았을 때 자동으로 입력되는 값입니다.

### Default의 의미

- 기본값: 특정 필드에 데이터가 삽입되지 않았을 때 자동으로 설정되는 값입니다.

- 예를 들어, age라는 필드의 기본값을 18로 설정하면, 새 레코드를 삽입할 때 age 필드에 값이 주어지지 않으면 자동으로 18이 입력됩니다.

### Default가 항상 NULL인 이유

- 기본적으로, 필드의 Default 값은 명시적으로 설정하지 않으면 NULL로 설정됩니다. 즉, 해당 필드에 값이 지정되지 않으면 NULL이 저장됩니다.

- Default 값이 NULL로 설정된 것은 필드가 특별히 기본값을 필요로 하지 않음을 나타냅니다.

### NOT NULL과 Default의 관계

- 필드에 NOT NULL 제약 조건을 설정하면, 해당 필드에 NULL 값을 저장할 수 없습니다.

- 그러나 Default 값은 여전히 설정되지 않으면 NULL일 수 있습니다. 이 경우, 값을 입력하지 않고 새 레코드를 삽입하려고 하면 오류가 발생합니다.

- 따라서 NOT NULL 필드에는 기본값을 명시적으로 설정하는 것이 좋습니다.

### 예시

아래는 테이블을 생성하는 예시입니다.

```sql

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL,

age INT DEFAULT 18,

email VARCHAR(100) DEFAULT NULL

);

```

이 예시에서:

- username 필드는 NOT NULL로 설정되어 있어 값이 반드시 입력되어야 합니다.

- age 필드는 값을 입력하지 않으면 기본값으로 18이 입력됩니다.

- email 필드는 값을 입력하지 않으면 NULL이 입력됩니다.

따라서 테이블을 조회하면 다음과 같이 나올 수 있습니다:

```plaintext

Field | Type | Null | Key | Default | Extra

---------|---------------|------|-----|---------|------

id | INT | NO | PRI | NULL | auto_increment

username | VARCHAR(50) | NO | | NULL |

age | INT | YES | | 18 |

email | VARCHAR(100) | YES | | NULL |

```

위의 표에서:

- usernameNOT NULL이지만 Default 값이 설정되지 않았으므로 기본값이 NULL로 나타납니다.

- age는 기본값이 18로 설정되어 있습니다.

- emailNULL을 허용하며 기본값도 NULL로 설정되어 있습니다.

요약하자면, Default 값은 해당 필드에 값이 제공되지 않았을 때 자동으로 입력되는 값이며, 기본적으로는 NULL로 설정됩니다. NOT NULL 필드의 경우, 기본값을 명시적으로 설정하는 것이 실수를 방지할 수 있습니다.

감사합니다.

잔재미코딩 드림

지연님의 프로필 이미지

작성한 질문수

질문하기