본문 바로가기
Database

[MySQL] 3. Database와 Table의 조회

by Rosmary 2024. 2. 22.
728x90
반응형

 

 

 

 

 

 

 

Database는 필요한 데이터를 저장하는 공간이다. 웹 포탈 등지에서 수 많은 사용자의 계정 정보 및 개인 정보도 Database에 저장되며, 이러한 엔터프라이즈 단위 뿐만 아니라 개인 단위에서도 자신에게 필요한 데이터를 Database에 저장하기도 한다. 예를 들면 조깅을 하는 사람이 자신이 하루동안 뛴 거리를 계속 기록하기 위한 용도라던가... 즉, Database는 특정 업무, 목적을 위한 데이터를 저장하는 용도라고 생각하면 된다.

 

하나의 DB 서버에는 하나 이상의 Database가 존재한다. 가령, 필자가 개인적으로 DB를 운용한다고 가정하면, "자산 관리"라는 이름의 데이터베이스에서는 필자가 지금까지 개인적으로 사용하는 돈의 액수나 벌어들이는 월급과 관련된 내용을 작성하고, "골프"라는 데이터베이스에서는 필자가 스크린 경기에서 얻은 타수를 정리하는데 사용할 수 있다. 이 말인 즉슨, DB 서버에서 관련있는 내용만 묶어 하나 이상의 데이터베이스로 데이터를 관리할 수 있다는 이야기다 (물론, 서버의 저장 공간이 허용하는 한도 내에서다).

 

DB에서 수행하는 작업을 보통 CRUD라고 한다. 이는 데이터의 생성(Create), 데이터의 조회(Read), 데이터의 수정(Update), 데이터의 삭제(Delete)를 의미한다. 너무 당연한 이야기인데, DB 서버에 어떤 데이터베이스가 있는지, 그리고 그 내부에 어떤 테이블이 있는지 모른다면 가장 기본적인 자료의 조회도 불가능하게 된다. 

 

따라서 이번 포스팅에서는 MySQL에서의 Database 목록 조회, 특정 Database의 Table 조회에 대한 내용을 작성해보려한다. 원래 Select문을 작성하려했는데, 필자가 테스트를 진행하다보니 DB와 Table 조회가 선행되어야 할 듯 해서 마음을 바꿨다.

 

 

**   시작 전, 환경 구성

mysqlsampledatabase.sql
0.19MB

 

위의 첨부파일은 MySQL 튜토리얼 사이트에서 받아온 Sample 데이터베이스이다. 파일 내 Database 및 Table 구성은 아래의 사이트를 참고하자.

 

https://www.mysqltutorial.org/getting-started-with-mysql/mysql-sample-database/

 

MySQL Sample Database

This page provides you with a MySQL sample database that helps you to practice with MySQL effectively and quickly.

www.mysqltutorial.org

 

필자는 위의 첨부파일을 Ubuntu DB 서버로 이동시킨 뒤, DB에 접속하여 아래의 쿼리를 실행함으로써 DB 정보를 이동시켰다 (Migration이라고 한다).

1
2
# SQL 접속 후
SOURCE [sample_file_path]
cs

 

파일 경로가 제대로 지정되었다면, 아래와 같이 Query OK라는 문구가 연달아 출력될 것이다.

 

 

기본적인 설정은 완료되었다. 본격적으로 시작해보자.

 

 

1. 서버 내 Database의 목록 조회

 

지난 포스팅까지만 해도, 필자의 MySQL 서버에는 MySQL 설치 후 기본적으로 제공되는 Database만 존재했다.

-  information_schema

-  mysql

-  performance_schema

-  sys

*  이들 Database는 MySQL을 구동하는데 필요한 정보가 저장되어 있다. 지난 포스팅에서 원격 접속 설정을 mysql 데이터베이스에서 진행했음을 기억해보자. 

 

그런데, 조금 전 환경 설정은, DB 파일에 저장되어 있던 특정 Database를 DB 서버 내에 설치하는 명령어였다. 그래서 Database 목록을 다시 검색해보면, 이전보다 Database의 수가 하나 더 늘어나 있음을 확인할 수 있다. Migration이 완료되었다면, Database와 테이블이 추가로 생성되었는지 확인해보자. 추가된 Database 명은 "classicmodels"다.

1
2
# DB 서버 내 모든 데이터베이스 목록 조회
SHOW DATABASES;
cs

 

"SHOW DATABASES" 쿼리는 현재 접속해 있는 MySQL 서버가 보유하는 모든 Database 목록을 보여주는 명령어다. 쿼리 결과로 출력되는 결과를 보면, 지금까지 보지 못했던 classicmodels라는 Database가 존재하는 것을 확인할 수 있다.

 

 

 

** Database의 생성 및 삭제와 관련된 내용은 추후 필요하다면 포스팅 할 예정이다.

 

 

 

2. Database의 사용

 

책꽂이에 꽃인 책의 내용을 보거나 공책 메모를 수정해야한다고 가정해보자. 당연히 책꽂이에서 책을 뺴서 책상에 펼친 뒤에야, 글을 읽던 쓰던 할 수 있을 것이다. DB 서버도 마찬가지다. 어떠한 정보를 조회하거나 수정하려면 관련있는 Database를 사용하겠다고 서버에 알려주어야 한다. 

 

classicmodels 데이터베이스를 사용하기 위한 쿼리의 모양은 아래와 같다.

1
2
# 특정 DB의 사용
USE [database_name];
cs

 

형식에 맞게 쿼리를 작성하여 날렸을 때, 아래와 같이 Database가 변경되었다는 문구가 출력되면 된다.

 

변경이 안된다면 오타가 있거나, MySQL 서버에 접속한 계정이 해당 Database를 조회할 수 있는 권한이 없기 때문이다. 권한 문제인 경우, 이전 포스팅을 참고하여 모든 Database에 모든 권한을 부여한 뒤 다시 시도하자.

 

만약 특정 Database를 사용하는 도중에, 다른 Database를 사용해야한다면 단순히 USE 쿼리를 사용하면 된다. 현재 필자는 classicmodels라는 Database를 사용중이나, USE 쿼리로 mysql Database를 사용하도록 즉시 변경할 수 있다.

 

 

 

 

3. Database 내 Table 조회

 

데이터는 단순히 Database에 저장되지 않는다. 이들 데이터는 Database 내에 Table이라는 객체에 저장이 되는데, Table은 관련있는 데이터의 모음으로 행(row)과 열(column)로 구성된다. 마치 엑셀 파일(Table) 여러 개가 하나의 폴더(Database)에 저장된 형태라고 생각하면 된다. 웹 사이트에서 사용자의 계정 정보를 관리할 때, 개인 정보는 "개인정보" Table에서 관리하고, 계정정보는 "계정정보"라는 테이블에 기록한다고 생각하면 된다. 

대충 이런 모양이다.

 

조금 더 상세한 Architecture는 아래와 같은 모양인데, 우선 참고만 하자.

출처: https://www.i2tutorials.com/wp-content

 

 

이제 사용하는 Database 내 어떤 테이블이 있는지 확인해보자. 이는 마치 책꽂이의 책을 펼쳐 목차를 확인하거나, 엑셀 파일이 저장된 폴더를 여는 것과 비슷하다. 쿼리는 아래와 같이 입력한다.

1
2
# DB 내 Table 목록 조회
SHOW TABLES;
cs

 

 

필자는 방금 전 Database를 mysql을 사용한다고 쿼리를 날렸기 때문에 결과로 출력되는 Table 목록은 전부 mysql Database의 테이블 정보다.

 

 

이 상태에서 Database를 classicmodels로 변경하고 다시 테이블 조회를 하면 방금 전과 다른 테이블 목록이 나타남을 확인할 수 있다.

 

 


 

이번 포스팅에서는 MySQL 서버 내에 존재하는 Database 목록 및 Table을 조회하는 방법에 대해 알아보았다. 사실 MySQL이 아닌 다른 종류의 RDBMS들은 Database와 Table을 조회하는 쿼리가 조금씩 다르다. 가령 PostgreSQL은 Database 및 Table 조회 시, '\l'과 '\t' 쿼리를 사용하며, Database의 변경 역시 USE가 아니라 '\c'라는 쿼리를 사용한다 (개인적으로 Postgresql의 기본 쿼리는 모양이 짧아서 외우기가 익숙하지 않다).

 

다음 포스팅에서는 진짜... SELECT 문에 대해서 작성하려한다.

 

 

 

END.

반응형

'Database' 카테고리의 다른 글

[MySQL] 2. MySQL 설치 후 접속 설정  (0) 2024.02.21
[MySQL] 1. Ubuntu 23.04에 MySQL 설치 (apt-get)  (0) 2024.02.20

댓글