MySQL 테이블 데이터 및 구조 확인 방법 (SHOW TABLES, DESCRIBE, SELECT, INFORMATION_SCHEMA)

目次

1. Introduction

MySQL로 데이터베이스를 관리할 때 “테이블 안에 무엇이 들어 있는지” 확인하고 싶을 때가 많습니다. 예를 들어 테스트 데이터가 올바르게 저장됐는지 확인하거나, 애플리케이션을 개발하면서 예상한 데이터가 삽입되는지 확인하고 싶을 수 있습니다. 테이블 내용을 빠르게 살펴볼 수 있는 능력은 매우 중요합니다.

개발 및 일상 운영 중에도 “테이블 구조는 어떻게 생겼나요?” 혹은 “컬럼 타입과 제약조건은 무엇인가요?”와 같은 정보가 자주 필요합니다. 하지만 MySQL에 익숙하지 않다면 테이블 내용과 구조를 확인하는 방법이 생각보다 모호할 수 있습니다.

이 글에서는 MySQL에서 테이블 내용과 구조를 확인하는 기본부터 실무에서 자주 쓰는 명령어와 고급 기법, 그리고 흔히 발생하는 오류와 해결 방법까지 모두 설명합니다. 초보자와 MySQL을 자주 사용하는 개발자 모두에게 도움이 될 수 있도록 구성했으니, 참고용으로 활용해 주세요.

2. Prerequisite: How to Connect to MySQL

MySQL 테이블의 내용과 구조를 확인하려면 먼저 MySQL 서버에 연결해야 합니다. 여기서는 터미널(또는 명령 프롬프트)에서 MySQL에 로그인하는 방법과 데이터베이스를 선택하는 방법을 설명합니다.

How to log in to MySQL

MySQL에 연결하려면 다음 명령을 사용합니다.

mysql -u username -p

“username”을 MySQL 사용자 이름으로 바꾸세요. 명령을 실행하면 비밀번호를 입력하라는 프롬프트가 나타납니다—올바른 비밀번호를 입력하면 됩니다.

Select a database

로그인에 성공하면 MySQL 프롬프트(mysql>)가 표시됩니다. 작업하려는 데이터베이스를 선택하려면 다음 명령을 입력합니다.

USE database_name;

이후 수행되는 모든 작업은 선택한 데이터베이스를 기준으로 실행됩니다.
이 단계를 놓치면 “No database selected”와 같은 오류가 발생할 수 있으니 주의하세요.

How to list databases

서버에 존재하는 데이터베이스 목록을 보고 싶다면 다음 명령을 사용할 수 있습니다.

SHOW DATABASES;

이 명령은 모든 데이터베이스 이름을 리스트 형태로 보여줍니다. 필요에 따라 여기서 대상 데이터베이스 이름을 확인하고 USE database_name;으로 전환하면 됩니다.

3. Check the Table List (Display a List of Tables)

MySQL에 연결하고 대상 데이터베이스를 선택한 뒤에는 “어떤 테이블이 존재하는지” 확인하고 싶을 때가 많습니다. 여기서는 테이블 목록을 나열하는 기본 방법과 필요한 테이블만 골라볼 수 있는 유용한 기법을 소개합니다.

Basic command to list tables

테이블 목록을 표시하려면 다음 명령을 사용합니다.

SHOW TABLES;

이 명령을 실행하면 현재 선택된 데이터베이스에 있는 모든 테이블 이름이 리스트로 표시됩니다.
예를 들어 users, orders, products와 같은 테이블 이름이 세로로 나열될 수 있습니다.

Check the table list in another database

현재 선택되지 않은 다른 데이터베이스의 테이블 목록을 확인하고 싶다면 다음과 같이 명령을 작성합니다:

SHOW TABLES FROM database_name;

이 방법을 사용하면 매번 USE 명령으로 데이터베이스를 전환하지 않고도 지정한 데이터베이스의 테이블을 빠르게 확인할 수 있습니다.

Search (filter) for specific table names

테이블이 많을 경우 원하는 테이블을 빠르게 찾고 싶을 때가 있습니다. 이때는 LIKE 옵션을 이용해 필터링할 수 있습니다.

