테이블 구조


우리는 앞에서 테이블의 목록과 테이블의 상세 목록을 출력하는 학습과 실험을 했습니다. 하지만 테이블의 각각의 컬럼 정보와 속성까지 알기에는 부족합니다.

새로운 쿼리 명령어 DESC는 테이블의 상세 컬럼 정보까지 확인할 수 있습니다.

| 쿼리 문법 |

DESC 테이블명; 


콘솔 실습


DESC 쿼리 명령은 지정한 테이블의 상세한 구조를 확인할 수 있습니다.

| 예제 쿼리 |

DESC members; 

| 콘솔 실습 화면 |

mysql> desc members;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| Id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| LastName  | varchar(255) | YES  |     | NULL    |                |
| FirstName | varchar(255) | YES  |     | NULL    |                |
| Address   | varchar(255) | YES  |     | NULL    |                |
| City      | varchar(255) | YES  |     | NULL    |                |
| Country   | varchar(255) | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
6 rows in set (0.02 sec)

DESC 쿼리 명령은 테이블의 컬럼명, 데이터 타입 및 속성까지 목록으로 출력합니다.


PHP 코드


DESC 쿼리를 통하여 테이블의 컬럼 목록을 출력하는 PHP 코드를 생성해 보도록 하겠습니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

// 테이블 정보를 읽어 옵니다
public function descTable($tbname)
{
	$queryString = "desc $tbname";
	$this->msgEcho($queryString);

	if ($result = mysqli_query($this->dbcon, $queryString)) {
		$rowss = "";
		$row_cnt = mysqli_num_rows($result);
		for ($i=0;$i<$row_cnt;$i++) {
			$rowss[$i] = mysqli_fetch_object($result);
		}

		$result->free();
		return $rowss;
	} 
}

예제파일) sql-16.php

<?php

	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();

	// 테이블 구조를 확인합니다.
	$tbname = "members";
	if ($rowss = $db->descTable($tbname)) {
		echo "tables fields = ". count($rowss) . "<br>";

		for ($i=0;$i<count($rowss);$i++) {
			echo $i."=";            
 			print_r($rowss[$i]);
			echo "<br>";
		}
	}    

?>

화면 출력

mysql connected!
desc members
tables fields = 8
0= stdClass Object ( [Field] => Id [Type] => int(11) [Null] => NO [Key] => PRI [Default] => [Extra] => auto_increment )
1= stdClass Object ( [Field] => LastName [Type] => varchar(255) [Null] => YES [Key] => [Default] => [Extra] => )
2= stdClass Object ( [Field] => FirstName [Type] => varchar(255) [Null] => YES [Key] => [Default] => [Extra] => )
3= stdClass Object ( [Field] => Address [Type] => varchar(255) [Null] => YES [Key] => [Default] => [Extra] => )
4= stdClass Object ( [Field] => City [Type] => varchar(255) [Null] => YES [Key] => [Default] => [Extra] => )
5= stdClass Object ( [Field] => Country [Type] => varchar(255) [Null] => YES [Key] => [Default] => [Extra] => )
6= stdClass Object ( [Field] => manager [Type] => varchar(100) [Null] => YES [Key] => [Default] => [Extra] => )
7= stdClass Object ( [Field] => email [Type] => varchar(255) [Null] => YES [Key] => [Default] => [Extra] => ) 


SHOW COLUMNS


DESC 명령어 이외에 SHOW COLUMNS 명령을 통하여 테이블의 구조를 확인할 수도 있습니다.

| 쿼리 문법 |

SHOW COLUMNS FROM 테이블명; 

| 콘솔 실습 화면 |

mysql> show columns from members;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| Id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| LastName  | varchar(255) | YES  |     |         |                |
| FirstName | varchar(20)  | YES  |     | NULL    |                |
| Address   | varchar(255) | YES  |     | NULL    |                |
| address2  | varchar(255) | YES  |     | NULL    |                |
| City      | varchar(30)  | NO   |     | NULL    |                |
| Country   | varchar(255) | YES  |     | NULL    |                |
| manager   | varchar(100) | YES  |     | NULL    |                |
| email     | varchar(255) | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
9 rows in set (0.09 sec)