관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

실전용 SQL 미리 맛보기 2 - 데이터베이스 시작부터 끝까지 본문

알고리즘 및 자료 관리/SQL

실전용 SQL 미리 맛보기 2 - 데이터베이스 시작부터 끝까지

huenuri 2024. 10. 9. 17:09

오늘 오후에는 SQL 공부를 하려고 한다. 아침에는 정처기 실기 1권의 첫번째 장부터 수업을 다시 들으며 학습일지도 수정하며 새로 배운 것들을 정리했다.

놀고 싶은 마음도 많지만 그래도 오늘 오후에 해야 할 공부를 두 시간이라도 해볼 생각이다. 하다보면 재미있어서 계속 하게 될 때가 많다. 뭐든 일단 시작하는 게 가장 힘들다. 일단 책상 앞에 앉아서 시작했다면 반은 성공한 것이다.

 

이제 본격적으로 SQL을 사용해서 데이터베이스를 다뤄볼 차례이다. 아직은 데이터베이스에 익숙하지 않았지만, 전반적인 데이터베이스의 흐름을 학습함으로 재미를 느껴볼 수 있을 것 같다.

 

시작하기 전에

MySQL을 설치한 후에는 가장 먼저 데이터베이스를 준비해야 한다. 그리고 테이터베이스 안에 테이블을 생성해야 한다. 테이블은 2차원의 표 형태로 이루어져 있으며, 각 열에 해당하는 데이터를 한 행씩 입력할 수 있다. 필요하다면 행에 입력된 데이터를 수정하거나 삭제할 수 있다. 마지막으로 입력이 완료된 데이터를 조회해서 활용할 수 있다.


 

 

 

 

DBMS 설치하기

데이터베이스를 구축하기 위해서는 DBMS를 설치해야 한다. 앞선 장에서 DBMS의 한 종류인 MySQL을 설치했다. 아직은 DBMS 내부에 우리가 사용할 쇼핑몰 데이터베이스는 없는 상태이다.

 


 

 

 

데이터베이스 만들기

이제 DBMS 안에 데이터베이스를 만들 차례이다. 이번 실습을 마치면 다음 그림과 같이 비어있는 '쇼핑몰 데이터베이스'가 생성된다.


 

 

1. 스키마 만들기

비밀번호를 입력한 후 접속을 하고 왼쪽 하단에 스키마 탭을 선택한다. 이 탭을 선택하면 MySQL에 기본적으로 들어있는 데이터베이스가 3개 보인다. 왼쪽 빈 화면에 마우스 우클릭을 하고 Create Schema을 클릭한다.

 

스키마는 데이터베이스와 동일한 용어이다. 앞으로 스키마 용어가 나오면 그냥 데이터베이스라고 이해하면 된다.


 

 

 

 

2. 탭 이름 변경하기

Name에 쇼핑몰을 의미하는 'stop_db'를 입력하면 자동으로 탭 이름도 동일하게 변경된다. Apply 버튼을 클릭하면 SQL 문이 자동으로 생성된다. 다시 Apply와 Finish을 클릭하면 스키마 패널 목록에 shop_db가 추가된다.

 

 

 

 

 

 

아래 창에 보면 DB가 생성되었다.


 

 

 

3. 탭 닫기

비어있는 쇼핑몰 데이터베이스를 완성했다. 탭의 닫기를 통해 창을 닫아주었다.

 


 

 

 

 

테이블 만들기

이제 테이블을 만들 차례이다. 이번 실습에서 테이블을 만들면 다음과 같은 데이터베이스 안에 2개의 테이블이 생성된다.

 

 

테이블 설계하기

테이블을 설계한다는 것은 테이블의 열 이름과 데이터 형식을 지정하는 것이다. 회원 테이블은 다음과 같이 설계한다.

 

