MySQL강좌21편: MYSQL의 데이터베이스 스키마 확인실무
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,168 조회
- 0 추천
- 목록
본문
MySQL강좌21편: MYSQL의 데이터베이스 스키마 확인실무
MYSQL의 관리유틸리티 가운데는 현재 생성되어있는 데이터베이스와 테이블(table) 및 컬럼(column)들을 확인할 수 있는 유용한 도구가 있다. 즉 mysqlshow라는 MYSQL 유틸리티를 이용하면 MYSQL에 직접 접속하지 않아도 리눅스 쉘상태에서 현재 MYSQL에 생성되어있는 데이터베이스들의 리스트를 확인 할 수 있으며 또한 특정데이터베이스내의 테이블들의 리스트를 확인할 수 있고 그리고 특정테이블의 필드(컬럼, column)들을 확인 할 수 있다.
사용형식 : mysqlshow [옵션] [데이터베이스 [테이블 [컬럼]]]
위의 사용형식에서 꼭 알아두어야 할 것이 있다.
첫번째, 위의 형식에서 특정데이터베이스명이 주어지지 않는다면 MYSQL내에 존재하는 모든 데이터베이스들을 나열한다.
두번째, 위의 형식에서 특정테이블명이 주어지지 않는다면 지정된 데이터베이스내의 모든 테이블들을 나열한다.
세번째, 위의 형식에서 특정 컬럼(column)이 주어지지 않는다면 지정된 테이블내에 존재하는 모든 컬럼(column)들과 컬럼타입들을 나열한다.
mysqlshow에 대한 소개와 사용형식에 대해서 알아보았으므로 이제 mysqlshow를 이용하여 실제 존재하는 데이터베이스들과 테이블, 필드등의 정보를 확인하는 예를 보겠다.
1. MYSQL에 존재하는 데이터베이스들 확인하기
MYSQL의 mysqlshow유틸리티를 이용하면 MYSQL에 접속하지 않은 쉘상태에서도 현재 MYSQL에 존재하는 데이터베이스들의 리스트를 확인할 수 있다. 즉 서버관리자들에게는 현재 서버내에 생성되어있는 데이터베이스들의 리스트를 확인해야하는 중요한 작업을 쉘상태에서 간단한 한줄의 명령어로 가능하다는 것이 큰 매력이 아닐 수 없다.
사용형식 : mysqlshow -u 계정명 -p
위에서 계정명이란 MYSQL의 사용자명을 의미한다. 위에서 특정데이터베이스명이 지정되지 않았기 때문에 MYSQL에 존재하는 모든 데이터베이스가 대상이 된다.
다음은 현재 MYSQL에 생성되어있는 데이터베이스의 리스트를 확인하기 위하여 mysqlshow유틸리티를 이용한 것이다.
[root@sulinux bin]#/usr/local/mysql/bin/mysqlshow -u root -p Enter password: ********
+--------------------+ | Databases | +--------------------+ | information_schema | | TESTDB | | linux300 | | mysql | | picasso_db | | sspark_db | | super | | super_db | | temp_db | | temp_db2 | | test | +--------------------+ [root@sulinux bin]# |
위의 결과를 보면 현재 MYSQL에 생성되어있는 데이터베이스들은 mysql, super, temp_db2, test등의 여러개의 데이터베이스가 존재하고 있음을 알 수 있다. 이 가운데 MYSQL의 설치 초기부터 존재하였던 기본 데이터베이스는 mysql, test를 제외한 나머지 데이터베이스들은 모두 관리자에 의해서 직접 생성되었음을 알 수 있다.
참고로 위의 결과는 MYSQL에 접속하여 “show databases”라는 SQL문을 사용한 결과와 동일하다. 즉 아래의 예는 MYSQL에 접속하여 “show databases”라는 SQL명령문을 실행한 결과를 나타낸 것이다. 확인해 보면 알겠지만 위의 결과와 동일하다.
[root@sulinux bin]#/usr/local/mysql/bin/mysql -u root -p mysql Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.1.32 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> mysql> show databases;
+--------------------+ | Database | +--------------------+ | information_schema | | TESTDB | | linux300 | | mysql | | picasso_db | | sspark_db | | super | | super_db | | temp_db | | temp_db2 | | test | +--------------------+ 11 rows in set (0.00 sec)
mysql> |
여기서 중요한 것은 현재 MYSQL에 존재하는 데이터베이스들의 리스트를 확인하는 것이며 또한 이를 확인하는 방법이 위와같이 2가지가있다는 것이다. 그리고 이 2가지의 방법중 서버관리자의 입장에서 더욱 편리하고 빠르게 사용할 수 있는 방법이 mysqlshow라는 것을 꼭 기억하기 바란다.
하지만 여러분이 서버관리자가 아닌 프로그래머라면
두번째 방법인 SQL문을 이용하는 것이 현명할 것이다. 이유는
여러분들이 보다 더 알고있으리라 생각한다.
2. 특정데이터베이스의 테이블들 확인하기
MYSQL의 mysqlshow유틸리티를 이용하면 MYSQL에 접속하지 않은 리눅스 쉘상태에서도 현재 MYSQL에 존재하는 특정데이터베이스의 테이블리스트를 확인 할 수 있다. 즉 특정데이터베이스의 특정테이블의 리스트를 리눅스 쉘상태에서 간단한 한줄의 명령어로 가능하다는 것이다.
사용형식 : mysqlshow -u 계정명 -p 데이터베이스명
위에서 계정명이란 MYSQL의 사용자명을 의미한다. 위에서 데이터베이스란 확인대상이 될 데이터베이스를 의미한다. 그리고 특정테이블명이 지정되지않았기 때문에 지정한 데이터베이스의 모든테이블들이 대상이 된다.
다음은 현재 MYSQL에 생성되어있는 sspark_db라는 데이터베이스에 존재하는 테이블리스트를 확인하기위하여 mysqlshow유틸리티를 이용한 것이다.
[root@sulinux bin]#./mysqlshow -u sspark -p sspark_db Enter password: Database: sspark_db +-----------+ | Tables | +-----------+ | testtable | +-----------+ [root@sulinux bin]# |
위의 결과를 보는 바와같이 sspark_db라는 데이터베이스에는 testtable이라는 1개의 테이블이 존재하고 있음을 알 수 있다.
참고로 위의 결과는 MYSQL에 접속하여 “show tables”라는 SQL문을 사용한 결과와 동일하다. 즉 아래의 예는 MYSQL에 sspark_db라는 데이터베이스로 접속하여 “show tables”라는 SQL명령문을 실행한 결과를 나타낸 것이다. 확인해 보면 알겠지만 위의 결과와 동일하다.
[root@sulinux bin]#pwd /usr/local/mysql/bin [root@sulinux bin]# [root@sulinux bin]#./mysql -u sspark -p sspark_db Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 17 Server version: 5.1.32 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> mysql> show tables;
+---------------------+ | Tables_in_sspark_db | +---------------------+ | testtable | +---------------------+ 1 row in set (0.00 sec)
mysql> |
거듭 말하지만 여기서 중요한 것은 특정데이터베이스의 테이블들을 확인하는 위의 2가지의 방법 가운데 서버관리자에게는 mysqlshow를 이용하는 것이 보다 빠르고 효율적이라는 점이다. 만약 여러분이 리눅스 서버관리자라면 첫번째 방법인 mysqlshow를 이용하고, 만약 이 책을 보는 여러분이 프로그래머라면 두번째 방법인 “show tables”를 사용하기 바란다.
3. 특정테이블의 컬럼(column)정보들 확인하기
MYSQL의 mysqlshow유틸리티를 이용하면 MYSQL에 접속하지 않은 리눅스 쉘상태에서도 현재 특정데이터베이스의 특정테이블의 컬럼(필드)들의 정보를 확인할 수 있다. 즉 mysqlshow유틸리티를 이용하면 특정데이터베이스의 특정테이블에 존재하는 컬럼(필드)들의 정보를 리눅스 쉘상태에서 간단한 한줄의 명령어로 가능하다는 것이다.
사용형식 : mysqlshow -u 계정명 -p 데이터베이스명 테이블명
위에서 계정명이란 MYSQL의 사용자명을 의미한다. 위에서 데이터베이스란 확인대상이 될 데이터베이스를 의미한다. 위에서 테이블명이란 지정한 데이터베이스의 특정테이블을 의미한다. 그리고 컬럼(필드)가 지정되지 않았기 때문에 지정한 테이블의 모든 컬럼들이 대상이 된다.
다음은 sspark_db라는 데이터베이스의 testtable이라는 테이블에 존재하는 컬럼(필드)들을 확인하기위하여 mysqlshow를 이용한 것이다.
[root@sulinux bin]#./mysqlshow -u sspark -p sspark_db testtable Enter password: ********
Database: sspark_db Table: testtable +---------+-----------------------+-----------------+------+-----+---------+-------+--------- | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +---------+-----------------------+-----------------+------+-----+---------+-------+--------- | uid | mediumint(4) unsigned | | NO | PRI | 0 | | select,insert,update,references | | | name | varchar(12) | euckr_korean_ci | NO | | | | select,insert,update,references | | | email | varchar(20) | euckr_korean_ci | NO | | | | select,insert,update,references | | | website | varchar(50) | euckr_korean_ci | YES | | | | select,insert,update,references | | +---------+-----------------------+-----------------+------+-----+---------+-------+--------- [root@sulinux bin]# |
위의 결과를 보면 sspark_db라는 데이터베이스의 testtable이라는 테이블내의 모든 컬럼들의 정보(컬럼명,타입,속성,권한등)들이 결과로 출력되었다는 것을 알 수 있다. 즉 sspark_db라는 데이터베이스의 testtable이라는 테이블에는 uid와 name, email, 그리고 website라는 컬럼이 존재한다는 것과 이들 컬럼의 타입 및 속성등을 확인 할 수 있다.
참고로 MYSQL에 접속하여 “show columns from 테이블명”을 사용해도 위와 동일한 결과를 출력한다. 즉 아래의 예는 MYSQL에 sspark라는 계정으로 접속하여 sspark_db라는 데이터베이스의 testtable이라는 테이블의 컬럼을 확인하기위하여 “show columns from testtable”이라는 SQL문을 이용한 것이다.
[root@sulinux bin]#pwd /usr/local/mysql/bin [root@sulinux bin]# [root@sulinux bin]#./mysql -u sspark -p sspark_db Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 19 Server version: 5.1.32 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> mysql> show columns from testtable;
+---------+-----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-----------------------+------+-----+---------+-------+ | uid | mediumint(4) unsigned | NO | PRI | 0 | | | name | varchar(12) | NO | | | | | email | varchar(20) | NO | | | | | website | varchar(50) | YES | | NULL | | +---------+-----------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
mysql> |
특정테이블의 컬럼정보를 확인하는 위의 2가지 방법중 보다 간편하고 빠른 방법은 mysqlshow를 이용하는 방법이다. 만약 여러분이 리눅스 서버관리자라면 가능한 앞의 방법인 mysqlshow를 이용하고, 여러분이 프로그래머라면 두번째 방법을 주로 사용할 것이다.
4. 특정테이블의 하나의 컬럼(column)만 확인하기
이번에는 MYSQL관리 유틸리티인 mysqlshow를 이용하여 특정테이블의 하나의 컬럼 정보만을 확인해보도록 하겠다. 즉 mysqlshow라는 유틸리티를 이용하여 특정데이터베이스내의 특정테이블내에 존재하는 하나의 컬럼정보만을 확인하시려면 다음과 같이 사용하기 바란다.
사용형식 : mysqlshow -u 계정명 -p 데이터베이스명 테이블명 컬럼명
위에서 계정명이란 MYSQL의 사용자명을 의미한다. 위에서 데이터베이스란 확인대상이 될 데이터베이스를 의미한다. 위에서 테이블명이란 지정한 데이터베이스의 특정테이블을 의미한다. 위에서 컬럼명이란 지정한 테이블의 컬럼을 의미한다.
아래의 예는 mysqlshow유틸리티를 이용하여 sspark_db라는 데이터베이스의 testtable이라는 테이블의 name이라는 컬럼 정보(컬럼명,타입,속성,권한등)를 확인한 것이다.
[root@sulinux bin]#./mysqlshow -u sspark -p sspark_db testtable name Enter password: ********
Database: sspark_db Table: testtable Wildcard: name +-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +-------+-------------+-----------------+------+-----+---------+-------+------------ | name | varchar(12) | euckr_korean_ci | NO | | | | select,insert,update,references | | +-------+-------------+-----------------+------+-----+---------+-------+------------ [root@sulinux bin]# |
지금까지의 mysqlshow에 대한 예를 확인한 바와같이 서버관리자가 MYSQL에 직접 접속하지 않아도 원하는 MYSQL정보(데이터베이스, 테이블, 컬럼등)를 얼마든지 확인할 수 있다는 것을 알았을 것이다.
관련자료
-
이전
-
다음