본문 바로가기
공부낙서장

[MySQL] Workbench 사용해보기

by 곰인간 2024. 9. 5.

express + mysql + aws rds를 사용해서 간단한 회원가입 로그인 로그아웃을 만들어보려고 하는데

express에서 테이블을 만드는 로직을 써서 테이블을 만들고 하는건 알겠는데, 

내가 작업할 프로젝트에서 테이블을 만드는 로직을 썼다가 지웠다가 하는건 아닌거 같아서 테이블을 생성하는 방법을 찾아봤다.

뭐 ORM이니 하는 것들이 있지만 일단 MySQL Workbench를 사용해보기로 했다.

좀 더 시각적으로 직관적이게 다가오는 느낌이 들어서.

먼저 Workbench를 검색해서 다운로드를 받는다.

설치를 하고 난 다음에 실행시긴다.

초기 실행화면

화면 상단에 빨간 박스로 되어있는 Database 탭을 클릭한다.

두번째 부분 클릭

파란색으로 칠해져있는 Manage Connections 클릭.

이런 창이 뜬다.

여기에 Hostname에 RDS 엔드포인트를 넣고 Port는 맞춰서 입력한다.
Username과 Password에는 RDS를 생성할 때 설정한 값들을 넣는다. 그리고 우측 하단에 Test Connection을 클릭해서 연결이 되는지 확인을 해준다. 아, Connection name도 입력할 것.

그 다음에는 첫번째 메인으로 돌아가서 생성된 SQL Connection에 들어간다.

DB커넥션

상단 File Edit등의 탭바 밑에 보면 뭔가 데이터 베이스를 추가할거 같이 생긴 아이콘이 있다 좌측에서 4번째 아이콘이다.

누르면 db 스키마를 생성할 수 있다.

db 스키마 생성 버튼을 눌렀을 시

그러면 이와 같은 창이 뜨는데 Name에는 원하는 이름을 아랫쪽 Charset에는 utf8로 설정 / Collation은 utf8_bin으로 설정해준다. bin은 아마 binary일거 같은데

생성된 db스키마

테이블을 우클릭 해준다.

테이블을 우클릭

첫 번째 Create Table을 눌러서 새로운 테이블을 생성해준다.

이렇게 테이블을 커스텀할 수 있다.

테이블 이름을 설정하고 아랫부분에서 테이블을 생성해보도록하자.

번외

PK (Primary Key) : 현재 칼럼을 기본 키로 설정, 기본 키는 각 행을 고유하게 식별하는데 사용되며, 반드시 유일해야한다. 

NN (Not Null) : 현재 칼럼의 값은 NULL을 허용하지 않음을 의미, 이 칼럼에는 반드시 값이 있어야한다. (required?)

UQ (Unique) : 칼럼의 값은 유일해야 함을 의미, 테이블 내에서 중복된 값이 존재할 수 없음.

B (Binary) : 칼럼이 이진 데이터 형식을 사용할 것임을 의미

UN (Unsigned) : 칼럼이 부호 없는 숫자 타입임을 의미, 부호 없는 숫자는 음수를 포함하지 않으며, 양수만 저장 가능.

ZF (Zero Fill) : 이 옵션은 숫자 데이터에 대해 0으로 채워진 값을 저장할 것임을 의미, ex. 값이 5이고 필드 길이가 3일 경우에 005로 저장됨.

AI (Auto Increment) : 칼럼의 값이 자동 증가함을 의미, 주로 기본 키로 사용되는 칼럼에 설정되며, 새로운 레코드가 추가될 때마다 값이 자동으로 증가.

G (Generated) : 칼럼은 생성된 값을 가지며, 주로 계산된 필드에 사용, ex. 다른 필드의 값을 조합하여 자동으로 값을 생성할 수 있음.

PK랑 UQ랑 둘다 유일성을 보장한다고 하는데

특징 Primary Key (PK) Unique Key (UQ)
유일성 유일성을 보장 유일성을 보장
NULL 허용 여부 NULL을 허용하지 않음 NULL을 허용할 수 있음
역할 테이블의 각 행을 고유하게 식별 고유 값이 필요한 필드에 설정
테이블당 개수 테이블당 하나만 설정 가능 테이블에 여러 개의 Unique 제약 조건을 설정
자동 인덱스 자동으로 인덱스 생성 자동으로 인덱스 생성
기본 사용 예시 id, 고유한 식별자 이메일, 사용자 이름 등 고유해야 하는 컬럼

 

  • Primary Key는 테이블의 주된 식별자로, 테이블에서 행을 고유하게 식별하는 데 사용됩니다.
  • Unique Key고유해야 하는 값을 저장하는 컬럼에 대해 중복을 방지하는 데 사용됩니다.

 

댓글