MySQL 테이블 컬럼 정보 취득 방법

MySQL에서 테이블에 만들어 놓은 컬럼 정보를 취득하는 방법을 알아보겠습니다.

컬럼 정보를 취득하는 방법으로 SHOW COLUMNS 또는 INFORMATION_SCHEMA.COLUMNS를 사용할 수 있습니다.

테이블에서 컬럼 정보를 취득하는 SHOW COLUMNSINFORMATION_SCHEMA.COLUMNS 사용 방법을 알아보도록 하겠습니다.

 

SHOW COLUMNS

SHOW COLUMNS을 사용하면 지정한 테이블의 컬럼을 취득할 수 있습니다.

기본 작성 방법을 알아보겠습니다.

SHOW COLUMNS FROM 테이블명;

 

SHOW COLUMNS을 사용하기 위해서는 테이블명을 반드시 지정해야합니다.

현재 사용중인 데이터 베이스의 지정한 테이블의 컬럼을 취득하게 됩니다.

사용 방법을 확인 해보겠습니다.

mysql> SHOW COLUMNS FROM Member;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| Memberid | int         | YES  |     | NULL    |                |
| name     | varchar(32) | YES  |     | NULL    |                |
| age      | int         | YES  |     | NULL    |                |
| gender   | varchar(4)  | YES  |     | NULL    |                |
| company  | varchar(32) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
6 rows in set (0.09 sec)

 

지정한 테이블의 컬럼 항목과 속성을 취득했습니다.

SHOW COLUMNS에 데이터 베이스명을 지정해서 사용할 수도 있습니다.

SHOW COLUMNS FROM 테이블명 FROM 데이터 베이스명;

 

mysql> SHOW COLUMNS FROM Member FROM test_databases;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| Memberid | int         | YES  |     | NULL    |                |
| name     | varchar(32) | YES  |     | NULL    |                |
| age      | int         | YES  |     | NULL    |                |
| gender   | varchar(4)  | YES  |     | NULL    |                |
| company  | varchar(32) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)

 

test_databases 데이터 베이스에 있는 Member 테이블의 컬럼정보를 취득했습니다.

 

 

INFORMATION_SCHEMA.COLUMNS

INFORMATION_SCHEMA.COLUMNS를 사용해 테이블에서 컬럼 정보를 취득하는 방법을 알아보겠습니다.

INFORMATION_SCHEMA.COLUMNS를 사용하기 위해서는 SELECT로 실행해야 합니다.

기본 작성 방법을 보겠습니다.

SELECT * FROM INFORMATION_SCHEMA.COLUMNS;

 

mysql> SELECT * FROM INFORMATION_SCHEMA.COLUMNS;
+---------------+--------------+--------------------+--------------------------+------------------+-------------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+-----------------+------------+-----------------------------------------------+---------------------------------+----------------+-----------------------+--------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME         | COLUMN_NAME              | ORDINAL_POSITION | COLUMN_DEFAULT    | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME | COLUMN_TYPE     | COLUMN_KEY | EXTRA                                         | PRIVILEGES                      | COLUMN_COMMENT | GENERATION_EXPRESSION | SRS_ID |
+---------------+--------------+--------------------+--------------------------+------------------+-------------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+-----------------+------------+-----------------------------------------------+---------------------------------+----------------+-----------------------+--------+
| def           | mysql        | innodb_table_stats | clustered_index_size     |                5 | NULL              | NO          | bigint    |                     NULL |                   NULL |                20 |             0 |               NULL | NULL               | NULL           | bigint unsigned |            |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_table_stats | database_name            |                1 | NULL              | NO          | varchar   |                       64 |                    192 |              NULL |          NULL |               NULL | utf8mb3            | utf8mb3_bin    | varchar(64)     | PRI        |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_table_stats | last_update              |                3 | CURRENT_TIMESTAMP | NO          | timestamp |                     NULL |                   NULL |              NULL |          NULL |                  0 | NULL               | NULL           | timestamp       |            | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_table_stats | n_rows                   |                4 | NULL              | NO          | bigint    |                     NULL |                   NULL |                20 |             0 |               NULL | NULL               | NULL           | bigint unsigned |            |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_table_stats | sum_of_other_index_sizes |                6 | NULL              | NO          | bigint    |                     NULL |                   NULL |                20 |             0 |               NULL | NULL               | NULL           | bigint unsigned |            |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_table_stats | table_name               |                2 | NULL              | NO          | varchar   |                      199 |                    597 |              NULL |          NULL |               NULL | utf8mb3            | utf8mb3_bin    | varchar(199)    | PRI        |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_index_stats | database_name            |                1 | NULL              | NO          | varchar   |                       64 |                    192 |              NULL |          NULL |               NULL | utf8mb3            | utf8mb3_bin    | varchar(64)     | PRI        |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_index_stats | index_name               |                3 | NULL              | NO          | varchar   |                       64 |                    192 |              NULL |          NULL |               NULL | utf8mb3            | utf8mb3_bin    | varchar(64)     | PRI        |                                               | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_index_stats | last_update              |                4 | CURRENT_TIMESTAMP | NO          | timestamp |                     NULL |                   NULL |              NULL |          NULL |                  0 | NULL               | NULL           | timestamp       |            | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | select,insert,update,references |                |                       |   NULL |
| def           | mysql        | innodb_index_stats | sample_size              |                7 | NULL              | YES         | bigint    |                     NULL |                   NULL |                20 |             0 |               NULL | NULL               | NULL           | bigint unsigned |            |                                               | select,insert,update,references |                |                       |   NULL |
...
+---------------+--------------------+------------------------------------------------------+---------------------------------------------------------+------------------+-----------------------+-------------+------------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+--------------------------------------------------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+
3543 rows in set (0.46 sec)

 

