먼저 docker에 mariadb를 구축하고 datagrip 툴을 사용해서 테이블 생성과 CRUD를 해보겠다.

datagrip 툴을 사용해도 되고 idea ultimate 버전이 있다면 shift 두번 누른다음에 database 친 다음에 엔터를 누르면 우측에 datagrip 과 동일한 툴을 사용할 수 있다.

로컬 MariaDB 구동

앞에서 window 기반 docker desktop 을 설치 하였다면 power shell에서 아래와 같이 mariadb를 설치한다. docker desktop을 설치하지 않았다면 https://eastflag.co.kr/window-docker/ 를 참고하여 설치한다.

GUI로 할 수도 있는데 이렇게 명령행으로 하는게 훨씬 간편하다.

옵션은 다음과 같다.

  • -d : 백그라운드로 실행
  • -p 3306:3306 왼쪽은 로컬 포트이고 오른쪽은 docker에서 실행된 db 포트이다.
  • -e MYSQL_ROOT_PASSWORD=1234 : -e는 환경 설정 옵션이다. root 패스워드를 1234로 설정한다.
  • – – name=mariadb_container : 구동할 컨테이너 이름을 mariadb_container로 설정하였다.

docker desktop을 확인해보면 Running 상태로 나올것이다. 만일 stop 되어있다면 목록에 마우스를 올리면 맨 오른쪽에 Running 버튼이 나올것이다. 그것을 클릭하면 구동된다.

DB 및 user 생성

docker 내부로 진입하여 database 및 user를 생성한다.

예제로 database 이름은 eastdb 로 user는 eastflag 패스워드는 12345678 로 생성한다.

DataGrip으로 DB 접속

앞에서 설정한 정보를 갖고 아래와 같이 접속한다.

Download 가 나오면 MariaDB 드라이버가 없다는 얘기이므로 Download 버튼을 눌러서 드라이버를 다운로드 받는다.

정보를 입력후 Test Connection을 누른다. 연결이 되면 successful 이 뜰것이다. 그러면 Apply 후에 OK 버튼을 누른다.

database가 0 of 2 라고 나오는 것은 database가 2개 있는데 선택한 database가 없다는 얘기이므로 앞에서 생성한 eastdb를 선택한다.

테이블 생성

샘플로 만들고자 하는 테이블은 다음과 같다. board 테이블을 생성하는 DDL 구문은 아래와 같은데, 이것을 DataGrip 의 GUI로 만들어 보겠다.

eastdb를 선택한 다음 우클릭 후에 new > table을 선택한다.

Create New Table이 나오면 먼저 테이블명과 comment를 입력한다.

그리고 중간쯤에 보이는 +를 누르면 컬럼을 추가할 수 있다. +를 누르고 id 컬럼을 추가한다. 입력할때 마다 하단에 SQL Script가 자동으로 생성되는것을 확인해보라.

나머지 컬럼도 DDL 구문을 보고 GUI로 동일하게 만들어 본다.

두번째 테이블 comment의 DDL 구문은 다음과 같다.

board 테이블과 comment 테이블 사이에 one to many 관계를 형성하기 위한 GUI 화면은 다음과 같다.

테이블 CRUD

테이블 insert, update, select, delete 를 GUI로 해보겠다.

먼저 select, insert 하는 방법은 해당 테이블을 선택후 상단 edit data 아이콘을 클릭한다. 그러면 오른쪽에 데이터가 select 된다.

insert 하는 방법은 상단 + 아이콘을 클릭하면 아래쪽에 빈 줄이 하나 추가된다. 거기에 내용을 입력한 다음에 상단 DB 아이콘을 클릭하면 commit 된다.

delete 하는 방법은 해당 row를 선택후 상단 – 버튼을 누른 다음에 DB 아이콘을 누르면 commit 된다.

Query Console 사용법

상단 Jump to Query Console 아이콘을 클릭하면 console 창이 열린다.

Diagram 그리기

DB를 선택후 우클릭한 다음 Diagrams > Show Visualization 을 선택하면 우측에 Diagram이 그려진다. ERD 라기 보다 UML 형태이긴 하지만 테이블과의 관계를 한 눈에 살펴보는데는 무리가 없다.