logo
     

メニュー
↓ SQL ↓
データ取得の基本(SELECT)

⇒取得条件の指定(WHERE)

計算式を利用する

取得データの並べ替え
      (ORDER BY)


別名を付ける

データを集計(グループ化)する

テーブルの結合
      (INNER JOIN)


テーブルの結合
      (OUTER JOIN)


テーブルの結合
      (CROSS JOIN)


重複行の排除(DISTINCT)

副問い合わせ(サブクエリ)

相関副問い合わせ
      (相関サブクエリ)


クエリの結合

文字列値を連結する

文字列の一部を取り出す

文字列を置換する

NULLを置き換える

条件によって置き換える

↓SQL Server 2012 Express↓
SQL Server 2012 Express
      インストール


SQL Server 2012 Express
      ネットワークの構成


SQL Server 2012 Express
      ログインユーザの作成


SQL Server 2012 Express
      データベースの作成


SQL Server 2012 Express
      テーブルの作成


SQL Server 2012 Express
      SQLの実行


復旧モデルとバックアップ

↓ 番外編 ↓
Windows Server 2012 評価版
      インストール


Windows Server 2012
      スタートメニュー利用方法


Windows Server 2012
      シャットダウン・再起動方法


Windows Server 2012
      サーバーマネージャ自動起動無効


Windows Server 2012
      コンピュータ名・ドメイン変更


取得条件の指定(WHERE)



SELECT文でデータを取得する際に、
条件に一致したデータのみ取得したい場合はWHERE句を利用します。

文法:WHERE <列名1> <比較演算子> <値など> [<AND | OR> <列名2> <比較演算子> <値など>…]

複数の条件を利用する場合は、各条件を“AND”もしくは“OR”で繋ぎます。
ANDは“且つ”の意味を持ち、ORは“又は”の意味を持ちます。
また、“AND”と“OR”には優先順位があり、単純に並べると“AND”が優先されます。
数式で“1 + 2 * 3”は“2 * 3”を優先するのと同様です。
先に“1 + 2”を計算する場合に括弧を付けるのと同様に、WHERE句においても優先したいものがあれば、括弧を利用します。
また、列と値を比較する場合、列の型が文字型(charやvarchar)の場合は、値を’(シングルクォート)で囲みます。

よく利用される比較演算子
意味
列名1 = 256 列名1の値が256
列名1 = '東京都' 列名1の値が東京都
列名1 > 256 列名1の値が256より大きい
列名1 >= 256 列名1の値が256以上
列名1 < 256 列名1の値が256より小さい
列名1 <= 256 列名1の値が256以下
列名1 <> 256 列名1の値が256でない
列名1 BETWEEN 10 AND 20 列名1の値が10〜20 の範囲内(10,20も含む)
列名1 NOT BETWEEN 10 AND 20 列名1の値が10〜20 の範囲外(10,20 は含まない)
列名1 IN (1, 3, 5) 列名1の値が 1, 3, 5 のいずれか
列名1 NO IN (1, 3, 5) 列名1の値が 1, 3, 5 のいずれにも一致しない
列名1 LIKE '東京%' 列名1の値が東京から始まる任意の文字列
列名1 LIKE '%東京' 列名1の値が東京で終わる任意の文字列
列名1 NOT LIKE '東京%' 列名1の値が東京から始まる任意の文字列でない
列名1 IS NULL 列名1がNULL値
列名1 IS NOT NULL 列名1がNULL値でない

***例***
[社員マスタ]
所属コード 社員コード 氏名
01 001 テスト一郎
01 002 テスト二郎
02 001 テスト三郎
03 001 テスト四郎


[実行SQL]
SELECT
  *
FROM
  社員マスタ
WHERE
  (所属コード = '01' OR 所属コード = '03') AND
  社員コード = '001'

*上記は比較演算子INを利用すると以下のように書くこともできます

SELECT
  *
FROM
  社員マスタ
WHERE
  所属コード IN ('01', '03') AND
  社員コード = '001'


[結果]
所属コード 社員コード 氏名
01 001 テスト一郎
03 001 テスト四郎

***例2(IN句に複数列を指定した例)***
※※SQLServerでは文法エラーになるっぽい

[社員マスタ]
所属コード 社員コード 氏名
01 001 テスト一郎
01 002 テスト二郎
02 001 テスト三郎
03 001 テスト四郎


[実行SQL]
SELECT
  *
FROM
  社員マスタ
WHERE
  (所属コード, 社員コード) IN (('01', '001'), ('03', '001'))
※INの中は SELECT 列1, 列2 FROM 表1 のようなSELECT句でもいけます

[結果]
所属コード 社員コード 氏名
01 001 テスト一郎
03 001 テスト四郎
<<PR>> ネットワークセキュリティを見直しませんか
価格:300円
現役SEが語るSEの仕事あれこれ-これから就職を希望する人へ-
価格:300円