CodeZine(コードジン)

特集ページ一覧

構造がわからないデータベースで検索を行うには

ストアドプロシージャ、SELECTステートメントを使って特定の内容を検索

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/09/02 14:00
目次

列名を検索するためのSELECTソリューション

 データベースの構造は知っていても、テーブルや列の完全な名前は思い出せないということもあるでしょう。そんなときには、SQL Server 2000で次のSELECTステートメントを実行してください。

SELECT c.Table_Schema, c.Table_name, c.Column_name
FROM INFORMATION_SCHEMA.COLUMNS c
INNER JOIN INFORMATION_SCHEMA.TABLES t 
ON c.Table_schema = t.Table_SCHEMA 
AND c.Table_name = t.Table_name
WHERE TABLE_TYPE = 'BASE TABLE' AND c.Column_name LIKE <検索文字列>

 上記のスクリプトはSQL Server 2000、2005、および2008で機能します。次のスクリプトは2005および2008の新しいスキーマテーブルをベースにしており、前方互換性があります。

SELECT t.name AS TableName,
sc.name AS SchemaName,
c.name AS ColumnName,
types.name AS TypeName,
st.name AS TypeSchemaName,
t.type AS type
FROM sys.all_columns c INNER JOIN sys.all_objects t WITH (NOLOCK) ON c.object_id=t.object_id
LEFT JOIN sys.schemas sc WITH (NOLOCK) ON t.schema_id=sc.schema_id
LEFT JOIN sys.types types WITH (NOLOCK) ON c.user_type_id=types.user_type_id
LEFT JOIN sys.schemas st WITH (NOLOCK) ON st.schema_id=types.schema_id
WHERE t.type IN ('U') AND c.Column_name LIKE <検索文字列>
ORDER BY c.object_id, c.column_id

 完全な名前を思い出せないテーブルや列をSQL Serverデータベースから検索するには、次のようにしてSELECTステートメントを実行します。

SELECT c.Table_Schema, c.Table_name, c.Column_name
FROM INFORMATION_SCHEMA.COLUMNS c
INNER JOIN INFORMATION_SCHEMA.TABLES t 
ON c.Table_schema = t.Table_SCHEMA 
AND c.Table_name = t.Table_name
WHERE TABLE_TYPE = 'BASE TABLE' AND c.Column_name LIKE '%order%'

 図2は、Northwindに対して上記のステートメントを実行した結果です。

 ご覧のように、SELECTは「order」という文字列が含まれている列名のインスタンスをいくつか返しています。BASE TABLEはユーザーが作成したテーブルのことであり、システムテーブルではありません(information_schemaテーブル内では、テーブルはこう定義されています)。

図2 Northwindに対するSELECT検索: このSELECTステートメントで特定のカラムを検索できる
図2 Northwindに対するSELECT検索: このSELECTステートメントで特定のカラムを検索できる

おわりに

 詳細がわかっているエンティティの検索は簡単ですが、テーブルや列の名前がわからないときの検索はもっと手間がかかります。この記事で紹介したストアドプロシージャを使用すると、構造がわからないテーブルから特定の値を検索できます。また、SELECTステートメントを使用すると、パターンやキーワードに一致する名前の列を突き止めることができます。どちらのソリューションもぜひ装備したい有用なツールです。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Francisco Tapia(Francisco Tapia)

     ある大手製造会社のデータベース管理者。SQL Serverはバージョン6.5の頃から使用。詳しくはsqlthis.blogspot.comを参照。

  • Susan Sales Harkins(Susan Sales Harkins)

     独立コンサルタントとして活動するかたわら、データベーステクノロジに関する記事や書籍を執筆。最近の著書は『Mastering Microsoft SQL Server 2005 Express』(Mike Gunderloyと共著、Sybex刊)。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5