Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのdescは、データベースオブジェクトの定義情報を表示するコマンドです。

SQLのdescの構文

SQLのdescは、テーブルの定義情報詳細(describe)を表示するSQLです。また、order by descと記述すると、「降順(descending)にソート」という意味になります。どちらも略語はdescなのでややこしいですが、全く異なるSQLとなってます。

【関連記事】
SQLのdescはorder byソートの降順指定 テーブル定義表示もおこなう

Oracleのdescの構文

Oracleでは、descまたはdescribeでテーブルやビュー、ストアドプロシジャなどのデータベースオブジェクトの定義情報を確認することが可能です。

参考)Oracle公式ドキュメント:DESCRIBE

以下は、ビューEMP_DETAILS_VIEWの定義情報を確認する例です。

DESCRIBE EMP_DETAILS_VIEW
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 EMPLOYEE_ID                               NOT NULL NUMBER(6)
 JOB_ID                                    NOT NULL VARCHAR2(10)
 MANAGER_ID                                         NUMBER(6)
 DEPARTMENT_ID                                      NUMBER(4)
 LOCATION_ID                                        NUMBER(4)
 COUNTRY_ID                                         CHAR(2)
 FIRST_NAME                                         VARCHAR2(20)
 LAST_NAME                                 NOT NULL VARCHAR2(25)
 SALARY                                             NUMBER(8,2)
 COMMISSION_PCT                                     NUMBER(2,2)
 DEPARTMENT_NAME                           NOT NULL VARCHAR2(30)
 JOB_TITLE                                 NOT NULL VARCHAR2(35)
 CITY                                      NOT NULL VARCHAR2(30)
 STATE_PROVINCE                                     VARCHAR2(25)
 COUNTRY_NAME                                       VARCHAR2(40)
 REGION_NAME                                        VARCHAR2(25)

テーブルまたはビューに対してdescを実行すると、カラム名、NULL許可、データ型を確認することができます。

SQL Serverのdescの構文

SQL Serverで、テーブル定義の詳細を表示するコマンドはdescではなく、sp_helpというストアドプロシジャとなっています。

参考)sp_help (Transact-sql) – SQL Server | Microsoft Docs

なお、sp_helpにはテーブルだけではなく、

MySQLのdescの構文

MySQLでは、descはshow columnsと同等の機能のシノニム(別名)です。

参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.5.6 SHOW COLUMNS 構文

USE AdventureWorks2012;  
GO  
EXEC sp_help 'Person.Person';  
GO  

なお、データベースオブジェクトを指定せずに、単にsp_helpのみを実行するとデータベース内の全オブジェクトの情報を一覧表示します。以下は、masterデータベース内のオブジェクト一覧を返す例です。

USE master;  
GO  
EXEC sp_help;  
GO  

PostgreSQLのdescの構文

PostgreSQLでは、テーブル定義を表示するdescに相当するSQLは用意されていません。代替として以下のようにinformation_schemaテーブルを直接参照する方法があります。

select column_name,data_type
from information_schema.columns
where table_name ='table_name';

また、PostgreSQLのコマンドpsqlのコマンド\dを指定することで、テーブル定義情報が表示されます。

参考)PostgeSQL公式ドキュメント:psql

psqlコマンドの\dは、対象がテーブル、ビュー、インデックス、または、シーケンスのみです。カラム名、データ型、 NULL許可、デフォルト値を表示します。

単に\dのみで、データベースオブジェクトの一覧を表示します。なお、\dtでテーブルのみに限定して一覧表示が可能です。

dvdrental=# \d
                     List of relations
 Schema |            Name            |   Type   |  Owner
--------+----------------------------+----------+----------
 public | actor                      | table    | postgres
 public | actor_actor_id_seq         | sequence | postgres
 public | actor_info                 | view     | postgres
 public | address                    | table    | postgres
 public | address_address_id_seq     | sequence | postgres
 public | category                   | table    | postgres
 public | category_category_id_seq   | sequence | postgres
 public | city                       | table    | postgres
 public | city_city_id_seq           | sequence | postgres
 public | country                    | table    | postgres
 public | country_country_id_seq     | sequence | postgres
 public | customer                   | table    | postgres
 public | customer_customer_id_seq   | sequence | postgres
 public | customer_list              | view     | postgres
 public | film                       | table    | postgres
 public | film_actor                 | table    | postgres
 public | film_category              | table    | postgres
  :
  :

\d オブジェクト名指定で、オブジェクトの詳細情報を表示します。以下は、テーブルactorの定義情報を表示した例です。

dvdrental=# \d actor
                                         Table "public.actor"
   Column    |            Type             |                        Modifiers

-------------+-----------------------------+---------------------------------
-------------------------
 actor_id    | integer                     | not null default nextval('actor_
actor_id_seq'::regclass)
 first_name  | character varying(45)       | not null
 last_name   | character varying(45)       | not null
 last_update | timestamp without time zone | not null default now()
Indexes:
    "actor_pkey" PRIMARY KEY, btree (actor_id)
    "idx_actor_last_name" btree (last_name)
Referenced by:
    TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (act
or_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
    last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE PROCEDURE last_u
pdated()

dvdrental=#

まとめ

ポテパンダの一言メモ
  • descは、データベースオブジェクトの定義情報を表示するコマンド
  • order byとdescで、全く異なる機能のSQLとして動作する。
  • descは各DBMSごとに実装方法が全く異なり、コマンド名も異なる場合もある

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。