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 employee -- コメント 
where id = '1'
/*
 コメント
*/
select * from employee 
where id = '1'

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

 

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

select * from employee

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

 

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

select id,name from employee

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

 

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

select * from employee
where id = '1'

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

select * from employee
where id != '1'

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

 

文字列を結果として表示

select id, '12345' as "test-id" from employee

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

id test-id
1 12345
2 12345
3 12345

 

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

select count(*) from employee

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

 

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

select id,name as "test-name" from employee
select id,name "test-name" from employee

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

id test-name
1 suzuki
2 tanaka
3 sato

 

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

select id || name as test1 from employee
select 'test' || id || name as test2 from employee

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

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

test1
1suzuki
2tanaka
3sato
test2
test1suzuki
test2tanaka
test3sato

 

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

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

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

 

nullを検索する (IS NULL)

select * from employee
where romaji IS NULL

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

 

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

select * from employee
where romaji IS NOT NULL

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

 

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

select distinct name from employee

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

 

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

select * from employee
where id <> '2'

<>は否定です。

 

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

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

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

 

IN演算子の否定 (not in)

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

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

 

LIKE演算子 部分一致検索

select * from employee
where romaji like 'suzu%'

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

 

LIKE演算子の否定 (not like)

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

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

 

BETWEEN演算子 範囲検索

select * from employee
where id between 2 and 4;

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

 

BETWEEN演算子の否定 (not between)

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

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

 

AND演算子 AかつB 論理積

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

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

 

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

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

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

 

NOT演算子 Aでない 否定

select * from employee
where not romaji = 'suzuki'

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

 

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

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

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

関連の記事

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

△上に戻る