24.07.24 10:43 작성
·
96
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
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 |
```
위의 표에서:
- username
은 NOT NULL
이지만 Default
값이 설정되지 않았으므로 기본값이 NULL
로 나타납니다.
- age
는 기본값이 18
로 설정되어 있습니다.
- email
은 NULL
을 허용하며 기본값도 NULL
로 설정되어 있습니다.
요약하자면, Default
값은 해당 필드에 값이 제공되지 않았을 때 자동으로 입력되는 값이며, 기본적으로는 NULL
로 설정됩니다. NOT NULL
필드의 경우, 기본값을 명시적으로 설정하는 것이 실수를 방지할 수 있습니다.
감사합니다.
잔재미코딩 드림