brunch

You can make anything
by writing

C.S.Lewis

by 김유환 Oct 02. 2019

6. 데이터베이스에 테이블 만들기

실전! TablePlus로 테이블 만들어보기

배경

지난 데이터베이스와 테이블 글에서는 기본적인 데이터베이스의 기초 지식을 쌓는 시간을 가졌습니다. 이번 글 부터는 직접 데이터베이스를 다뤄보는 시간을 가지도록 하겠습니다. TablePlus 는 GUI 형태 도구로써, 화면의 버튼을 클릭해서 DBMS 에 요청을 보낼 수 있게 해주는 도구입니다. TablePlus 상에서 DBMS로 테이블을 만드는 일도 이 요청에 해당하는 작업입니다. TabluePlus를 통해 테이블을 만들때 순차적으로 어떤 변화가 일어나는지 살펴보면, 1) 먼저 사용자가 원하는 테이블 형태를 GUI 형태로 입력하고, 2) 이를 TablePlus가 SQL로 변환시킨 후, 3) SQL을 DBMS에 요청보내는 순서로 진행됩니다. 이 글에서는 TablePlus 를 이용해서 이 과정을 그대로 따라해보도록 합시다.



테이블 추가

TablePlus를 통해 데이터베이스에 테이블을 만들어봅시다. 아래 그림을 참고해서 다음 단계를 따라해주세요.

    1. TablePlus를 실행시키고 데이터베이스에 연결

    2. 왼쪽 패널 상단에 있는 Items 를 선택

    3. 왼쪽 패널 하단에 위치한 + 버튼을 클릭

+ 버튼을 클릭하고 나면, untitled_table 이라고 가상의 테이블명이 주어지면서 위와 같은 화면이 나타날 것입니다. 이제 필요한 항목들을 추가해서 테이블을 만들면 됩니다. 어떤 항목들을 추가해야하고, 각 항목이 의미하는바가 무엇인지 확인해보도록 합시다.



테이블 기본 요소

테이블을 만들기 위해서 알아야하는 가장 기본적인 요소들은 4가지 입니다. 바로, 테이블명, 컬럼 명, 컬럼의 데이터 타입, 그리고 Nullable 입니다. TablePlus는 아래 그림과 같이 각 해당 필드를 설정할 수 있는 메뉴를 보여주고 있습니다. 


1. name

위의 그림 정중앙 상단에 untitled_table_4라고 임의로 설정된 값은 생성할 테이블의 이름입니다. 이 공간을 클릭하고 이름을 수정하면 원하는 이름으로 테이블을 만들 수 있습니다. 테이블명에 띄어쓰기를 포함시킬 수 있지만, 띄어쓰기가 들어가면 후에 SQL 문을 작성할때 조금 귀찮아집니다. 띄어쓰기가 필요한 경우 밑줄표시 (_) 문자를 이용해서 연결하는것을 추천합니다.

2. column_name

테이블에서 열의 이름을 의미합니다. 엑셀에서 하나의 시트에 여러개의 열을 만들때의 열과 동일한 개념이라고 생각하시면 됩니다. TablePlus는 처음 테이블을 추가하면 기본으로 한개의 열에 해당하는 값을 입력해둡니다. 위에 보이는 초록색 값들이 바로 그 기본 열의 값들입니다. # 아래 위치한 0은 첫번째 열이라는 의미이고 그 우측에 있는 id가 바로 열의 이름인 column_name입니다. id 부분을 더블클릭해서 원하는 이름으로 수정해보세요. 열의 이름은 테이블 이름과 마찬가지로 띄어쓰기 사용을 추천하지 않습니다.

3. data_type

열 이름 오른쪽에 위치한 data_type은 지난 글 데이터베이스와 테이블에서 살펴봤던 바로 그 데이터 타입입니다. TablePlus는 기본값으로 Serial 을 설정해두고 있습니다. 설정된 기본값 우측에 보면 위아래 화살표가 있는데, 이를 클릭하면 설정할 수 있는 모든 종류의 데이터 타입이 보입니다. 클릭해서 보면 아시겠지만, MySQL은 굉장히 다양한 종류의 데이터 타입을 지원하고 있습니다. 기본적인 타입들에 대해서 아래 그림에 이름, 설명, 예시를  살펴봅시다.

4. is_nullable

마지막 기본 요소는 is_nullable (이즈 널러블) 입니다. 아직은 익숙하지 않겠지만, Null(널)은 개발 영역에서 기본 지식입니다. 복잡한 개념은 아니고, NULL은 값이 없다는 것을 의미합니다. 데이터베이스에서 이것이 어떤 의미로 사용되는지 알아봅시다. 