데이터 형식은 모두 문자로 지정하고, 문자는 CHAR라는 MySQL 문법상 이미 약속된 예약어를 사용해야 한다. 널은 빈 것을 의미하며, 널 허용 안함은 반드시 입력해야 한다는 것이다.

 

 

제품 테이블도 다음과 같이 설계한다.

 

회원 테이블과 차이점이 있다면 INT가 새롭게 등장한다. INT는 Integer의 약자로 소수점이 없는 정 수를 의미한다. DATE는 연, 월, 일을 입력한다.


 

 

 

 

테이블 생성하기

테이블을 생성하는 것도 MySQL 워크벤치에서 진행하면 된다.

 

 

1. 스키마 패널에서 테이블 생성하기

stop_db 메뉴에서 Create Table을 클릭하여 테이블을 만든다.


 

 

 

 

2. 회원 테이블의 내용 입력하기

테이블 이름에 member를 입력하고 열 이름의 첫번째 항목을 체크한다. 그리고 앞서 만든 표를 참고하며 만들어 나간다.

 

 

 

 

 

아래 빈 줄을 더블 클릭해서 회원 이름과 주소도 추가한다.

 

 

 

 

 

Apply을 눌러서 적용한다.

 

 

 

 

 

회원 테이블이 완성되었다.

 

이번에는 제품 테이블을 만들어볼 것이다. 제품 테이블을 만들다 틀린 부분이 있어서 수정했다. 수정을 하면 Ouput에 그 내역이 표시된다.

 

 

 

 

 

이것저것 만져보면서 에러도 나고 해서 뭔가 작업 내욕이 많아졌다. 하지만 이렇게 실수도 하면서 더 많이 배우는 것 같다.


 

 

 

3. 제품 테이블 생성 및 내용 입력하기

앞에서 했던 것처럼 테이블을 만들어본다.

 

 

 

 


 

 

 

4. 만들어진 테이블 확인하기

스키마 패널을 보면 두 개의 테이블이 만들어짔음을 확인할 수 있다.

 


 

 

 

 

데이터 입력하기

테이블 구성까지 완료했다. 이제는 실제로 에이터를 입력할 차례이다.  데이터는 행 단위로 입력한다. 회원 테이블에는 4건, 제품 테이블에는 3건의 데이터를 입력할 것이다. 입력 결과는 다음과 같다.

 

 

1. 회원 테이블 행 만들기

member 테이블을 우클릭하여 Select Rows - Limits 1000을 선택한다. 

 

 

 

 

 

 

가운데 표가 나타났지만 아직은 데이터가 한 것도 없는 NULL 상태이다.


 

 

 

 

2. 회원 데이터 입력하기

NULL 부분을 클릭해서 세부 내용에 데이터를 입력한다. 

 

 

 

 

 

 

 

테이블을 생성한 후 적용했는데 입력한 순서와 달라졌다. 아이디 열이 알파벳 순서로 정렬되었는데 그 이유는 member_id를 기본 키로 설정했기 때문이다. 기본 키로 설정한 열이 기준이 되어 오름차순으로 자동 정렬된다.


 

 

 

3. 제품 테이블 데이터 만들기

같은 방법으로 제품 테이블의 내용도 입력해본다.

 

 

 

 

 

 


 

 

 

4. 데이터 추가하기

연습용 데이터를 한 건 입력하여 Apply 버튼을 연속 2회 클릭한 후 Finish 버튼을 누른다.

 

자동 정렬되어 맨 밑에 있던 데이터가 위로 올라왔다.


 

 

 

5. 데이터 수정하기

조금 전에 입력한 데이터를 수정해보겠다.

 

 

INSERT 구문이 아니고 UPDATE로 수정된 것을 볼 수 있다. 수정하는 SQL 문은 UPDATE이다.

 

 

 

 


 

 

 

6. 데이터 삭제하기

