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

MySQL 테이블 생성 시 현재 날짜(CURRENT_DATE)를 기본값으로 설정하는 방법

MySQL에서 테이블을 생성할 때 DEFAULT 제약 조건을 사용하면 특정 컬럼에 기본값을 미리 지정할 수 있습니다. 데이터 삽입 시 해당 컬럼의 값을 생략하면, 설정해 둔 기본값이 자동으로 저장되므로 매우 유용합니다.

DEFAULT 제약 조건 기본 구문

다음은 테이블을 생성하면서 DEFAULT 제약 조건을 추가해 기본값을 설정하는 기본 구문입니다.

CREATE TABLE yourTableName
(
yourColumnName1 dataType not null ,
yourColumnName2 dataType default anyValue,
.
.
.
N
);

현재 날짜를 기본값으로 하는 테이블 생성 예제

아래 예제는 "employee_joining_date"(직원 입사일) 컬럼에 DEFAULT 제약 조건을 적용하여, 별도의 값을 입력하지 않으면 CURRENT_DATE, 즉 레코드가 삽입되는 시점의 현재 날짜가 자동으로 저장되도록 테이블을 생성하는 과정을 보여줍니다.

mysql> create table demo43
-> (
-> employee_id int not null auto_increment primary key,
-> employee_name varchar(40) not null,
-> employee_status varchar(60) default "NOT JOINED",
-> employee_joining_date date default(CURRENT_DATE)
-> );
Query OK, 0 rows affected (0.66 sec)

위 테이블에는 두 가지 기본값이 설정되어 있습니다. employee_status 컬럼에는 "NOT JOINED"가, employee_joining_date 컬럼에는 CURRENT_DATE가 각각 지정되어 있습니다.

레코드 삽입하기

이제 INSERT 명령문을 사용하여 테이블에 몇 개의 레코드를 삽입해 보겠습니다. John과 David은 입사 상태와 입사일을 직접 지정했고, Bob은 이름만 입력하여 나머지 컬럼은 기본값에 맡겼습니다.

mysql> insert into demo43(employee_name,employee_status,employee_joining_date) values('John','JOINED','2020-05-10');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo43(employee_name,employee_status,employee_joining_date) values('David','JOINED','2020-10-12');
Query OK, 1 row affected (0.21 sec)
mysql> insert into demo43(employee_name) values('Bob');
Query OK, 1 row affected (0.15 sec)

결과 확인하기

SELECT 문을 사용하여 테이블에 저장된 레코드를 조회합니다.

mysql> select *from demo43;

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

+-------------+---------------+-----------------+-----------------------+
| employee_id | employee_name | employee_status | employee_joining_date |
+-------------+---------------+-----------------+-----------------------+
|           1 | John          | JOINED          | 2020−05−10            |
|           2 | David         | JOINED          | 2020−10−12            |
|           3 | Bob           | NOT JOINED      | 2020−10−31            |
+-------------+---------------+-----------------+-----------------------+
3 rows in set (0.00 sec)

출력 결과를 보면 흥미로운 점을 확인할 수 있습니다. Bob의 레코드에는 입사일을 직접 입력하지 않았지만, DEFAULT 제약 조건에 설정된 CURRENT_DATE 덕분에 레코드가 삽입된 당시의 현재 날짜인 2020-10-31이 자동으로 저장되었습니다. 마찬가지로 employee_status 컬럼에도 값을 넣지 않았기 때문에 기본값인 "NOT JOINED"가 적용된 것을 볼 수 있습니다.

이처럼 DEFAULT 제약 조건과 CURRENT_DATE를 함께 사용하면, 날짜 정보를 매번 수동으로 입력할 필요 없이 레코드 생성 시점의 날짜를 자동으로 기록할 수 있어 실무에서 회원 가입일, 주문 일자, 로그 기록 시각 등을 관리할 때 폭넓게 활용됩니다.