テーブル名・列名・データ型の一覧
※2009/11/09 SQLが間違っていたので修正しました。
※2011/12/07 参考先URLがリンク切れになったようなので別の参考先を追加しました。
DB仕様書を作るときに後々の参考になりそうなのでメモ。
SQLserverにあるシステムテーブルを用いてテーブル内の列のデータ型などを一覧表示してみる。
SELECT o.xtype AS TableType --テーブルの型(U:テーブル、V:ビュー) ,o.name AS TableName --テーブル名 ,c.name AS ColumnName --列名 ,t.name AS ColumnTypeName --データ型 ,c.length AS ColumnLength --データの長さ ,c.isnullable AS ColumnNullOK --null許可=1 FROM syscolumns as c INNER JOIN ( SELECT id ,xtype ,name FROM sysobjects WHERE xtype IN ('U','V') ) AS o ON c.id = o.id INNER JOIN ( SELECT xtype,xusertype,type,usertype,name FROM systypes ) AS t ON c.xtype = t.xtype AND c.xusertype = t.xusertype ORDER BY o.name ,c.colid
参考:
- http://www.microsoft.com/japan/sqlserver/2005/prodinfo/previousversions/techinfo/productdoc/2000/systables.mspx
- リンク死んだっぽい?
- SQL Serverのスキーマから簡易テーブル設計書を作成するSQL - QuadraForce’s Blog
- こっちで紹介してるクエリの方が詳しくていいかもしれん。
ただし、SQLserverのバージョンによって使用できない場合があるので注意。
(SQLserver2005以外では確認していません。)
そのため、上記クエリを使うよりも、こっちのシステムストアドプロシージャで確認した方が安全かもしれない。
以下メモ:
スーパーpre記法(シンタックス・ハイライト)では、指定するファイルタイプ文字列の大文字小文字を区別するので注意。
例えば上記クエリは「>|sql|〜||<」と書いているが、「>|SQL|〜||<」ではハイライトしなかった。