SHOW TABLES LIKE 'search_word%';

예를 들어 user로 시작하는 테이블만 표시하려면 SHOW TABLES LIKE 'user%';와 같이 지정합니다.

또한 MySQL 버전에 따라 SHOW TABLES WHERE 절을 사용할 수도 있습니다.

SHOW TABLES WHERE Tables_in_database_name LIKE '%keyword%';

테이블 목록을 나열하는 것은 MySQL의 기본 작업이지만, 약간의 트릭만으로 관리와 검색 효율을 크게 높일 수 있습니다.

4. Check the Table Structure (List of Columns)

Before checking table contents, it’s very important to understand “which columns exist and what data types and constraints are set.” Knowing the table structure helps you retrieve and edit data correctly, and it also helps prevent issues during system development and operations.

테이블 내용을 확인하기 전에, 어떤 컬럼이 존재하고 어떤 데이터 타입 및 제약 조건이 설정되어 있는지 이해하는 것이 매우 중요합니다. 테이블 구조를 알면 데이터를 올바르게 조회하고 수정할 수 있으며, 시스템 개발 및 운영 중 발생할 수 있는 문제를 예방하는 데에도 도움이 됩니다.

Basic command: DESCRIBE (DESC)

기본 명령: DESCRIBE (DESC)

The most common command to check table structure is DESCRIBE. You can also use the shorthand DESC.

테이블 구조를 확인하는 가장 일반적인 명령은 DESCRIBE입니다. 축약형 DESC도 사용할 수 있습니다.

DESCRIBE table_name;

or

DESC table_name;

When you run this command, MySQL displays a list of column names, data types, NULL constraints, primary key information, and more.

이 명령을 실행하면 MySQL은 컬럼 이름, 데이터 타입, NULL 제약 조건, 기본 키 정보 등 다양한 정보를 목록으로 표시합니다.

Main items shown:

표시되는 주요 항목:

  • Field (column name)
  • Field (컬럼 이름)
  • Type (data type)
  • Type (데이터 타입)
  • Null (whether NULL is allowed)
  • Null (NULL 허용 여부)
  • Key (primary key, foreign key, etc.)
  • Key (기본 키, 외래 키 등)
  • Default (default value)
  • Default (기본값)
  • Extra (additional info such as auto-increment)
  • Extra (auto-increment 등 추가 정보)

SHOW COLUMNS command

SHOW COLUMNS 명령

SHOW COLUMNS FROM table_name; displays almost the same content as DESCRIBE. Depending on the situation, using this command is also fine.

SHOW COLUMNS FROM table_name;DESCRIBE와 거의 동일한 내용을 표시합니다. 상황에 따라 이 명령을 사용해도 무방합니다.

If you want more detailed information

더 자세한 정보를 원한다면

If you need more detailed column information, use SHOW FULL COLUMNS FROM table_name;. This includes additional information such as collation (Collation) and privileges (Privileges).

보다 자세한 컬럼 정보를 원한다면 SHOW FULL COLUMNS FROM table_name;을 사용하십시오. 여기에는 정렬 방식(Collation) 및 권한(Privileges)과 같은 추가 정보가 포함됩니다.

When table structure checks are useful

테이블 구조 확인이 유용한 경우

  • Understand “what columns exist” during new development or maintenance
  • 새로운 개발이나 유지보수 시 “어떤 컬럼이 존재하는지” 이해한다
  • Check column types, NULLability, and primary key info when investigating an existing system or performing data integration
  • 기존 시스템을 조사하거나 데이터 통합을 수행할 때 컬럼 타입, NULL 허용 여부, 기본 키 정보를 확인한다
  • Clarify “what data type will be stored” when writing code
  • 코드를 작성할 때 “어떤 데이터 타입이 저장될지” 명확히 한다

To check table contents safely and accurately, start by confirming the table structure first.

테이블 내용을 안전하고 정확하게 확인하려면 먼저 테이블 구조를 확인하는 것부터 시작하십시오.

5. Check Table Contents (Data)

5. 테이블 내용 확인 (데이터)

Once you understand the table structure, the next step is to check what data is actually stored in the table. In MySQL, you can easily retrieve data from a table using the SELECT statement.