예를 들어, 사용자 정보 관련 테이블을 만들때 나이 정보를 입력하는 열을 하나만든다고 가정해봅시다. 열의 이름은 age, 데이터 타입은 정수형 (int)로 만들 것입니다. 모든 사용자가 가입할때 나이정보를 입력해주면 좋겠지만, 가끔 어떤 사용자는 나이 정보를 입력하지 않고 싶을 수 있습니다. 테이블에 나이를 입력하지 않은 사용자의 값을 넣는다고 생각해봅시다. 이 경우에 나이값을 어떤 것으로 해야할까요? 가장 쉽게는 "입력전" 이렇게 할 수 있으면 좋겠지만, 위에서 언급한것처럼 나이열은 정수 타입이라서 글자를 입력할 수 없습니다. 아니면 나이를 -1 로 입력해서 표시하는 방법도 있을 겁니다. 하지만, 나이에 -1을 입력하게되면 -1살이라는 의미가 되어 평균값을 구할때 문제가 생기게 됩니다. 바로, 이 문제를 해결하기 위해서 개발 영역에서는 입력이 되지 않았다 혹은 데이터가 없다는 것을 표현하기 위해 null 이라는 값을 사용하고 있습니다.

테이블 생성할때 가장 오른쪽에 위치한 Is_nullable은 해당 열에 null 값을 허용할지 말지를 선택하게 됩니다. 다시 말해, 해당 항목을 선택적으로 입력하는 항으로 만들지 아니면 필수입력항으로 만들지 결정하는 것이라고 생각하면 됩니다. 다시 위의 예제에서, 회원 가입 창에 나이가 선택사항이라면 데이터가 없을 수 있기 때문에, Is_nullable 을 YES 라고 설정하면 됩니다. 반대로, 회원 가입 창에 나이가 필수사항이라면, Is_nullable을 No라고 설정하면 됩니다.


열 추가

지금까지 테이블을 만드는데 필요한 기본 요소들에 대해서 알아보았습니다. 현재는 TablePlus가 기본으로 설정해둔 한가지 열만 존재하는데, 하나의 테이블에는 여러개의 열을 추가할 수 있습니다. 아래 그림과 같이 +Column 버튼을 눌러서 여러가지 열을 추가해보세요. 


테이블 생성

지금까지 테이블을 추가하기 위해 테이블을 만들고 열을 추가하는 방법에 대해서 알아보았습니다. 원하는 열을 추가했으니 이제 데이터베이스에 테이블이 만들어진걸까요? 아닙니다. 지금까지 TablePlus에서한 작업은 테이블을 만들기 위해 DBMS에 보낼 요청을 만드는 과정일뿐이었습니다. 다시 말해, DBMS에는 아직 아무런 요청도 넘어가지 않은 상태입니다. 열을 다 추가하더라도 TablePlus를 종료시키고 다시 데이터베이스에 접속하면 방금 설정한 테이블은 없어져있을 것 입니다. 그렇다면, 테이블을 만드는 요청을 DBMS에 어떻게 보내야할까요? 엑셀 파일에 데이터를 입력하고 저장을 하는것처럼, TablePlus 명령어를 DBMS에 보내는 방법은 Command + S (맥) 혹은 Ctrl + S (윈도우) 를 입력하면 됩니다. 메뉴에서는 아래 그림과 같이 Edit -> Commit  메뉴를 선택하면 됩니다.


테이블 생성 연습하기

이제 연습으로 사용자 정보를 담은 users 라는 테이블을 만들어 봅시다. 테이블 명을 users라고 설정하고 아래 요구사항에 따라서 테이블 열의 정보를 설정해보세요. 새로운 열을 추가하기 위해서는 우측 패널 중간쯤에 위치한 '+ Column' 버튼을 클릭하면 되고, 삭제하고 싶은 경우에 해당 컬럼 위에서 마우스 우측키를 눌러 삭제하시면 됩니다. 마지막으로 한가지, 테이블명 우측에 위치한 Primary 안에는 기본으로 id 값이 입력되어있는데, 이 값의 의미는 나중에 배우도록 하겠습니다. 지금은 삭제해주세요!


위의 테이블을 참고해서 새로운 테이블 정보를 입력해보세요. 모든 정보를 입력한 후에, Command + S (맥) 혹은 Ctrl + S (윈도우) 메뉴를 통해 Commit하는 것을 잊지 마세요! 마지막 확인을 위해서, TablePlus를 종료시키고 다시 한번 접속을 해보면 방금 만든 users 테이블이 있는지 확인해보세요!


마치며

이 글에서는 TablePlus를 이용해 직접 테이블을 만들어보는 과정을 다뤘습니다. 조금은 TablePlus 와 익숙해 지는 시간이 되었길 바랍니다. 다음 시간에는 이렇게 만든 테이블에 직접 데이터를 삽입하는 시간을 가지도록 하겠습니다.


아래는 users 테이블을 만들기 위해 제가 입력한 TablePlus 화면입니다.


이전 05화 5. 데이터베이스와 테이블
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari