連載
» 2007年03月19日 00時00分 公開

さらっと覚えるSQL&T-SQL入門(2):あっという間に分かるSELECT文の書き方 (1/3)

アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。(編集部)

[石橋潤一,株式会社システムインテグレータ]

主な内容

   --Page 1--
▼SELECT文の基本
▼AS句を利用した別名の付与
▼DISTINCT句による重複データの絞り込み
   --Page 2--
▼算術演算子の利用
▼WHERE句による絞り込み
   --Page 3--
▼さまざまな条件句の利用


 SQLおよびT-SQLの入門解説として始まった本連載、今回は「SELECT」文について取り上げます。今回の記事から読み始めた方は、前回の「初めてSQLコマンドを叩く緊張と感動の一瞬」でSQLの概要とSQL Server 2005の管理ツール「Management Studio」について確認してください。本連載は、SQL Server 2005、サンプルデータベースのAdventureWorksの利用を前提として進めていきます。

 データベースは、データの格納だけが目的ではありません。格納したデータを取り出し利用して初めて真価を発揮するといえます。今回取り上げるSELECT文は、データベースから目的のデータを取得する際に利用します。このため、最も基本的、かつ最も利用頻度の高いSQL文です。このSELECT文をマスターすることがSQLを学ぶうえで必須となります。

SELECT文の基本

 SELECT文の最も基本的な構文は次のような形です。

SELECT 列名 FROM テーブル名

 「SELECT」句の次に列名を指定し、「FROM」句の後にデータ取得対象のテーブル名を指定します。すべての列を指定したい場合、列名を「(アスタリスク)」に置き換えます。試してみるのが手っ取り早いので、まずはAdventureWorksの「Product」テーブルからデータを取得してみましょう。

SELECT *
FROM Production.Product
テーブル名の前にある「Production.」はスキーマを示しています。スキーマとはデータベースオブジェクトを分類するための構造名だと考えておいてください。AdventureWorksにはProduction(製品類)のほかにも、Person(顧客や従業員)、Sales(販売関連)といったスキーマが存在します。

図1 アスタリスクを利用したSELECT文 図1 アスタリスクを利用したSELECT文(画像をクリックすると拡大します)

 Productテーブルから、全列のデータを取得できました。アスタリスクを利用することで、テーブルの構成を知らなくとも簡単に結果を取得できます。

 では、続いて列名を指定してみましょう。Productテーブルから、3つの列のデータだけを取得するSELECT文は次のとおりです。

SELECT ProductID,Name,ProductNumber
FROM Production.Product

図2 列名を指定したSELECT文 図2 列名を指定したSELECT文(画像をクリックすると拡大します)

 列名を指定した場合の結果は、SELECT句で記述した順に表示されます。列順を入れ替えることで、見やすい結果に調整することが可能です。

AS句を利用した別名の付与

 SELECT文を発行すると、表の形でデータを得ることができます。その際、列名にはテーブル定義に従った名前が表示されますが、この列名は自由に変更できます。列に対し別名を付与するには、SELECT句で指定した列名の後に「AS」句を利用します。次の例では、2つの列に対し別名を付与しています。

SELECT ProductID AS 商品ID,Name AS 商品名
FROM Production.Product

図3 列名に対し別名を付与する 図3 列名に対し別名を付与する(画像をクリックすると拡大します)

 別名の付与に際しては、AS句を省略することも可能です。別名の付与は、次回以降紹介するテーブル結合の際によく利用します。

DISTINCT句による重複データの絞り込み

 Productテーブルは、製品ごとの色情報を収めた列「Color」を持っています。このColor列から重複した内容を取り除き、Productテーブルに含まれる色一覧を取得したい、というような場合には「DISTINCT」句を利用します。DISTINCT句は、重複する行を取り除いた結果を返します。

SELECT DISTINCT Color
FROM Production.Product

図4 DISTINCT句による重複データの絞り込み 図4 DISTINCT句による重複データの絞り込み(画像をクリックすると拡大します)

 DISTINCT句はSELECT文で得られる行から重複データを取り除く、という点に注意してください。SQLを次のように記述した場合、Name列とColor列が重複している場合にその行が取り除かれます。Productテーブルには重複した製品情報は収められていないため、下記のSQLではDISTINCT句に意味はありません。

SELECT DISTINCT Name,Color
FROM Production.Product

 DISTINCT句を使った結果と使わない結果を見比べて、どのような動作をしているか確認を行っておきましょう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。