MySQL에서 테이블에 만들어 놓은 컬럼 정보를 취득하는 방법을 알아보겠습니다.
컬럼 정보를 취득하는 방법으로 SHOW COLUMNS 또는 INFORMATION_SCHEMA.COLUMNS를 사용할 수 있습니다.
테이블에서 컬럼 정보를 취득하는 SHOW COLUMNS와 INFORMATION_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 COLUMNS과 INFORMATION_SCHEMA.COLUMNS로 테이블에서 컬럼 정보를 취득하는 방법을 알아봤습니다.
2개의 쿼리는 테이블의 컬럼 정보를 취득하지만 취득 정보가 다릅니다.
보고 싶은 내용에 따라 맞는 쿼리를 사용하시면 될거 같습니다.
댓글