이번에는 데이터를 삭제해보겠다. 삭제하고자 하는 행의 제일 앞부분을 클릭하면 행이 파란색으로 선택된다. 그 상태에서 마우스 우클릭을 하고 Delete Row를 선택한다. 삭제한 후에도 Apply을 클릭해야 한다.

 

 

 

 

 

 

모르고 잘못 쓴 내용 것을 다시 수정하고 앞의 행은 삭제했다.


 

 

 

 

 

데이터 활용하기

데이터까지 입력하여 데이터베이스 구축을 완료했다. 이번에는 데이터베이스를 활용하는 방법을 살펴보겠다. SQL에서는 데이터베이스를 활용하기 위해 주로 SELECT 문을 사용하며, 이 책에서도 SELECT 문을 활용하는 내용이 가장 많은 비중을 차지한다. 이제 데이터를 조회해볼 것이다.

 

 

1. 쿼리 탭 활성화하기

쿼리 창이 열려 있지 않으면 문서에 + 표시가 있는 아이콘을 클릭한다. 

 

 

SQL은 쿼리로도 부른다. 두 용어는 혼용되어 사용되며, SQL을 입력할 수 있는 빈 창을 'SQL 탭' 또는 '쿼리 창'이라고 부르기도 한다.


 

 

 

2. 입력할 창 선택하기

SQL을 입력하기 전에 먼저 스키마 패널에서 stop_db를 더블클릭한다. 진하게 변경되면 쿼리 창에 입력할 SQL이 선택된 stop_db에 적용된다. 


 

 

 

3. SQL 문 입력하기

 

1) 모든 열 조회하기

SELECT의 기본 형식을 다음과 같이 입력한다. 먼저 회원 테이블의 모든 열을 보여줘라는 의미로 이 문장을 쓴다.

 

 

그런 다음 번개 모양 아이콘을 클릭하면 이와 같이 조금 전에 만들었던 테이블이 조회된다.


 

 

 

2) 특정 열 조회하기

회원 테이블 중에서 이름과 주소만 출력해본다.

 


 

 

 

3) WHERE을 사용해서 특정 테이블 조회하기

이번에는 아이유 회원에 대한 정보만 출력해보겠다. 앞의 SQL을 지우지 말고 다음 줄에 이어서 다음과 같이 입력한 후 실행한다. WHERE 다음에 특정 조건을 입력하여 회원 이름이 '아이유'인 회원만 출력되도록 한다.

 

 

 

 

 

두 개의 SQL 결과가 모두 나온 것은 SQL을 실행할 때 쿼리 창에 있는 모든 SQL을 수행하기 때문이다. 지금은 SELECT만 있고 두 줄뿐이므로 큰 문제가 없지만, 나중에 여러 개의 SQL을 사용할 때는 주의해야 한다.

이러한 경우를 방지하기 위해 1개의 SQL만 남기고 모두 지우는 방법도 있지만, 더 편리한 방법은 필요한 부분만 마우스로 드래그해서 선택한 후에 실행하는 것이다. 

 

 

 

 

이번에는 하나만 실행되었다. 이렇게 해서 데이터베이스 구성도를 모두 완성했다.


 

 

 

 

 

단원 마무리하기


 

 

 

확인 문제 풀기

 

 

 

 

 

 

 


 

 

 

학습을 마치고

SQL 실습도 하고 정말 유익한 시간을 보냈다. 처음 해보는 거라 잘 안 되서 시간은 많이 걸렸지만 이렇게 천천히 공부하는 시간이 참 좋다. 오늘 많아야 3장까지 학습할 수 있을 것 같다.

오라클보다 MySQL이 다루기 더 편하고 재미있게 구성되어 있는 것 같다. 오라클은 테이블을 만들다는 생각보다는 그냥 쿼리문을 쓰는 개념이었다. 하지만 MySQL은 뭔가 설정하는 것도 복잡하기 해도 익히고 나면 재미있다.

 

앞으로 SQL을 더 좋아하게 될 것 같다. 이 책과 함께 공부하는 시간이 기대된다.