데이터베이스 메타데이터

테이블 메타데이터

이 함수를 사용하면 테이블 정보를 가져올 수 있습니다.

데이터베이스의 테이블 정보

$db->listTables()

연결된 데이터베이스의 모든 테이블 이름이 포함된 배열을 반환합니다.

<?php

$db = db_connect();

$tables = $db->listTables();

foreach ($tables as $table) {
    echo $table;
}

Note

일부 드라이버에는 반환된 배열에 제외된 추가 시스템 테이블이 있습니다.

테이블이 존재하는지 확인

$db->tableExists()

때로는 작업을 실행하기 전에 특정 테이블이 존재하는지 확인하는 것이 도움이됩니다. true/false를 반환합니다.

<?php

$db = db_connect();

if ($db->tableExists('table_name')) {
    // some code...
}

Note

table_name을 찾고있는 테이블 이름으로 바꾸십시오.

필드 메타데이터

테이블의 필드 정보

$db->getFieldNames()

필드명을 포함한 배열을 반환합니다. 이 쿼리는 두 가지 방법으로 호출할 수 있습니다:

  1. $db->getFieldNames()에 테이블 이름을 제공하고 호출합니다.

<?php

$db = db_connect();

$fields = $db->getFieldNames('table_name');

foreach ($fields as $field) {
    echo $field;
}
  1. 실행한 쿼리의 결과 객체에서 함수를 호출하여 관련된 필드명을 수집합니다.

<?php

$db = db_connect();

$query = $db->query('SELECT * FROM some_table');

foreach ($query->getFieldNames() as $field) {
    echo $field;
}

필드가 테이블에 존재하는지 확인

$db->fieldExists()

때로는 작업을 수행하기 전에 특정 필드가 존재하는지 확인하는 것이 도움이됩니다. true/false를 반환합니다.

<?php

$db = db_connect();

if ($db->fieldExists('field_name', 'table_name')) {
    // some code...
}

Note

field_name을 찾고있는 열 이름으로 바꾸고 table_name을 찾고있는 테이블 이름으로 바꾸십시오.

필드 메타데이터 검색

$db->getFieldData()

필드 정보가 포함된 객체의 배열을 반환합니다.

때로는 필드 이름이나 열 유형, 최대 길이 등과 같은 다른 메타 데이터를 수집하는 것이 도움이됩니다.

Note

모든 데이터베이스가 메타데이터를 제공하는 것은 아닙니다.

<?php

$db = db_connect();

$fields = $db->getFieldData('table_name');

foreach ($fields as $field) {
    echo $field->name;
    echo $field->type;
    echo $field->max_length;
    echo $field->primary_key;
}

이미 쿼리를 실행한 경우 테이블 이름을 제공하는 대신 결과 객체를 사용할 수 있습니다

<?php

$db = db_connect();

$query  = $db->query('YOUR QUERY');
$fields = $query->fieldData();

데이터베이스에서 지원하는 경우이 기능에서 다음 데이터를 사용할 수 있습니다:

  • name - 컬럼명

  • type - 컬럼 타입(type)

  • max_length - 컬럼의 최대 길이

  • primary_key - 열이 기본 키인 경우 정수 1(여러 개의 기본 키가 있는 경우에도 정수 1), 그렇지 않으면 정수 0 (이 필드는 MySQL과 SQLite3에서만 사용할 수 있습니다.)

  • nullable - 열이 nullable이면 부울 true, 그렇지 않으면 부울 false (이 필드는 SQL Server에서 사용할 수 없습니다)

  • default - 기본 값

테이블의 인덱스 정보

$db->getIndexData()

인덱스 정보가 포함된 객체의 배열을 반환합니다.

<?php

$db = db_connect();

$keys = $db->getIndexData('table_name');

foreach ($keys as $key) {
    echo $key->name;
    echo $key->type;
    echo $key->fields; // array of field names
}

키 유형은 사용중인 데이터베이스에 따라 다를수 있습니다. 예를 들어, MySQL은 테이블과 관련된 각 키에 대해 primary, fulltext, spatial, index, unique 중 하나를 반환합니다.

$db->getForeignKeyData()

외래(foreign) 키 정보가 포함된 객체의 배열을 반환합니다.

<?php

$db = db_connect();

$keys = $db->getForeignKeyData('table_name');

foreach ($keys as $key) {
    echo $key->constraint_name;
    echo $key->table_name;
    echo $key->column_name;
    echo $key->foreign_table_name;
    echo $key->foreign_column_name;
}

오브젝트 필드는 사용중인 데이터베이스에 다를수 있습니다. 예를 들어, SQLite3은 열 이름에 대한 데이터를 리턴하지 않지만 복합 외부 키 정의에 대한 sequence 추가 필드를 갖습니다.