share facebook facebook twitter menu hatena pocket slack

2012.01.20 FRI

データベースの情報スキーマについて

櫛田 草平

WRITTEN BY 櫛田 草平

こんにちは。
職人見習いの高嶋です。

MySQLやPostgreSQL、Oracleなどの様々なRDBMSが存在しますが、あるデータベース内のテーブルの一覧を取得する場合等にそれぞれコマンドが異なっていました。

例)今までのテーブル一覧情報の取得方法

■MySQL
SHOW TABLES;
■PostgreSQL
SELECT * FROM pg_tables;
■Oracle
SELECT * FROM TAB;

これらをSQLの標準規格であるSQL:2003(ISO/IEC 9075:2003)に定められ、共通したコマンドで管理・確認ができつつある情報スキーマを説明します。

情報スキーマとは、テーブルやユーザといった各種オブジェクトの情報(メタデータ)を参照するためのデータベースとテーブルであり、他のRDBMSでいうところの「データディクショナリ」や「システムカタログ」と同じようなものです。

情報スキーマはSELECT文を使うので、以下の利点があります。

  • 出力するカラムを選択する
  • WHERE句で条件を指定して絞り込む
  • ほかの情報スキーマのテーブルと結合する

例)情報スキーマによるテーブル一覧情報の取得方法

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE TABLE_SCHEMA = 'xxxx';

+--------------+----------------+------------+
| table_schema | TABLE_NAME     | TABLE_TYPE |
+--------------+----------------+------------+
| public       | hoge           | VIEW       |
| public       | fuga           | BASE TABLE |
+--------------+----------------+------------+

その他、情報スキーマ(MySQL5系)の一覧は以下の通りになります。

+---------------------------------------+---------------------------------+
|テーブル名               |説明                             |
+---------------------------------------+---------------------------------
|CHARACTER_SETS             |使用可能な文字コード             |
|COLLATIONS               |使用可能な照合順序               |
|COLLATION_CHARACTER_SET_APPLICABILITY |使用可能な照合順序               |
|COLUMNS                |各テーブルのカラム               |
|COLUMN_PRIVILEGES           |カラムの権限情報                 |
|KEY_COLUMN_USAGE            |カラムの制約の情報               |
|ROUTINES                |ストアドプロシージャなどの情報   |
|SCHEMATA                |データベースの情報               |
|SCHEMA_PRIVILEGES           |データベースの権限情報           |
|STATISTICS               |インデックスの情報               |
|TABLES                 |テーブルの情報                   |
|TABLE_CONSTRAINTS           |テーブルの制約の情報             |
|TABLE_PRIVILEGES            |テーブルの権限情報               |
|TRIGGERS                |トリガの情報                     |
|USER_PRIVILEGES            |ユーザの権限情報                 |
|VIEWS                 |ビューの情報                     |
+---------------------------------------+---------------------------------+

※この記事は、なかの人(piro556)が書いています。

櫛田 草平

櫛田 草平

cloudpackで運用、保守、構築、夜間対応を担当しており、日々様々な課題に対応していますのでこの経験を記事にしていけたらと思います。 櫛田 草平

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。