SQL SELECT文のサンプル

SQLのSELECT文で行を抽出するサンプルです。

目次

サンプル コメントの書き方
全項目の全件を抽出(*)
列を指定して抽出(射影)
列を指定して抽出(選択)
文字列を結果として表示
  データの件数を取得(count)
  取得する列名に別名をつける(AS)
  列の結果を結合する(||) 連結演算子
nullを検索する (IS NULL)
nullではない値を検索する(IS NOT NULL)
重複行は表示しない(distinct)
比較演算子の否定(<>)
IN演算子 複数の条件をORで指定
IN演算子の否定 (not in)
LIKE演算子 部分一致検索
LIKE演算子の否定 (not like)
BETWEEN演算子 範囲検索
BETWEEN演算子の否定 (not between)
論理演算子 AND演算子 AかつB 論理積
  OR演算子 AまたはB 論理和
  NOT演算子 Aでない 否定
四則演算 列の値を計算する(四則演算)
集約関数 選択された行をまとめて列の値を算出する(集約関数)

コメントの書き方

select * from syain -- コメント 
where id = '1'
/*
 コメント
*/
select * from syain 
where id = '1'

--は1行のコメントを書けます。
/* ~ */は、複数行のコメントが可能です。

全項目の全件を抽出(*)

select * from syain

アスタリスク(*)は全項目を意味します。
whereの条件がない場合は、全件が対象になります。

列を指定して抽出(射影)

select id,name from syain

列(id,name)を指定して抽出することを射影といいます。

列を指定して抽出(選択)

select * from syain
where id = '1'

行(id = '1')を指定して抽出することを選択といいます。

select * from syain
where id != '1'

否定は!=とします。(Oracle)

文字列を結果として表示

select id, '12345' as 'テスト項目' from syain

検索結果に固定の文字列がある列を追加することも可能です。

データの件数を取得(count) 

select count(*) from syain

データの件数を取得する場合はcountを使用します。

取得する列名に別名をつける(AS)

select name as "名前" from syain
select name "名前" from syain

別名を付ける場合は「as 名称」または「名称」(※asはつけない)を指定します。

列の結果を結合する(||) 連結演算子

select id || name from syain
select 'データ ' || id || name from syain

列の結果を結合する場合はパイプ2つ(||)を付けます。文字列('データ')の結合もできます。

※MySQLの場合は、set sql_mode='PIPES_AS_CONCAT' ;の指定が必要。

列の値を計算する(四則演算)

select price + 10, price - 10, price * 10 , price / 10 from sales

四則演算(足し算、引き算、掛け算、割り算)ができます。
nullを足すと結果はnullになります。例:1 + null = null

nullを検索する (IS NULL)

select * from syain
where romaji IS NULL

nullが対象になります。空文字,空白は対象になりません。

nullではない値を検索する(IS NOT NULL)

select * from syain
where romaji IS NOT NULL

nullでない値が対象になります。

重複行は表示しない(distinct)

select distinct name from syain

重複行は表示しません。nullの場合は、nullとして表示されます。
複数のnullがあった場合はnullでまとめられます。

比較演算子の否定(<>)

select * from syain
where id <> '2'

<>は否定です。

IN演算子 複数の条件をORで指定

select * from syain
where romaji in ('suzuki','tanaka')

それぞれの条件を確認し、条件を満たした行が対象になります。OR演算子と同じ働きです。

IN演算子の否定 (not in)

select * from syain
where romaji not in ('suzuki','tanaka')

inの前にnotを指定します。

LIKE演算子 部分一致検索

select * from syain
where romaji like 'suzu%'

先頭がsuzuで始まる値を検索します。前方一致検索と呼ばれます。%は0文字以上の任意の文字列を表します。
like '%suzu%'とした場合、文字列にsuzuがあれば対象になります。あいまい検索または部分一致検索と呼ばれます。

LIKE演算子の否定 (not like)

select * from syain
where romaji not like 'suzu%'

likeの前にnotを指定します。

BETWEEN演算子 範囲検索

select * from syain
where id between 2 and 4;

idが2から4までを指定しています。IDの2,3,4を検索します。

BETWEEN演算子の否定 (not between)

select * from syain
where id not between 2 and 4;

betweenの前にnotを指定します。

AND演算子 AかつB 論理積

select * from syain
where name='田中' and romaji = 'tanaka'

両方とも条件を満たした行が対象になります。

OR演算子 AまたはB 論理和

select * from syain
where romaji = 'suzuki' or romaji = 'tanaka'

それぞれの条件を確認し、条件を満たした行が対象になります。

NOT演算子 Aでない 否定

select * from syain
where not romaji = 'suzuki'

条件を満たした行以外の行が対象になります。

選択された行をまとめて列の値を算出する(集約関数)

SELECT SUM(price),AVG(price),MAX(price),MIN(price) 
FROM syouhin;

SUM(合計を返す),AVG(平均を返す),MAX(最大値を返す),MIN(最小値を返す)

関連の記事

SQL in句 複数の値を条件にする
SQL like 前方一致、あいまい検索、エスケープ

△上に戻る