모든 데이터 베이스에 있는 테이블에서 컬럼 정보를 취득해옵니다.

INFORMATION_SCHEMA.COLUMNS는 WHERE 조건문에 데이터 베이스명과 테이블명을 지정할 수 있습니다.

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ‘데이터 베이스명’
AND TABLE_NAME = ‘테이블명’;

 

데이터 베이스명과 테이블을 지정해서 컬럼 정보를 취득해보겠습니다.

mysql> SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'test_databases' AND TABLE_NAME = 'Member';
+---------------+----------------+------------+-------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+--------------------+-------------+------------+----------------+---------------------------------+----------------+-----------------------+--------+
| TABLE_CATALOG | TABLE_SCHEMA   | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME     | COLUMN_TYPE | COLUMN_KEY | EXTRA          | PRIVILEGES                      | COLUMN_COMMENT | GENERATION_EXPRESSION | SRS_ID |
+---------------+----------------+------------+-------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+--------------------+-------------+------------+----------------+---------------------------------+----------------+-----------------------+--------+
| def           | test_databases | Member     | age         |                4 | NULL           | YES         | int       |                     NULL |                   NULL |                10 |             0 |               NULL | NULL               | NULL               | int         |            |                | select,insert,update,references |                |                       |   NULL |
| def           | test_databases | Member     | company     |                6 | NULL           | YES         | varchar   |                       32 |                    128 |              NULL |          NULL |               NULL | utf8mb4            | utf8mb4_0900_ai_ci | varchar(32) |            |                | select,insert,update,references |                |                       |   NULL |
| def           | test_databases | Member     | gender      |                5 | NULL           | YES         | varchar   |                        4 |                     16 |              NULL |          NULL |               NULL | utf8mb4            | utf8mb4_0900_ai_ci | varchar(4)  |            |                | select,insert,update,references |                |                       |   NULL |
| def           | test_databases | Member     | id          |                1 | NULL           | NO          | int       |                     NULL |                   NULL |                10 |             0 |               NULL | NULL               | NULL               | int         | PRI        | auto_increment | select,insert,update,references |                |                       |   NULL |
| def           | test_databases | Member     | Memberid    |                2 | NULL           | YES         | int       |                     NULL |                   NULL |                10 |             0 |               NULL | NULL               | NULL               | int         |            |                | select,insert,update,references |                |                       |   NULL |
| def           | test_databases | Member     | name        |                3 | NULL           | YES         | varchar   |                       32 |                    128 |              NULL |          NULL |               NULL | utf8mb4            | utf8mb4_0900_ai_ci | varchar(32) |            |                | select,insert,update,references |                |                       |   NULL |
+---------------+----------------+------------+-------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+--------------------+-------------+------------+----------------+---------------------------------+----------------+-----------------------+--------+
6 rows in set (0.00 sec)

 

test_databases 데이터 베이스에 있는 Member테이블의 컬럼 정보를 취득했습니다.

 

정리

SHOW COLUMNSINFORMATION_SCHEMA.COLUMNS로 테이블에서 컬럼 정보를 취득하는 방법을 알아봤습니다.

2개의 쿼리는 테이블의 컬럼 정보를 취득하지만 취득 정보가 다릅니다.

보고 싶은 내용에 따라 맞는 쿼리를 사용하시면 될거 같습니다.

 

댓글