먼저 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로 할 수도 있는데 이렇게 명령행으로 하는게 훨씬 간편하다.
1 2 3 4 5 |
# mariadb 이미지 다운로드 docker pull mariadb # mariadb 구동 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mariadb_container mariadb |
옵션은 다음과 같다.
- -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 생성
oracle 같은 경우는 관리자 계정이 생성되어있고 관리자 계정을 통해서 DB 생성을 할수 있으므로 이 과정이 필요없지만 mariadb는 root 계정이 원격 접속이 디폴트로 막혀있으므로 이 과정이 필요하다.
docker 내부로 진입하여 database 및 user를 생성한다.
예제로 database 이름은 eastdb 로 user는 eastflag 패스워드는 12345678 로 생성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# docker 내부로 진입 docker exec -it mariadb_container /bin/bash # mysql shell 진입, 프람프트가 나오면 1234 입력 mysql -u root -p # database 생성 및 한글 설정 create database eastdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; # 사용자 생성 create user 'eastflag'@'%' identified by '12345678'; Query OK, 0 rows affected (0.007 sec) # 사용자에게 권한 설정 grant all privileges on eastdb.* to 'eastflag'@'%'; |
DataGrip으로 DB 접속
앞에서 설정한 정보를 갖고 아래와 같이 접속한다.
Download 가 나오면 MariaDB 드라이버가 없다는 얘기이므로 Download 버튼을 눌러서 드라이버를 다운로드 받는다.
정보를 입력후 Test Connection을 누른다. 연결이 되면 successful 이 뜰것이다. 그러면 Apply 후에 OK 버튼을 누른다.
database가 0 of 2 라고 나오는 것은 database가 2개 있는데 선택한 database가 없다는 얘기이므로 앞에서 생성한 eastdb를 선택한다.
테이블 생성
샘플로 만들고자 하는 테이블은 다음과 같다. board 테이블을 생성하는 DDL 구문은 아래와 같은데, 이것을 DataGrip 의 GUI로 만들어 보겠다.
1 2 3 4 5 6 7 8 9 10 |
create table board ( id int auto_increment primary key, title varchar(100) null comment '제목', content text null comment '내용', created timestamp default current_timestamp() null, updated timestamp null on update current_timestamp() ) comment '게시판'; |
eastdb를 선택한 다음 우클릭 후에 new > table을 선택한다.
Create New Table이 나오면 먼저 테이블명과 comment를 입력한다.
그리고 중간쯤에 보이는 +를 누르면 컬럼을 추가할 수 있다. +를 누르고 id 컬럼을 추가한다. 입력할때 마다 하단에 SQL Script가 자동으로 생성되는것을 확인해보라.
나머지 컬럼도 DDL 구문을 보고 GUI로 동일하게 만들어 본다.
두번째 테이블 comment의 DDL 구문은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 |
create table comment ( id int auto_increment primary key, content text null, created timestamp default current_timestamp() null, updated timestamp null on update current_timestamp(), board_id int null, constraint comment_board_id_fk foreign key (board_id) references board (id) ); |
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 형태이긴 하지만 테이블과의 관계를 한 눈에 살펴보는데는 무리가 없다.