MySQL/MySQL 설치&세팅방법

[MySQL Workbench] 2. 테이블 생성하기

Fletcher 2024. 8. 7. 10:38

 

저번 시간에 데이터베이스(스키마)를 생성했으니,

이번에는 테이블을 생성해보도록 하겠습니다

 

데이터베이스 → 테이블 → 데이터의 계층적 구조가 되겠는데요

RDBMS에서는 대개 데이터베이스를 스키마(Schema)라고 부르고,

행(row)을 레코드(record), 열(coumn)을 필드(field)라고 부릅니다!

 

저번 포스트에 이어서 마찬가지로 MySQL Workbench를 이용하여

GUI 환경에서 직관적인 사용으로 테이블을 생성해보겠습니다 ^^

 

 

 

 

테이블은 특정 데이터베이스(스키마)에 속해있는 것이죠?

특정 데이터베이스에 대해서 작업을 할 때에는 그 데이터베이스가 활성화되어 있어야 합니다

화면 왼쪽을 보시면 여러 데이터베이스들 중에서 글씨가 볼드체로 표시되어 있는 것이 있고,

또, 목록 하단에 Schema:test_db 라고 해서 어떤 스키마가 선택되어 있는지 표시해주는 정보가 있습니다

 

스키마 목록 중에서 특정 스키마를 더블클릭 해주셔도 활성화가 되고,

SQL 파일에서 상기 이미지와 같이 USE [스키마 이름]; 명령어를 사용하셔도

해당 스키마가 활성화 됩니다 ^^

 

 

 

 

스키마가 활성화 되었다면 Tables 탭을 오른 클릭하시면

보시는 바와 같이 여러 추가 메뉴들이 출력됩니다

이 중에서 Create Table...를 선택해주시면 되겠습니다!

 

 

 

그럼 저번 포스트에서 스키마를 생성할 때 해당 작업 화면이 출력된 것처럼

테이블 생성과 관련된 화면이 출력됩니다

Table Name에 해당되는 부분에 사용자 임의의 이름을 지정해주시면 되는데요!

 

스키마 이름 설정과는 달리, 테이블은 각 스키마에 종속되어 있기 때문에

다른 스키마의 테이블 이름과 겹쳐도 상관 없는 것은 너무나 당연한 이야기겠죠? ^^

위 이미지는 제가 Workbench 뷰포트를 줄여놨기 때문에 테이블 내 Field 설정 관련 부분은 가려져서 보이지 않는데요

 

테이블을 생성할 때 아무런 필드를 지정하지 않고 한 번 생성을 해볼까요?

 

 

 

아무런 필드를 지정하지 않고 테이블 이름만 설정한 다음에

테이블을 생성하려고 할 때 대응되는 SQL Script가 되겠습니다

여기서 Apply를 눌러서 해당 명령문을 적용시켜 볼까요?

 

 

 

 

그럼 보시는 바와 같이 오류 메세지가 출력됩니다

왜 그럴까요? 바로, 테이블을 생성할 때 아무런 필드가 지정되지 않았기 때문입니다

해서 테이블을 생성하실 때 꼭 필드를 지정해주셔야 하는데요!

 

 

 

 

테이블 생성을 다시 진행해보겠습니다

먼저 사용할 임의의 테이블 이름을 지정해주시면 되시겠고요 ^^

 

아까는 화면에 가려져서 안 보였지만 테이블 생성시에 이렇게

필드를 지정할 수 있는 탭이 있습니다

보시면 Column Name, Datatype, PK, NN, UQ, B, UN, ZF, AI, G, Default/Expression 순서로 각 칸마다

해당 칸에 어떤 값을 설정해줄지 또는 선택할 체크박스가 있는데요

Column Name에는 말 그대로 해당 컬럼의 이름을 지정해주시면 됩니다

 

 

 

 

Datatype에는 해당 컬럼에 입력될 값들의 타입을 지정해주시면 되는데요

우리에게 익숙한 INT, DOUBLE, FLOAT, DECIMAL 등의 숫자 타입도 있고,

String에 해당하는 VARCHAR(),

날짜 타입인 DATETIME, TIMESTAMP() 등도 있습니다

 

작업하실 때 DB Architecture 설계 후 테이블 명세서를 작성하여

어떤 필드에 어떤 데이터가 들어갈 것이고, 해당 데이터의 타입은 어떻게 될 것인지

갈래가 다 도출된 다음에 실제 스키마 구성을 하는 것이 일반적인 작업 순서인데요!

 

이 수많은 데이터 타입 중에서 실제로 사용빈도가 높은 것들은 몇 개 되지 않습니다 ^^

INT, TINYINT, VARCHAR, TIMESTAMP, ENUM정도를 가장 많이 쓰지 않나 싶습니다 ^^

 

 

 

 

user 테이블을 만든다고 가정을 하고,

최소한의 필드만 한 번 지정을 해봤습니다

 

여기서, 필드에 지정할 속성 중에 자주 쓰이는 몇 가지가 있습니다

 

PK는 Primary Key를 의미하는데요.

테이블 내에서 각 행을 고유하게 식별하는 데 사용 됩니다! ^^

이 기본키는 모든 레코드에 대해서 고유해야 하며, Null을 허용하지 않습니다

때문에 PK로 지정된 필드는 부가적으로 NN, UQ, AI 등의 속성을

함께 지정하여 PK로서의 조건을 충족합니다

 

NN은 Not Null의 축약표현입니다.

해당 필드에는 Null을 허용하지 않으므로 입력되는 값이 없다면,

Null 상태로 두는 것이 아니라 미리 지정한 Default 값을 입력하게 되죠 ^^

 

UQ는 Unique의 축약 표현입니다.

해당 테이블에 여러가지 데이터들이 입력 되어 존재하게 될텐데,

이 속성을 체크해두면, 해당 필드에는 고유한 값만 허용합니다 ^^

예를 들어서, 실제 세상에는 수많은 동명이인이 존재하지만

만약 데이터베이스에서 UQ 속성을 지정해놓는다면, 해당 테이블에는 하나의 이름은 하나 밖에 허용하지 않게 됩니다 ^^

 

UN은 Unsigned의 축약표현입니다.

데이터 타입이 숫자일 경우에 음수는 제외하고 양수만 존재하게 됩니다 ^^

 

AI는 Auto Increment의 축약표현입니다.

테이블의 id 컬럼에 자주 사용하는 속성인데요

테이블에 새로운 레코드가 생성될 때마다 값이 자동으로 1씩 증가하여 입력됩니다 ^^

 

 

 

 

 

테이블 생성 및 필드 설정 등 일괄 작업에 대한 대응되는 코드는 상기 이미지와 같습니다

이것도 굉장히 짧고 간단한 수준이지만, 하나의 테이블에 수많은 필드들이 복잡하게 얽히고 섥힌다면

CLI 환경에서 코드로 논리적으로 명령을 내리는게 참 많이 번잡하겠죠? ^^

 

 

 

 

Apply → Finish까지 Error 메세지 없이 성공적으로 작업을 종료해주시면

해당 스키마 내에 임의의 테이블을, 필드 설정과 함께 마무리하셨습니다 ^^!

 

 

 

저번 포스트에서는 데이터베이스(스키마) 생성,

이번 포스트에서는 테이블 생성(필드 지정 및 설정)을 알아보았습니다!

 

스키마가 구성되었으니 이제 본격적으로 데이터를 삽입하고, 조회하고, 갱신하고, 삭제하는

기본적인 CRUD 작업을 알아보아야 하겠죠?

읽어주셔서 감사드리며, 다음 포스트에서 이어서 뵙겠습니다 ^^!