アプリケーション開発でデータベースを利用する新人プログラマに向けて、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 列名 FROM テーブル名 |
「SELECT」句の次に列名を指定し、「FROM」句の後にデータ取得対象のテーブル名を指定します。すべての列を指定したい場合、列名を「*(アスタリスク)」に置き換えます。試してみるのが手っ取り早いので、まずはAdventureWorksの「Product」テーブルからデータを取得してみましょう。
SELECT * FROM Production.Product |
テーブル名の前にある「Production.」はスキーマを示しています。スキーマとはデータベースオブジェクトを分類するための構造名だと考えておいてください。AdventureWorksにはProduction(製品類)のほかにも、Person(顧客や従業員)、Sales(販売関連)といったスキーマが存在します。 |
Productテーブルから、全列のデータを取得できました。アスタリスクを利用することで、テーブルの構成を知らなくとも簡単に結果を取得できます。
では、続いて列名を指定してみましょう。Productテーブルから、3つの列のデータだけを取得するSELECT文は次のとおりです。
SELECT ProductID,Name,ProductNumber FROM Production.Product |
列名を指定した場合の結果は、SELECT句で記述した順に表示されます。列順を入れ替えることで、見やすい結果に調整することが可能です。
SELECT文を発行すると、表の形でデータを得ることができます。その際、列名にはテーブル定義に従った名前が表示されますが、この列名は自由に変更できます。列に対し別名を付与するには、SELECT句で指定した列名の後に「AS」句を利用します。次の例では、2つの列に対し別名を付与しています。
SELECT ProductID AS 商品ID,Name AS 商品名 FROM Production.Product |
別名の付与に際しては、AS句を省略することも可能です。別名の付与は、次回以降紹介するテーブル結合の際によく利用します。
Productテーブルは、製品ごとの色情報を収めた列「Color」を持っています。このColor列から重複した内容を取り除き、Productテーブルに含まれる色一覧を取得したい、というような場合には「DISTINCT」句を利用します。DISTINCT句は、重複する行を取り除いた結果を返します。
SELECT DISTINCT Color FROM Production.Product |
DISTINCT句はSELECT文で得られる行から重複データを取り除く、という点に注意してください。SQLを次のように記述した場合、Name列とColor列が重複している場合にその行が取り除かれます。Productテーブルには重複した製品情報は収められていないため、下記のSQLではDISTINCT句に意味はありません。
SELECT DISTINCT Name,Color FROM Production.Product |
DISTINCT句を使った結果と使わない結果を見比べて、どのような動作をしているか確認を行っておきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.