테이블 구조를 이해했다면, 다음 단계는 테이블에 실제로 저장된 데이터를 확인하는 것입니다. MySQL에서는 SELECT 문을 사용하여 테이블 데이터를 손쉽게 조회할 수 있습니다.

View all data

모든 데이터 보기

If you want to display all rows in a table, write the query like this:

테이블의 모든 행을 표시하려면 다음과 같이 쿼리를 작성합니다:

SELECT * FROM table_name;

Running this command displays all rows (records) in the table.
However, if the table contains a large amount of data, displaying everything at once can be hard to read—so use caution.

이 명령을 실행하면 테이블의 모든 행(레코드)이 표시됩니다.
하지만 테이블에 데이터가 많을 경우 한 번에 모두 표시하면 읽기 어려울 수 있으니 주의하십시오.

Select only the columns you need

필요한 컬럼만 선택하기

If you don’t need all columns and want to see only specific information, specify the column names you want to retrieve:

모든 컬럼이 필요 없고 특정 정보만 보고 싶다면, 조회하려는 컬럼 이름을 지정합니다:

SELECT column1, column2 FROM table_name;

This displays only the specified columns, making it easier to review or aggregate data.

이렇게 하면 지정한 컬럼만 표시되어 데이터를 검토하거나 집계하기가 쉬워집니다.

Filter data by conditions

조건으로 데이터 필터링

If you want to check only data that matches certain conditions, use the WHERE clause:

특정 조건에 맞는 데이터만 확인하려면 WHERE 절을 사용합니다:

SELECT * FROM table_name WHERE column_name = 'value';

For example, if you want to check “only the user with id = 10” in the users table, write it like:
SELECT * FROM users WHERE id = 10;

예를 들어 users 테이블에서 id = 10인 사용자만 확인하고 싶다면 다음과 같이 작성합니다:
SELECT * FROM users WHERE id = 10;

If you want to search using a partial match, use the LIKE operator:

부분 일치를 사용해 검색하려면 LIKE 연산자를 사용합니다:

SELECT * FROM table_name WHERE column_name LIKE 'A%';

In this example, only records whose column value starts with “A” will be displayed.

이 예시에서는 컬럼 값이 “A”로 시작하는 레코드만 표시됩니다.

Limit the number of rows returned (LIMIT clause)

반환되는 행 수 제한 (LIMIT 절)

If the table contains a very large number of rows, it’s also important to limit how many results are displayed using the LIMIT clause:

테이블에 행이 매우 많을 경우 LIMIT 절을 사용해 표시되는 결과 수를 제한하는 것이 중요합니다:

SELECT * FROM table_name LIMIT 10;

This displays only the first 10 rows.
In addition, you can use OFFSET to specify which row to start from:

이렇게 하면 처음 10행만 표시됩니다.
또한 OFFSET을 사용해 시작 행을 지정할 수 있습니다:

SELECT * FROM table_name LIMIT 10 OFFSET 20;

This retrieves 10 rows starting from the 21st row, which is useful for paging and reviewing large datasets.

이는 21번째 행부터 10행을 가져오며, 페이지네이션이나 대용량 데이터 검토에 유용합니다.

6. Get More Detailed Table Information

6. 더 자세한 테이블 정보 얻기

In MySQL, there are commands not only to check table contents and structure, but also to retrieve more detailed information. Here, we explain how to check table status, creation details, table size, and more.

MySQL에서는 테이블 내용과 구조를 확인하는 명령뿐만 아니라 보다 상세한 정보를 조회하는 명령도 있습니다. 여기서는 테이블 상태, 생성 상세 정보, 테이블 크기 등을 확인하는 방법을 설명합니다.

Check table status (SHOW TABLE STATUS)

테이블 상태 확인 (SHOW TABLE STATUS)

If you want an overview of table status and basic information, use the SHOW TABLE STATUS command:

테이블 상태와 기본 정보를 한눈에 보고 싶다면 SHOW TABLE STATUS 명령을 사용하십시오:

SHOW TABLE STATUS;

이 명령을 실행하면 현재 선택된 데이터베이스의 모든 테이블에 대해 다음과 같은 정보 목록이 표시됩니다:

  • 테이블 이름 (Name)
  • 엔진 (Engine)
  • 행 수 (Rows)
  • 테이블 크기 (Data_length, Index_length)
  • 생성 시간 (Create_time)
  • 마지막 업데이트 시간 (Update_time)
  • 정렬 방식 (Collation) 등

특정 테이블만 확인하고 싶다면 다음과 같이 지정합니다:

SHOW TABLE STATUS LIKE 'table_name';

테이블 생성에 사용된 SQL (SHOW CREATE TABLE)

“이 테이블을 만들 때 어떤 SQL이 사용되었나요?” 라고 알고 싶다면 SHOW CREATE TABLE 명령이 유용합니다:

SHOW CREATE TABLE table_name;

실행하면 해당 테이블을 생성하는 정확한 CREATE TABLE 문이 출력됩니다.
이 명령은 테이블 마이그레이션, 백업, 그리고 다른 환경에서 동일한 테이블을 재생성할 때 매우 도움이 됩니다.

상세 테이블 정보가 유용한 경우

  • 성능 향상 및 저장소 관리를 위해 테이블 크기와 행 수를 이해하기
  • 마이그레이션 및 리팩터링을 위한 참고 자료로 DDL(테이블 정의) 확인하기
  • 엔진 유형, 문자 집합, 인덱스 정보를 조사하여 시스템 문제 원인 파악에 도움 주기

이 명령들을 숙달하면 MySQL 운영 및 문제 해결에서 할 수 있는 일의 범위를 크게 확장할 수 있습니다.

7. INFORMATION_SCHEMA 로 확인하기 (고급)

MySQL은 INFORMATION_SCHEMA 라는 특수 데이터베이스를 제공합니다. 이 데이터베이스는 전체 MySQL 서버에 대한 다양한 메타데이터를 저장하는데, 테이블 정보, 컬럼 상세, 인덱스, 권한 등 여러 정보를 포함합니다. 이를 활용하면 보다 유연하고 상세하게 테이블 및 컬럼 정보를 조회할 수 있습니다.

INFORMATION_SCHEMA 로 테이블 정보 조회

예를 들어 특정 데이터베이스에 존재하는 모든 테이블 이름 목록을 가져오고 싶다면 다음 SQL을 사용할 수 있습니다:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'database_name';

많은 수의 테이블을 관리 도구로 검사하거나 스크립트로 자동 수집해야 할 때 유용한 SQL입니다.

컬럼 및 인덱스 정보 조회

컬럼 정보도 비슷한 방식으로 조회할 수 있습니다:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name'
  AND TABLE_NAME = 'table_name';

또한 INFORMATION_SCHEMA 를 이용하면 인덱스 상세, 제약조건, 외래키 등 메타데이터를 손쉽게 가져올 수 있습니다.

ANALYZE TABLE 과의 관계

성능 튜닝 및 통계 갱신을 위해 ANALYZE TABLE 명령을 사용합니다.
이 명령을 실행하면 테이블 통계가 업데이트되고, INFORMATION_SCHEMA 로부터 가져오는 통계값(예: 추정 행 수)도 보다 정확해집니다.

ANALYZE TABLE table_name;

INFORMATION_SCHEMA 를 언제 사용할까

  • 여러 테이블이나 컬럼의 정보를 한 번에 조회하고 싶을 때
  • 배치 처리나 자동화 스크립트에서 테이블·컬럼 구조를 점검할 때
  • 인덱스, 외래키, 테이블 주석 등 상세 정보를 필요로 할 때

INFORMATION_SCHEMA 는 MySQL을 보다 깊이 이해하고 효율적으로 운영하기 위한 강력한 도구입니다. 일상 관리 작업과 시스템 개발에서 적극 활용하세요.

8. CLI 도구 및 단축키

MySQL에서 테이블 내용과 구조를 확인할 때 편리한 명령줄 인터페이스(CLI) 명령 및 옵션을 알면 효율을 크게 높일 수 있습니다. 여기서는 자주 쓰이는 CLI 도구와 유용한 단축키를 소개합니다.

mysqlshow 명령

