● 개발목적
MySQL을 통해 간단한 테이블과 데이터값을 생성하고, 이 때 사용되는 열 플래그 (제약조건) 종류들과 그 사용방법에 대해 알아본다.
● 참고
MySQL에서의 테이블 생성 시에는 명령어를 하나하나 수기로 입력해 테이블을 생성할 수도 있겠지만, 본 포스팅에서는 MySQL WorkBench 프로그램을 이용, GUI 환경에서 간편하게 테이블을 생성하는 과정을 알아보도록 한다.
● MySQL WorkBench를 통한 스키마 / 테이블 생성

새로운 스키마 (SCHEMAS) 생성을 위해, 상단의 데이터베이스 모양의 버튼을 클릭한다.


스키마의 이름은 간단하게 DBTest로 지정하고, Apply 버튼을 클릭해 스키마를 생성한다.

새로 생성한 dbtest 스키마를 더블 클릭하고, 마우스 우측 클릭을 해 Create Table 버튼을 누른다.
● 데이터 타입 (Datatype) 종류와 정의

테이블 이름 (Table Name)을 지정한다. 가장 간단한 예시인 계정 정보 DB 테이블을 만들어 보고자 하는 의도로 account_info로 지정했다.
칼럼 이름 (Column Name) 을 지어주어야 하는데, 간단하게 '이름' 정보를 보관할 name 칼럼과 'id' 정보를 보관할 id 칼럼, '비밀번호' 정보를 보관할 pwd 칼럼을 생성했다.
그 후에는 데이터 타입 (Datatype) 을 지정한다. MySQL에서 제공하는 데이터 타입은 굉장히 많지만, 주로 사용하는 몇가지들만 추려서 알아보도록 하겠다.
| 데이터 타입 유형 | 정의 |
| CHAR(크기) | 최대 255byte의 고정 길이 데이터 타입. 설정한 크기보다 작은 데이터값 입력 시 남은 공간은 공백으로 채워짐. |
| VARCHAR(크기) | 최대 65535byte의 가변 길이 데이터 타입. 설정한 크기보다 작은 데이터값 입력 시 남은 공간은 채우지 않음. |
| INT(크기) | 정수형 데이터 타입. |
| DOUBLE(길이, 소수) | 부동 소수형 데이터 타입. |
| DATE | 연, 월, 일 형식의 날짜 표현 데이터 타입 |
| TIME | 시, 분, 초 형식의 시간 표현 데이터 타입 |
| DATETIME | 날짜와 시간을 합친 기간 표현 데이터 타입 |
상황에 알맞는 데이터 타입을 지정했으면, 제약 조건을 지정한다. 제약 조건에 관련된 설명은 아래와 같다.
● 제약 조건 종류와 정의
| 제약 조건 유형 | 정의 |
| PK (PRIMARY KEY) | NULL값 (빈값) 저장 불가하고, 중복된 값을 가질 수 없음. (NN과 UQ의 조건을 모두 갖는 제약조건.) |
| NN (NOT NULL) | NULL값 (빈값) 저장 불가. 무조건 데이터를 가지고 있어야 함. |
| UQ (UNIQUE) | 해당 필드에는 서로 다른 값만을 저장할 수 있음. 중복된 값은 저장 불가. |
| B | 데이터를 2진 문자열로 저장함. |
| UN | 음수 부호 삭제 후, 0부터 시작하여 마지막 값이 2배로 증가되어 삽입됨. ex) 범위 -100 ~ 100 값 전달 시 0 ~ 200 으로 삽입 (범위는 같음) |
| ZF (ZERO FILLED) | 해당 필드의 크기보다 작은 값이 전달될 경우, 남은 공간을 0으로 채운 뒤 삽입함. |
| AI | 해당 필드의 값 전달 시 마다, 1씩 증가되어 삽입됨. |
| G | 다른 열을 기반으로 하는 수식에 의해 생성된 값. |
| DEFAULT | 해당 필드의 기본값을 설정할 수 있게 함. 만약, 빈 값이 전달되면 설정된 기본값을 자동으로 저장함. |
참고) https://stackoverflow.com/questions/3663952/what-do-column-flags-mean-in-mysql-workbench
모두 완료되었으면 하단의 Apply 버튼을 클릭한다.

테이블 생성 스크립트를 보여준다. Apply 버튼을 클릭해 테이블을 생성하자.

테이블이 정상적으로 생성되었다.