まずはSELECT文の基本的な使い方
では、SQL文を使って、データの表示してみましょう。Enterprise Managerで、「ツール」メニューの「SQL Serverクエリアナライザ」を選択します。まず、右上の「DB」ドロップダウンリストで、「Northwind」データベースを選択します。そして、表示された画面で、次のSQLを入力してみましょう。
【例1】
SELECT CustomerID, CompanyName FROM Customers
入力したSQL文の実行は、「クエリ」メニューから「実行」を選択します(もちろん、アイコンを選択してもOKです)。すぐに結果が表示されるはずです。
SELECTは、データの取得をするためのSQL命令です。データの取得は、「照会」とも呼ばれます。CustomerID、CompanyNameは、それぞれ列の名前を指定します。この例のように複数の列を指定するときは、「,」で区切ります。SELECTとカラムの列の部分を、SELECT句、もしくは、SELECT文節と呼びます。
SELECT句の後のFROMは、テーブルの指定をします。この例では、Customersテーブルを指定しています。今後の例では複数のテーブルを指定する場合がありますが、そのときはテーブル名を列名と同じように、「,」で区切ります。FROMとテーブル名の部分を、FROM句、もしくは、FROM文節と呼びます。
この例のSQL文をまとめると、「Customersテーブルから、CustomerID、CompanyNameを取得しなさい」という命令であることになります。
カラムの指定には、「*」という記号も使えます。これは、すべてのカラムを取得したいときに便利です。例えば、次のようなSQLを実行してみましょう。
【例2】
SELECT * FROM Customers
Customersテーブルの全データが、全列表示されたでしょうか?
WHERE句の使い方WHERE句の使い方
例1では、特に条件を指定しなかったので、取得されたデータはすべての行でした。SQLによるデータの取得では、欲しい情報の条件を指定することが出来ます。次のSQL文を実行してみましょう。
【例3】
SELECT CustomerID, CompanyName, City FROM Customers WHERE City = 'London'
新たに、WHEREという部分が追加されました。ここで、欲しい情報の条件を指定します。この例では、「City = 'London'」として、City列が'London'の行のみを取得するように指定しています。WHEREとその条件文を、WHERE句、もしくはWHERE文節と呼びます。
WHERE句には、複数の条件を指定することも可能です。次のSQL文を実行してみましょう。
【例4】
SELECT * FROM Orders WHERE CustomerID = 'QUICK' AND OrderDate > '1998/1/1'
この例では、Ordersテーブルから、CustomerIDが'QUICK'で、かつ、OrderDateが1998年以降のものを取得しています。「かつ」ではなく、「または」で条件指定したい場合は、「OR」を使用します。
【例5】
SELECT * FROM Orders WHERE CustomerID = 'QUICK' OR OrderDate > '1998/1/1'
また、条件に合致しない行を指定したい場合は、条件をNOTで否定することが出来ます。
【例6】
SELECT * FROM Orders WHERE NOT CustomerID = 'QUICK'
条件の指定の仕方
例4では、「=」と「>」という記号で条件を指定しましたが、これ以外にも次のような条件を指定することが出来ます。
(1) 比較演算子
値の大小の比較をします
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
(2) BETWEEN条件
値が指定した2つの値の間にあるか否かを比較します。次の例では、Ordersテーブルから、OrderDateが1996/1/1から1997/12/31であるものを取得します。
【例7】
SELECT * FROM Orders WHERE CustomerID = 'QUICK' AND OrderDate BETWEEN '1996/1/1' AND '1997/12/31'
(3) IN条件
値が指定した値のリストの中にあるかを比較します。次の例では、OrdersテーブルからCustomerIDが'QUICK'か'VINET'であるものを取得します。
【例8】
SELECT * FROM Orders WHERE CustomerID IN ('QUICK', 'VINET')
(4) LIKE条件
文字の検索条件を指定します。ここで、%と_(アンダースコア)は特殊な意味が割り当てられており、%は「任意の文字数の任意の文字」、_は「1文字の任意の文字」を表します。例えば、CustomerID LIKE 'Q%'は、CustomerIDがQで始まる文字を指定し、CustomerID LIKE 'Q_'は、CustomerIDがQで始まる2文字の文字を指定します。%と_は組み合わせての使用が可能です。
【例9】
SELECT * FROM Orders WHERE CustomerID LIKE 'Q%'
今回のまとめ
今回はごく基本的な、「SELECT文」を紹介しました。次回は、並び替えの仕方(ORDER BY)、集計の仕方(GROUP BY)を予定しています。
- SQL Serverで「デッドロック」を回避する
- トランザクションの一貫性を保証するロック
- トランザクションを用いて注文登録をする
- トランザクションでデータの不整合を防ぐ
- テーブルで複数の処理を実行させるトリガー
- ユーザー定義関数を作成するストアドファンクション
- ストアドプロシージャによる繰り返し処理
- 条件分岐のあるストアドプロシージャ
- ストアドプロシージャの作成
- システム・ストアドプロシージャを用いたロールの詳細設定
- ロールを利用したグループ単位での権限設定
- SQL Serverのオブジェクトに権限を設定する
- Enterprise Managerによるビューの作成
- 作成したSELECT文をDBに登録する「ビュー」
- データの更新と主キーの重要性
- テーブル中のデータ識別に必要な主キーを定義する
- データの登録を行うINSERT文
- CREATE文をさらに使いこなそう
- CREATE文でテーブルを作成する
- SELECT文を統合する「UNION」
- サブクエリーの応用「相関サブクエリー」
- SELECT文の結果を抽出条件に使う
- テーブル結合のバリエーションを増やす
- テーブル結合の仕組みを理解する
- 異なるテーブル同士を結合する「JOIN」句
- 集計を行う「GROUP BY」句
- SELECT文で並べ替えを行うには?
- SQLの基礎 「SELECT」文を覚えよう
Copyright © ITmedia, Inc. All Rights Reserved.