MySQL은 mysqlshow 라는 전용 CLI 도구를 제공합니다.
이 도구는 데이터베이스와 테이블 목록을 표시하는 데 특화되어 있어 MySQL에 인터랙티브하게 로그인하지 않고도 정보를 빠르게 확인할 수 있습니다.

데이터베이스 목록 표시

mysqlshow -u username -p

특정 데이터베이스의 테이블 표시

mysqlshow -u username -p database_name

특정 테이블의 컬럼 정보 표시

mysqlshow -u username -p database_name table_name

이 짧은 명령어들을 사용하면 구조와 존재 여부를 빠르게 확인할 수 있어 서버 관리 및 스크립팅에 편리합니다.

“\G” 옵션으로 출력 가독성 높이기

MySQL에서 SQL을 실행하면 결과가 가로형 테이블 형태로 표시됩니다. 그러나 컬럼이 많거나 정보가 방대할 경우 “\G”를 사용하면 결과가 세로로 표시되어 훨씬 읽기 쉬워집니다.

예시 사용법

SELECT * FROM table_name\G

이와 같이 작성하면 각 레코드가 세로로 표시되고, 컬럼명과 값이 쌍으로 나타납니다.
특히 테이블 구조를 확인하거나 단일 레코드의 세부 정보를 꼼꼼히 검토할 때 유용합니다.

기타 유용한 CLI 기술

  • 명령 기록 사용 위·아래 화살표 키를 이용해 이전에 실행한 명령을 불러올 수 있으므로 같은 명령을 반복해서 입력할 필요가 없습니다.
  • 탭 자동완성 테이블이나 컬럼 이름을 입력할 때 이름의 일부만 입력한 뒤 Tab 키를 누르면 자동으로 완성되어 철자 및 입력 오류를 줄여줍니다.

CLI 도구와 단축키를 숙달하면 MySQL 작업이 보다 편리하고 효율적이 됩니다. 일상 업무와 개발 작업에 적극 활용해 보세요.

9. 일반적인 오류와 해결 방법

MySQL에서 테이블 내용 및 구조를 확인할 때 초보자와 숙련자 모두 최소 한 번은 겪게 되는 일반적인 오류가 여러 가지 있습니다. 여기서는 전형적인 오류와 원인, 해결 방법을 명확히 설명합니다.

데이터베이스가 선택되지 않음

오류 메시지

ERROR 1046 (3D000): No database selected

원인 및 해결책
데이터베이스를 먼저 선택하지 않은 상태에서 테이블 작업을 시도할 때 발생합니다.
다음과 같이 대상 데이터베이스를 미리 지정하십시오:

USE database_name;

알 수 없는 데이터베이스

오류 메시지

ERROR 1049 (42000): Unknown database 'database_name'

원인 및 해결책
지정한 데이터베이스가 존재하지 않을 때 발생합니다. 흔한 원인으로는 철자 오류, 대소문자 구분 오류, 혹은 데이터베이스가 아직 생성되지 않은 경우가 있습니다.
다음 명령을 사용해 올바른 이름을 확인하십시오:

SHOW DATABASES;

권한 오류 (SHOW TABLES / SHOW COLUMNS 결과 없음)

예시 상황

  • SHOW TABLES 실행 시 테이블이 전혀 표시되지 않음
  • SHOW COLUMNS 실행 시 정보가 전혀 표시되지 않음

원인 및 해결책
MySQL 사용자가 해당 데이터베이스 또는 테이블에 대한 충분한 권한이 없을 때 발생합니다.
관리자(예: root 사용자)에게 필요한 권한을 부여하도록 요청하거나, 적절한 GRANT 명령을 사용해 권한을 설정하십시오.

반환 행이 너무 많아 결과가 읽기 어려움

예시 상황

  • SELECT * FROM table_name; 을 실행하면 수만 행이 한 번에 표시됨

해결책
LIMIT 절을 사용해 반환되는 행 수를 제한합니다.
예시:

SELECT * FROM table_name LIMIT 10;

테이블 또는 컬럼 이름 오타

예시 상황

  • ‘field list’에 알 수 없는 컬럼 ‘column_name’
  • ‘database_name.table_name’ 테이블이 존재하지 않음

