본문 바로가기

무언가 만들기 위한 지식/Database

CREATE TABLE 옵션 NULL, DEFAULT

테이블 생성하는 법은 전에 확인했고 세부적으로 몇가지를 알아보자.
그중에서 확인 할 것은 NULL 및 DEFAULT 셋팅이다.
일단 DESC로 확인한 테이블의 상태를 보도록 하자.


위 화면을 보면 NULL과 Default 값이 있다. Key에 대해서는 후에 자세히 알아보도록 한다.

NULL :

테이블 생성후 INSERT INTO VALUES로 값을 입력할때 특정 field값을 입력하지 않고 공백으로 입력할 수 있다. 그 공백으로 입력되는 값이 NULL이고 Null표시는 허용여부이다. No라고 되어있다면 특정 공백을 취급하는 입력을 허용하지 않는 다는 것이다. YES로 되어있다면 공백 입력이 허용된다. 하지만 대부분이 검색과 정확한 자료검색을 위해 NO로 설정하는 것이 보통이다.
NULL의 디폴트 값은 YES로 설정되어 널을 허용하지만 정확한 자료 및 검색을 원한다면 NO설정해줘야한다.

NO로 설정하는 법은 다음과 같다. CREATE시에 자료형 뒤에 추가로 NOT NULL을 작성하는 것이다.

위의 테이블은 다음으로 작성되었다.

<CREATE TABLE aaa(name VARCHAR(4) NOT NULL, age INT NOT NULL, gender CHAR(1) NOT NULL);>

이를 통하여 각 field값들은 반드시 입력이 되어야 하며 INSERT 사용시 빈 칸이 있으면 에러처리되어 전체 입력이 되지 않는다.

DEFAULT :

디폴트 값은 말 그대로 초기값이다. 입력이 없는 경우 셋팅된 기본 값을 넣게된다.
사용법은 NULL과 비슷하게 자료형 다음에

<DEFAULT 값>

을 사용한다.

단 사용해본 결과 [NOT NULL DEFAULT 값]으로 셋팅된 경우 DEFAULT 설정보다 NULL설정이 우선한다.
즉 디폴트값이 되어있어도 널처리가 불가능하게 되어있다면 값을 입력하지 않으면 에러가 먼저뜨고 디폴트 값이 입력되지 않는다.


다음은 나이를 Default값을 20으로 설정하고 Null값을 설정한 상태이다. age값을 입력하지 않으면 자동으로 20이 입력 될 것이다. 사실상 Null을 No로 설정한다면 Default값은 의미가 없다.


위의 화면이 이름만 입력하고 나이는 입력하지 않은 것이다. 이미 널 셋팅이 YES로 되어있기 때문에 하나만 입력해도 허용된다.
허나 주의해야할 점은 한개만 넣을때는 처음 INTO 다음에 선언할때 field이름을 직접 넣어야한다는 것이다.
그냥 필드의 모든 값을 저장할때는

<INSERT INTO aaa VALUES('PARK',20);>

이렇게 하면 되지만 하나만 넣을 경우는

<INSERT INTO aaa(name) VALUES('PARK');>

이렇게 입력 필드와 값을 매치시켜주어야 한다. 그냥 빼면 되겠지하고 그냥 해볼 사람 많겠지만
모든 필드값을 넣지 않는다면 처엄 필드명 선언을 생략할 수 없다.

'무언가 만들기 위한 지식 > Database' 카테고리의 다른 글

DELETE문 UPDATE문  (0) 2010.04.06
My-SQL DataType(자료형)  (1) 2010.04.06
DROP, INSERT, SELECT  (0) 2010.04.06
CREATE, USE, DESC  (0) 2010.02.24
DB의 시작.  (0) 2010.02.18