해결책
오타를 방지하려면 CLI에서 SHOW TABLES, SHOW COLUMNS 또는 탭 자동완성 기능을 활용하십시오.

대부분의 오류는 기본적인 점검을 꼼꼼히 수행하면 예방할 수 있습니다. 문제가 발생하면 위의 항목들을 단계별로 검토해 보세요.

10. 요약

MySQL에서 “테이블 내용 확인”이라는 기본 작업을 수행하는 방법은 다양합니다. 이 글에서는 테이블 목록 조회, 상세 구조 확인, 실제 데이터 추출은 물론 고급 메타데이터와 상세 관리 정보를 얻는 방법까지 모두 다루었습니다.

  • SHOW TABLES 를 사용하여 테이블을 나열합니다,
  • DESCRIBE (DESC) 또는 SHOW COLUMNS 를 사용하여 컬럼 정보와 구조를 확인합니다,
  • SELECT 문을 사용하여 실제 데이터를 조회합니다,
  • 필요에 따라 SHOW TABLE STATUS, SHOW CREATE TABLE, 그리고 INFORMATION_SCHEMA 를 사용해 상세 관리 정보와 DDL을 검사합니다,
  • CLI 도구, 단축키, 트러블슈팅 지식을 활용해 일상적인 개발 및 운영 효율성을 향상시킵니다.

이러한 기술을 마스터하면 MySQL 데이터베이스 작업이 보다 안전하고 신뢰할 수 있게 되며, 실수나 문제를 최소화할 수 있습니다. 이 내용은 초보자, 중급 사용자, 그리고 실제 환경에서 작업하는 전문가에게 유용합니다. 앞으로의 개발 및 시스템 관리 작업에 이러한 기술을 적용하십시오.

11. FAQ (자주 묻는 질문)

Q1. 특정 조건으로 테이블 데이터를 어떻게 확인할 수 있나요?

A:
다음과 같이 WHERE 절을 사용합니다:

SELECT * FROM table_name WHERE condition;

예를 들어:

SELECT * FROM users WHERE age > 30;

이 쿼리는 30세 이상인 사용자만 조회합니다. LIMIT 절과 함께 사용하면 표시되는 행 수를 제어할 수 있습니다.

Q2. SHOW TABLES 를 실행했는데 테이블이 표시되지 않습니다. 이유가 무엇인가요?

A:
가능한 원인은 다음과 같습니다:
(1) 데이터베이스를 선택하지 않았습니다 (USE database_name; 가 누락됨),
(2) 지정한 데이터베이스 이름이 올바르지 않습니다,
(3) 권한이 충분하지 않습니다.
SHOW DATABASES; 를 실행해 데이터베이스 이름을 확인하고 권한이 적절한지 점검하십시오.

Q3. 테이블 구조를 DDL (CREATE 문) 형태로 확인하려면 어떻게 해야 하나요?

A:
다음 명령을 실행합니다:

SHOW CREATE TABLE table_name;

해당 테이블을 생성할 때 사용된 정확한 CREATE TABLE 문을 보여줍니다. 테이블 마이그레이션이나 백업 시 유용합니다.

Q4. 테이블에 데이터가 너무 많아 한 번에 모두 볼 수 없습니다.

A:
LIMIT 절을 사용합니다:

SELECT * FROM table_name LIMIT 10;

OFFSET 과 함께 사용하면 특정 범위를 단계별로 확인할 수 있습니다.

Q5. INFORMATION_SCHEMA 란 무엇이며 언제 사용해야 하나요?

A:
INFORMATION_SCHEMA 는 MySQL 메타데이터를 저장하는 특수 데이터베이스입니다. 테이블, 컬럼, 인덱스, 권한 등에 대한 방대한 정보를 조회하거나 관리해야 할 때 매우 유용합니다. SQL 로 직접 조회할 수 있기 때문에 자동화 및 보고서 작성에도 이상적입니다.

Q6. 결과를 수직으로 표시하려면 어떻게 해야 하나요?

A:
SQL 문장의 끝에 “\G” 를 추가합니다.
예시:

SELECT * FROM table_name\G

각 레코드가 수직으로 표시되어 컬럼명과 값이 읽기 쉬운 쌍 형태로 나타납니다.